Я работаю над программой здесь, и я обращаюсь к входному файлу и прохожу через массив значений в файле. Однако это не правильно вычисляет максимальное значение. Любая помощь?C - Найти максимальное значение в массиве
#include <stdio.h>
int main() {
int header, i, j, cur_val, auction[50], sum = 0;
int max = 0;
FILE * ifp;
ifp = fopen("input.txt", "r");
fscanf(ifp, "%d", &header);
for (i = 0; i < header; i++) {
fscanf(ifp, "%d", &cur_val);
printf("%d\n", cur_val);
for (j = 0; j < cur_val; j++) {
fscanf(ifp, "%d", &auction[j]);
printf("%d\n", auction[j]);
max = auction[0];
if (auction[j] > max) {
max = auction[j];
}
}//end j loop
printf("Max: %d\n", max);
printf("\n");
//printf("Auction %d was sold for $%.2f!\n", i+1,);
//sum+=max;
}//end i loop
fclose(ifp);
return 0;
}
Вот входной файл:
5
4
100 500 250 300
1
700
3
300 150 175
2
920 680
8
20 10 15 25 50 30 19 23
В максимальные значения, напечатанные на консоли следующим образом:
300 700 300 920 23
Середина 3 работа, но не первый и последний. Любая идея почему?
Переместить 'max = auction [0];' out of the loop. –
Вы не можете переместить его за пределы цикла. Неизвестное значение аукциона [0] вне цикла. – nicomp
Вы должны проверить *** каждый *** вызов 'fscanf', чтобы гарантировать, что вы обрабатываете фактическое значение, а не только мусор (например,' if (fscanf (ifp, "% d", & header)! = 1) {/* ошибка дескриптора * /} ') Если у вас есть * совпадение с ошибкой * или * сбой преобразования * и вы не справитесь с этой ошибкой, вы будете в неизведанной воде с этого момента. –