Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Czytanie z pliku.

Ostatnio zmodyfikowano 2016-04-12 23:14
Autor Wiadomość
arek199602
Temat założony przez niniejszego użytkownika
Czytanie z pliku.
» 2016-04-12 23:14:42
W kolejnych wierszach pliku dane.txt znajdują się liczby całkowite. Napisz program, który:
•oblicza liczbę wierszy pliku (n),
•alokuje tablicę liczb całkowitych wielkości n,
•wczytuje dane z pliku do tablicy,
•oblicza średnią arytmetyczną  oraz najmniejszą i największą wartość elementów tablicy,
•wyświetla na ekranie elementy tablicy w kolejności od ostatniego do pierwszego

C/C++
#include <stdio.h>
#include <stdlib.h>

int main()
{
    FILE * plik;
    char ch[ 100 ];
    int n = 0, liczba, index = 0, suma = 0, min, max;
    int * ps;
    plik = fopen( "dane.txt", "r" );
    if( plik == NULL )
    {
        printf( "Nie udalo sie otworzyc pliku.\n" );
        exit( 1 );
    }
    else
    {
        printf( "Udalo sie otworzyc plik.\n" );
    }
    while( fgets( ch, 100, plik ) != NULL ) //sprawdza liczbe wierszy
    {
        n++;
    }
    ps = malloc( n * sizeof( * ps ) );
    while( fscanf( plik, "%d", & liczba ) != EOF )
    {
        ps[ index ] = liczba;
        index++;
        suma += liczba;
    }
    printf( "Srednia liczb = %.2f\n",( float ) suma /( float ) n );
    index = 1;
    min = ps[ 0 ];
    for(; index < n; index++ )
    {
        if( min > ps[ index ] )
        {
            min = ps[ index ];
        }
    }
    index = 1;
    max = ps[ 0 ];
    for(; index < n; index++ )
    {
        if( max < ps[ index ] )
        {
            max = ps[ index ];
        }
    }
    printf( "Max wczytana liczba = %d\n", max );
    printf( "Min wczytana liczba = %d\n", min );
   
    free( ps );
    fclose( plik );
    return 0;
}

Nie wiem dlaczego program nie chce wejść do drugiej pętli. Proszę o pomoc.
Edit:Problem rozwiązany.


P-147222
« 1 »
  Strona 1 z 1