У меня есть цикл while, который позволяет пользователю вводить любое количество чисел, разделенных пробелом, и программа должна заканчиваться, показывая наивысшее число пользователю, когда пользователь вводит 0
.Хотя цикл не останавливается при выполнении условия
#include <stdio.h>
int main(){
float fResult[100], fMax;
int c = 1;
while (fResult[c] != 0){
scanf(" %f ", &fResult[c]);
if (fResult[c] > fMax){
fMax = fResult[c];
}
c = c + 1;
}
if (fResult[1]==0){
printf("empty sequence");
} else {
printf("%.3f ", fMax);
}
}
Он отлично работает, пока пользователь не вводит последовательность ничего, кроме отрицательных чисел. Затем результат отображается как 0
.
Например, когда пользователь вводит -3 -4 -100 -5 0
, результат должен быть -3
, но вместо этого я получаю 0
, что технически максимальное число. Но разве цикл while не должен игнорироваться, если пользователь вводит 0
?
Вы никогда не проверяете, действительно ли «scanf» успешно завершается. –
'while (fResult [c]! = 0)' вы не вводили никаких данных в 'fResult' –
Вы не инициализировали fMax – SMA