Szukanie maksimum w zbiorze liczb - dlaczego nie działa

0

Zad1.Program który wypisze informacje ile razy w pliku o nazwie DANE.TXT wystąpiła wartość maksymalna:

int main()
{
    int liczba, maksimum, ile;
    ile = 0;
    maksimum = 7;
    FILE* f = fopen("DANE.TXT", "r");
    while (fscanf(f, "%d", &liczba) != EOF)
        if (liczba > maksimum)
        {
            maksimum = liczba;
            ile = 1;
        }
        else if (liczba == maksimum)
        {
            ile++;
        }
    printf("%d", ile);
    fclose(f);
    return 0;
}

Liczby w pliku to: 1 2 7 3 4 5 7 , powinno wypisać 2 a wypisuje 0 ,gdzie jest błąd ?

0

Coś w tym stylu choć nie jestem pewien czy zrozumiałem pytanie.

#include <stdio.h>

int main(void) {
	
	int max = 0, temp = 0, int count = 0;
	FILE *f=fopen("DANE.TXT","r");
	
	while ( fscanf(f,"%i", &temp) != EOF)  {
		
		if ( max < temp)  {
			
            max = temp;
            count = 1;
			continue;
            
        }
        if( max == temp ) count++;
	}
	
	printf("%d", max);
	fclose(f);
	return 0;

}
0

Za drugim razem było lepiej, tzreba tylko na początek przypisać maksimum do pierwszej liczby.

 int main()
{
    int liczba, maksimum, ile;
    ile = 0;
    FILE* f = fopen("dane.txt", "r");
    if (fscanf(f, "%d", &liczba) != EOF)
		{maksimum = liczba;
		ile = 1;
		}
    while (fscanf(f, "%d", &liczba) != EOF)
        if (liczba > maksimum)
        {
            maksimum = liczba;
            ile = 1;
        }
        else if (liczba == maksimum)
        {
            ile++;
        }
    printf("%d", ile);
    fclose(f);
    return 0;
} 

1 użytkowników online, w tym zalogowanych: 0, gości: 1