Не корректно ищет максимальный и минимальный элемент массива

Вводится последовательность произвольных чисел, 0 — конец последовательности. Определить отношение минимального и максимального элементов друг к другу.

Ввожу несколько чисел, например - 2, 4, 6, 1, хочу закончить последовательность нулем, последовательность заканчивается, и мне выводит минимальный - 0, и максимальный - 6, вроде бы все правильно, но, минимальный должен быть 1, а не нулем, почему так?

#include <stdio.h>
#include <locale.h>
#include <math.h>

int main(){
    int i, max, min, mas[255];
    float z;
    max = 0;
    min = 0;
    float q = 0;
    while(mas[i++] != 0){
        printf("element mas[%d] = ",i);
        scanf("%d", &mas[i]);
        if(mas[i] > max){
            max=mas[i];
        }
        else if(mas[i] < min){
            min=mas[i];
        }
    }
    printf("%d", min);
    printf("\n");
    printf("%d", max);
    return 0;
}

Ответы (1 шт):

Автор решения: Mikhailo

Замените

while(mas[i++] != 0){

на

for(i = 0; scanf("%d",&mas[i]) && mas[i] != 0; i++){

Так вы и i инициализируете, и с правильным элементом работать будете.

→ Ссылка