Rozdział 34 - problem z pierwszym zadaniem domowym
Ostatnio zmodyfikowano 2017-05-08 15:42
Pralkarz Temat założony przez niniejszego użytkownika |
Rozdział 34 - problem z pierwszym zadaniem domowym » 2017-05-08 15:42:51 Z niewiadomych przyczyn program nie wczytuje mi cyfry "2". Oto kod: #include <iostream> #include <fstream> #include <string>
bool wczytajLiczbe( std::ifstream & plik, int & iLiczba, int & suma ) { plik.clear(); plik >> iLiczba; if( plik.bad() ) { plik.close(); return false; } else if( plik.fail() ) return false; else { std::cout << iLiczba << " "; suma += iLiczba; } return true; }
bool wczytajZnak( std::ifstream & plik, char & cZnak ) { plik.clear(); plik >> cZnak; if( plik.bad() ) { plik.close(); return false; } else if( plik.fail() ) return false; return true; }
bool odczytajPlik( std::string sNazwaPliku ) { std::ifstream plik; plik.open( sNazwaPliku.c_str() ); if( !plik.good() ) return false; int suma = 0; while( !plik.eof() ) { int iLiczba; char cZnak; if( !wczytajLiczbe( plik, iLiczba, suma ) && plik.bad() ) return false; else if( !wczytajZnak( plik, cZnak ) ) { if( plik.bad() ) return false; else break; } } std::cout << std::endl << "Suma: " << suma; plik.close(); return true; }
int main() { if( !odczytajPlik( "plik.txt" ) ) std::cout << "Wystapil jakis blad." << std::endl; } A oto co dostaję w konsoli: 1 321 9 5 3 Suma: 339 EDIT: Udało mi się naprawić. Dałem fragment funkcji wczytajLiczbe w nieskończoną pętlę i wszystko działa jak należy. Wcześniej, gdy dwie liczby były "obok siebie" druga z nich była traktowana jako char i przez to niewypisywana na ekran. |
|
« 1 » |