Lekcja 34. zadanie 1
Ostatnio zmodyfikowano 2015-02-11 22:23
MarcinEU Temat założony przez niniejszego użytkownika |
Lekcja 34. zadanie 1 » 2015-02-11 14:45:26 Witam! Mam mały problem z zadaniem z kursu: Napisz program, który wczyta z pliku liczby całkowite i wypisze je na ekranie. Wszelkie nieprawidłowe znaki mają zostać pominięte. Program ma wypisać również sumę wszystkich wczytanych liczb. Przykładowa zawartość pliku z danymi: a 1 2 321b9 ac.de ef#@g 5 #3 Oczekiwane standardowe wyjście programu dla przykładowego zestawu danych: 1 2 321 9 5 3 Suma liczb wynosi: 341 Program wypisuje liczby i je sumuje, ale pomija jedną z nich (2). Nie mam pojęcia dlaczego. Mógłby mi ktoś z tym pomóc? Oto kod: #include <iostream> #include <fstream>
using namespace std;
bool wczytajLiczbe( ifstream & plik, int & iLiczba ) { plik.clear(); plik >> iLiczba; if( plik.bad() ) { plik.close(); return false; } else if( plik.fail() ) { return false; } else cout << iLiczba << " "; return true; }
bool wczytajZnak( 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( string sNazwa ) { ifstream plik; plik.open( sNazwa.c_str() ); if( !plik.good() ) { cout << "Nie udalo sie wczytac pliku" << endl; plik.close(); return false; } int iSuma = 0; while( !plik.eof() ) { int iLiczba; char cZnak; if( !wczytajLiczbe( plik, iLiczba ) && plik.bad() ) return false; else iSuma += iLiczba; if( wczytajZnak( plik, cZnak ) == false ) { if( plik.bad() ) return false; else break; } } cout << endl << "Suma liczb wynosi: " << iSuma << endl; plik.close(); return true; }
int main() { if( odczytajPlik( "cpp0x.txt" ) == true ) cout << "Plik zostal pomyslnie wczytany" << endl; return 0; } |
|
Winner_Of_Death |
» 2015-02-11 15:17:02 |
|
MarcinEU Temat założony przez niniejszego użytkownika |
» 2015-02-11 15:33:57 No dobra, ale nie za bardzo nadal wiem, jak by to przerobić :/ Mógłby mnie ktoś naprowadzić? Bo nie wiem jak by to za bardzo można było ruszyć ;/ if( !wczytajLiczbe( plik, iLiczba ) && plik.bad() ) return false; else iSuma += iLiczba;
if( wczytajZnak( plik, cZnak ) == false ) { if( plik.bad() ) return false; else break; } |
|
MarcinEU Temat założony przez niniejszego użytkownika |
» 2015-02-11 22:23:22 Dobra, już sobie z tym poradziłem za pomocą .get() chociaż nie za bardzo wiem jak to do końca działa :/ Dzięki za pomoc :) |
|
« 1 » |