Dziwne wyniki

0

Hej. Mam do napisania program, który pobiera max 1000 liczb, podanie 0 kończy pobieranie, po skończeniu pobierania ma wyliczyć średnia.
Póki co mam coś takiego:

#include <stdio.h>
#define N 1000

int main()
{
	int tab[N];
	int i, ile;
	int suma=0;
	float sr;
	puts("Podaj liczby: ");
	for(i=0; i<=N; i++)
	{
		scanf("%d", &tab[i]);
		if(tab[i]==0)
			break;
	}
	for(i=0; tab[i]>0; i++)
		suma+=tab[i];
	printf("%d", suma);
	return 0;
}

Nie rozumiem czemu jeżeli po wyświetleniu sumy napiszę printf("%f", sr); to wyświetlanie sumy zmienia się na zmiennoprzecinkowe i wynik jest nieprawidłowy. Bez tego jest ok.
Poza tym nie wiem jak napisać warunek do liczenia średniej. Wiem, że jest to suma / ilość liczb, tylko jak zapisać tą ilość liczb skoro nie jest to stała liczba tylko zmienia się zależnie od ilości podanych liczb?
Z góry dzięki za pomoc :)

0

Co do pierwszego to nie powinno nic zmodyfikować. Myślę, że problem leży w tym, że sr jest nie wyzerowane a zakladajac ze SR ma jakas z d**y wartosc XXXXXXX.YYYYYYYY a suma ma wartosc AAAAA
to wyswietla ci sie cos takiego AAAAAAXXXXXXX.YYYYYYYY,

przesun sr do nowej lini.

0

Tak:

sr = suma / (float)i;
printf("%.3f", sr);

Pod zmienną i masz ilość wczytanych liczb.

1

Nie rozumiem czemu jeżeli po wyświetleniu sumy napiszę printf("%f", sr); to wyświetlanie sumy zmienia się na zmiennoprzecinkowe i wynik jest nieprawidłowy. Bez tego jest ok.

Bo liczby zmiennoprzecinkowe mają inną reprezentację, więc próba wyświetlenia całkowitej jako zmiennoprzecinkowej jest bez sensu. To tak jakbyś zmienił czcionkę na webdings i dziwił się, że nie możesz przeczytać tekstu.

0

Dobra już czaję. Dzięki za pomoc!

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