Wczytywanie z pliku
Ostatnio zmodyfikowano 2014-06-16 21:04
fogielek1234 Temat założony przez niniejszego użytkownika |
Wczytywanie z pliku » 2014-06-16 18:52:25 Witam. Mam dziwny i niezrozumiały dla mnie problem. Mam do wykonania dwie proste funkcje. Pierwsza ma wczytywać z pliku liczby i podawać ich średnią. Druga ma przepisać z jednego pliku do drugiego wartości nieujemne. Cały algorytm prosty i zrobiony. Rzecz w tym , że program nadpisuje mi do plików jakieś dziwne wartości. Tak jakby jedną wartość wpisywał losowo. Siedzę nad tym już długo i nie wiem co jest z tym nie tak. Proszę o pomoc. funkcja średnia void srednia( char nazwa_pliku[] ) { int i = 0; double tab[ 1000 ], suma = 0; fstream plik; plik.open( nazwa_pliku, ios::in ); if( !plik.good() ) { cout << "Blad odczytu" << endl; exit( 0 ); } while( !plik.eof() ) { plik >> tab[ i ]; suma += tab[ i ]; i++; } cout << "Srednia z liczby w pliku " << nazwa_pliku << " wynosi: " << suma / i << endl; plik.close(); }
ta funkcja dla takich danych -10 -9 8 7 6 5 4 3 2 1 wyświetla -8.41451e+060 sprawdziłem jakie wartości są w tablicy i na końcu jest dopisana wartość -9.25596e+061 Dlatego taka dziwna średnia wychodzi. Przypuszczam , że gdzieś przy indeksowaniu tablicy popełniam błąd i w pętli wpisuje mi wartość dla jednego indeksu za dużo. W drugiej funkcji robi to samo dlatego wychodzą głupoty. Oświeci mnie ktoś dlaczego tak się dzieje? Pozdrawiam i z góry dziękuje. [/i] |
|
Jacob99 |
» 2014-06-16 19:06:55 Jak już chyba z tysiąc razy było na tym forum mówione ten zapis: while( !plik.eof() ) to zło :). Zamiast tego zastosuj taki zapis while( plik >> tab ) { suma += tab; i++; } Zamiast przekazywać tablicę znaków użyj lepiej stringa lub chociaż wskaźnika na literał Ponadto nigdzie nie inicjalizujesz tablicy tab, co oznacza, że na elementy, których nie zainicjowałeś też wchodzą do obliczeń. P.S. Ujmuj zawsze kod w znaczniki [cpp] [/cpp]. |
|
michal11 |
» 2014-06-16 21:04:49 To nie jest zło tylko trzeba umieć z tego korzystać. Zresztą w swoim kodzie zapomniałeś o indeksie w tablicy. |
|
« 1 » |