[C++] Rozdział 34 - Zadanie Domowe - błędne działanie programu.
Ostatnio zmodyfikowano 2016-07-15 17:49
kubaki18 Temat założony przez niniejszego użytkownika |
[C++] Rozdział 34 - Zadanie Domowe - błędne działanie programu. » 2016-07-14 19:14:35 [REUPLOAD] Witam. Napisałem program do zadania domowego, który miał wypisać z pliku wszystkie liczby, po czym wypisać na ekran ich sumę. Mój kod: #include <iostream> #include <fstream> #include <string>
using namespace std;
void GetNR( ifstream & plik, int & Suma ) { int Liczba; while( !plik.eof() ) { plik.clear(); plik >> Liczba; if( plik.good() ) { cout << Liczba << ", "; Suma += Liczba; } } }
bool CzytajPlik( string Name ) { ifstream plik; plik.open( Name.c_str() ); if( plik.bad() ) { plik.close(); return false; } int Suma = 0; GetNR( plik, Suma ); cout << "Suma liczb wynosi " << Suma; plik.close(); return true; }
int main() { if( CzytajPlik( "TekstLiczby.txt" ) ) cout << endl << "Udalo sie wczytac plik!"; else cout << endl << "Nie udalo sie wczytac pliku!"; return 0; }
Program kompiluje się, ale nieskończenie powtarza się w momencie gdy napotka jakiś znak nie będący spacją lub liczbą. Nie mam pojęcia dlaczego tak się dzieje. Proszę o pomoc :) |
|
carlosmay |
» 2016-07-14 19:23:45 nieskończenie powtarza się w momencie gdy napotka jakiś znak nie będący spacją lub liczbą. |
Strumień plikowy działa podobnie do strumienia std::cin. Nieudany wczytywanie powoduje zablokowanie strumienia. Wyzeruj flagi i pozbądź się błędnych danych. |
|
kubaki18 Temat założony przez niniejszego użytkownika |
» 2016-07-14 19:28:38 Jest przecież plik.clear(); |
|
marcolo2307 |
» 2016-07-14 20:51:01 |
|
kubaki18 Temat założony przez niniejszego użytkownika |
» 2016-07-14 21:25:16 Błędną odpowiedź... |
|
marcolo2307 |
» 2016-07-14 22:29:03 Poprawną. A jeśli jej nie rozumiałeś, to czemu nie odpisałeś w tamtym temacie? |
|
kubaki18 Temat założony przez niniejszego użytkownika |
» 2016-07-15 01:25:48 Gdyby była poprawna, to program działałby dobrze, a tak nie jest -,- |
|
Gibas11 |
» 2016-07-15 03:02:43 Ciekawostka roku – jeśli wrzucisz kawałek kodu w złe miejsce bo go nie rozumiesz to nie znaczy że odpowiedź sama w sobie jest błędna. Więc zapytam jak przedmówca, dlaczego nie zapytałeś w tamtym temacie, tylko tworzysz nowy? |
|
« 1 » 2 3 |