Program liczący sume liczb - NIE DZIAŁA!

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

adamos100
Użytkownik
Posty: 1
Rejestracja: 2008-01-05, 19:29

Program liczący sume liczb - NIE DZIAŁA!

Post autor: adamos100 »

Proszę o pomoc w sprawie programu, który ma liczyć sume liczb (poniżej) sumuje on tylko ostatnia liczbe i jakieś zera.
Przez to że nie może on zliczyć sumy liczb to nie wychodzi średnia arytmetyczna itd.
Proszę o pomoc!

Kod: Zaznacz cały

#include <stdio.h>
#include <math.h>
int main()
{
int i,j,k,s[100];
i=0;
FILE *plik;
plik=fopen ("tabela6.txt","r");
k=1;
while (k>0)
{
k++;
fscanf (plik, "%d", &j);
s[i]=j;
i++;
i=feof(plik);
if (i!=0) break;
}
printf ("ilosc_liczb %d\n", k-1);
j=0;
for (i=0; i<=7; i++)
{
printf ("dodawane liczby %d\n", s[i]);
j=j+s[i];
}
printf ("suma: %d\n", j);
printf ("dzielnik: %d\n", k-1);
printf ("srednia arytmetyczna: %f\n", (j/(k-1)));
float l;
l=0;
for (i=0; i<=7; i++);
{
l=l+s[i];
}
printf ("odchylenie standardowe: %f\n", (((l-(j/(k-1)))*(l-(j/(k-1))))/(k-1)));
printf ("wariancja: %f\n", sqrt(((l-(j/(k-1)))*(l-(j/(k-1))))/(k-1)));
{
return l;
}
}
[ Komentarz dodany przez: Lizard: 2008-01-05, 20:40 ]
1. Umieść kod programu w znaczniku

Kod: Zaznacz cały

[/b], aby był bardziej czytelny.
2. Porób wcięcia dla lepszej czytelności.
Ostatnio zmieniony 2008-01-10, 20:32 przez adamos100, łącznie zmieniany 1 raz.
Awatar użytkownika
dienet
Moderator
Posty: 2105
Rejestracja: 2007-07-24, 18:58
Lokalizacja: Racibórz/Rybnik

Re: Program liczący sume liczb - NIE DZIAŁA!

Post autor: dienet »

To sa linie gdzie mozliwe ze jest blad:

Kod: Zaznacz cały

k=1; // wee.... lepiej daj 0
i=feof(plik); // przeciez i indeksujesz !!!
for (i=0; i<=7; i++) // czemu <=7? Daj tu prawdziwa liczbe np. k
printf ("srednia arytmetyczna: %f\n", (j/(k-1))); // dzielenie dwoch intow zawsze da int wiec czemu %f?
Pozdr0
dienet
[img]http://i164.photobucket.com/albums/u19/slawek15/kotekeo0lq3.jpg[/img]
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Program liczący sume liczb - NIE DZIAŁA!

Post autor: mina86 »

adamos100, użyj [code] i ładnie sformatuj kod funkcji to coś się poszuka.
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
acek
Użytkownik
Posty: 47
Rejestracja: 2006-09-26, 21:27
Kontakt:

Re: Program liczący sume liczb - NIE DZIAŁA!

Post autor: acek »

adamos100 pisze:

Kod: Zaznacz cały

for (i=0; i<=7; i++);
Niepożądany średnik.
Awatar użytkownika
Kalavan
Użytkownik
Posty: 186
Rejestracja: 2007-01-08, 22:09

Re: Program liczący sume liczb - NIE DZIAŁA!

Post autor: Kalavan »

Kod: Zaznacz cały

while (k > 0)
  {
    k++;
    fscanf (plik, "%d", &j);
    s[i] = j;
    i++;
    i = feof (plik);
    if (i != 0)
      break;
  }
Ja mam następujące uwagi:
1. Nie wiem dlaczego od zmiennej 'k' uzależniasz ukończenie czytania pliku. Nie lepiej własnie w warunek while'a wpisać !feof(plik)?
2. Możesz pominąć wczytywanie wartości z pliku poprzez dodatkową zmienną. Przypisuj od razu do tablicy (szczegół).
3. Widzę, że chcesz wpisywać liczby do tablicy po kolei, zaczynając od komórki zerowej. W tym celu ustawiasz i=0. W pierwszej iteracji liczba z pliku trafia do zerowej komórki tablicy. Potem niestety robisz przypisanie i = feof (plik);. "Bug" raczy wiedzieć gdzie trafi następna...
ODPOWIEDZ