[C++] Kontrola błędów
Ostatnio zmodyfikowano 2017-04-30 15:19
kombatdavid123 Temat założony przez niniejszego użytkownika |
[C++] Kontrola błędów » 2017-04-30 09:01:00 Witam, potrzebuje jakiejś wskazówki gdyż męcze się z następującym zadaniem : Napisz program, który dla każdego wiersza w pliku: wczyta liczby i wypisze ich sumę w przypadku, gdy wszystkie liczby uda się wczytać; wypisze komunikat o błędnych danych, jeżeli wystąpi błąd podczas wczytywania liczb (komunikat ma wyświetlać numer wiersza, w którym wystąpił błąd). Problem mam taki ,że po odpaleniu programu nieskończenie wiele razy wypisuje mi "Blad w wierszu 1!"... Zawartosc pliku "dane2.txt" : 1 2 3 4 5 1a 2b 3c 4d 13 45 64 21 a1 34 11 01 #include <iostream> #include <fstream> #include <string> #include <windows.h>
using namespace std;
bool WCZYTAJ_LICZBE( ifstream & PLIK, int LICZBA );
bool czyNapotkanoZnakNowegoWiersza( ifstream & plik );
bool WCZYTAJ_PLIK( string NAZWA_PLIKU );
int main() { if( WCZYTAJ_PLIK( "dane2.txt" ) ) cout << "Udalo sie otworzyc plik!" << endl; else cout << "Nie udalo sie otworzyc pliku!" << endl; return 0; }
bool czyNapotkanoZnakNowegoWiersza( ifstream & plik ) { char cZnak; for(;; ) { plik.clear(); cZnak = plik.peek(); if( plik.fail() || plik.bad() ) return false; if( !isspace( cZnak ) ) return false; plik.get( cZnak ); if( plik.fail() || plik.bad() ) return false; if( cZnak == '\n' ) return true; } }
bool WCZYTAJ_LICZBE( ifstream & PLIK, int LICZBA ) { PLIK >> LICZBA; if( PLIK.fail() || PLIK.bad() ) { return false; } return true; }
bool WCZYTAJ_PLIK( string NAZWA_PLIKU ) { int LICZBA = 0; int WIERSZ = 1; int SUMA = 0; ifstream PLIK; PLIK.open( NAZWA_PLIKU.c_str() ); if( !PLIK.good() ) { return false; } while( !PLIK.eof() ) { if( PLIK >> LICZBA ) { SUMA += LICZBA; continue; } else if( PLIK.fail() || PLIK.bad() ) { cout << "Blad w wierszu " << WIERSZ << "!" << endl; PLIK.clear(); continue; } else if( czyNapotkanoZnakNowegoWiersza( PLIK ) ) { cout << SUMA << endl; WIERSZ++; SUMA = 0; } } PLIK.close(); return true; } [ cpp / ] |
|
DejaVu |
» 2017-04-30 15:19:30 |
|
« 1 » |