[Lekcja 33] Suma liczb = 0 .
Ostatnio zmodyfikowano 2014-10-28 21:36
Mixon Temat założony przez niniejszego użytkownika |
[Lekcja 33] Suma liczb = 0 . » 2014-10-28 18:57:46 Cześć. Napisałem program, w którym cały czas suma liczb (pobranych z pliku tekstowego) jest równa 0. Zadanie: Otwórz plik tekstowy, w którym będą znajdowały się tylko liczby całkowite, oddzielone od siebie spacjami. Następnie napisz PROGRAM, który wczyta wszystkie liczby z pliku i wypisze sumę wszystkich liczb na standardowym wyjściu. #include <iostream> #include <fstream> #include <string> using namespace std;
bool suma( string lokalizacja ) { ifstream plik; plik.open( lokalizacja.c_str() ); if( !plik.good() ) return false; int n = 0, a; while( true ) { plik >> a; if( plik.good() ) n += a; else break; } cout << "Suma jest rowna: " << n << endl; return true; }
int main() { if( suma( "liczby.txt" ) == false ) cout << "Nie znaleziono pliku" << endl; return 0; }
|
|
pekfos |
» 2014-10-28 19:21:04 Masz tam więcej niż jedną liczbę? Kodowanie pliku zawiera BOM, lub coś podobnego? |
|
Mixon Temat założony przez niniejszego użytkownika |
» 2014-10-28 19:56:23 Racja. Miałem tylko jedna liczbę. Dzięki ;) Dodałem ich kilka do pliku tekstowego i zauważyłem, że nie sumuje ostatniej liczby. Czym to jest spowodowane i jak mógłbym zmodyfikować kod by program czytał wszystkie liczby? |
|
Monika90 |
» 2014-10-28 20:35:47 int a = 0; int n = 0; while( plik >> a ) n += a;
i to wszystko |
|
Mixon Temat założony przez niniejszego użytkownika |
» 2014-10-28 21:25:27 Ok. Poprawiony kod działa poprawnie. Lecz cały czas męczy mnie fakt dla czego mój pierwotny kod źle działa. Zauważyłem, że jeśli w pliku tekstowym po ostatniej liczbie wpiszemy spacje, to poprawnie ja wczytuje, jeśli spacji nie będzie po liczbie to niepoprawnie (mówię o sytuacji przy moim pierwotnym programie). Wiecie może dla czego tak się dzieje? |
|
pekfos |
» 2014-10-28 21:30:13 Bo good() nie jest równoznaczne z !fail(). Różni się to jednym, tego typu przypadkiem. |
|
Mixon Temat założony przez niniejszego użytkownika |
» 2014-10-28 21:36:32 Ok. Warto to zapamiętać. Dzięki wielkie! ;) |
|
« 1 » |