Witam,
Mam do napisania program, który wczytuje liczby do dynamicznej tablicy a potem przeszukuje je w celu znalezienia odpowiednich elementów. Program się kompiluje i zwraca prawidłowe dane, ale w końcowej jego fazie najzwyczajniej w świecie się wiesza. Błąd typu "program przestał działać".
Zamieszczam kod i proszę o pomoc.
int main()
{
int ile; //zmienna przechowująca liczbe liczb do wczytania
int* tab; //
int i = 0;
int min; //zmienna przechowująca najmniejszą wczytaną liczbę
int nrMin = 0; //zmienna przechowująca "indeks" najmniejszej liczby
int max; //zmienna przechowująca największą wczytaną liczbę
int nrMax = 0; //zmienna przechowująca "indeks" największej liczby
int suma = 0; //zmienna przechowująca sumę wczytanych liczb
float srednia = 0; //zmienna przechowujaca srednia arytmetyczna wczytanych liczb
scanf( "%d", &ile );
tab = (int *) calloc ( ile, sizeof ( int ) );
//printf ( "adres tab: %d\n", tab );
//printf ( "sizeof ( int ) = %d", sizeof ( int ) );
while ( i < ile )
{
scanf ( "%d", ( tab + sizeof ( int ) * i ) );
i++;
}
min = *tab;
max = *tab;
i = 0;
while ( i < ile )
{
//printf ( "sprawdzanie miejsce w pamieci: %d, wartosc: %d\n", ( tab + sizeof ( int ) * i ), *( tab + sizeof ( int ) * i ) );
suma = suma + *( tab + sizeof ( int ) * i );
if ( *( tab + sizeof ( int ) * i ) > max )
{
max = *( tab + sizeof ( int ) * i );
nrMax = i;
}
else
if ( *( tab + sizeof ( int ) * i ) < min )
{
min = *( tab + sizeof ( int ) * i );
nrMin = i;
}
i++;
}
srednia = suma * 1.0 / ( i - 1 );
printf ( "min: tab [ %d ] = %d\n", nrMin, min );
printf ( "max: tab [ %d ] = %d\n", nrMax, max );
printf ( "suma = %d, srednia = %f\n", suma, srednia );
free ( tab );
tab = NULL;
system ( "pause" );
}
Z góry dzięki za każdą pomoc!