[Lekcja 33] Zadanie przykładowe
Ostatnio zmodyfikowano 2015-04-01 11:17
Gage Temat założony przez niniejszego użytkownika |
[Lekcja 33] Zadanie przykładowe » 2015-04-01 10:29:13 Dziś jestem zmuszony spytać was o zadanie z lekcji o wczytywaniu danych z pliku za pomocą operatora >> . Dla wygody od razu rzucam link: http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-danych-z-pliku-za-pomoca-operatora/325 W funkcji wczytajPlik, znajduje się słowo kluczowe "break", które, według mojej wiedzy, powinno kończyć wykonywanie pętli z miejsca, a co za tym idzie - zwracać true i wychodzić z funkcji. W screenie ze strumienia wejściowego, pojawiają się jednak dane już po błędzie. Jest to błąd w rozdziale, czy czegoś nie rozumiem/coś źle zrobiłem? Dodam, że sam napisałem kod, mający wykonywać takie samo zadanie - przerywa się w momencie wystąpienia błędu (nie przechodzi do czwartej linijki). Ba, z kodem skopiowanym z rozdziału dzieje się to samo! Pozdrawiam i dzięki za odpowiedzi! :) |
|
C-Objective |
» 2015-04-01 10:33:09 Możesz pokazać kod, bo twoje tłumaczenie nic nam nie wyjaśnia |
|
Gage Temat założony przez niniejszego użytkownika |
» 2015-04-01 10:34:01 #include <fstream> #include <iostream> #include <string>
void wykonajOperacje( int liczba1, std::string napis, int liczba2 ) { if( napis == "dodac" ) { std::cout << liczba1 << " + " << liczba2 << " = " << liczba1 + liczba2 << std::endl; } else if( napis == "odjac" ) { std::cout << liczba1 << " - " << liczba2 << " = " << liczba1 - liczba2 << std::endl; } else { std::cout << "Nieznana operacja \"" << napis << "\" - nie mozna wykonac obliczen." << std::endl; } }
bool wczytajPlik( std::string nazwaPliku ) { std::ifstream plik; plik.open( nazwaPliku.c_str() ); if( !plik.good() ) return false; while( true ) { int a; std::string b; int c; plik >> a >> b >> c; if( plik.good() ) wykonajOperacje( a, b, c ); else break; } return true; }
int main() { if( !wczytajPlik( "dane.txt" ) ) std::cout << "Nie udalo sie otworzyc pliku!" << std::endl; return 0; } |
|
RazzorFlame |
» 2015-04-01 10:45:15 while( true ) Zmień na: while( !plik.eof() ) Pętla ta będzie się wykonywała dopóki nie wczyta wszystkiego z pliku. |
|
Gage Temat założony przez niniejszego użytkownika |
» 2015-04-01 10:49:56 Metody eof() jeszcze nie poznałem, ale po zmianie działa tak samo, jak true. W każdym razie, innymi słowy - błąd w przykładzie? |
|
RazzorFlame |
» 2015-04-01 11:09:38 Podaj wyjście dla zawartości w pliku z danymi: 1 dodac 2 |
|
Monika90 |
» 2015-04-01 11:13:05 moim zdaniem zamiast powinno być poza tym nie ma błędu, raczej Ty nie zrozumiałeś. |
|
Gage Temat założony przez niniejszego użytkownika |
» 2015-04-01 11:17:22 To jest to! Na !plik.fail() wszystko działa (chyba nie rozumiem jeszcze różnicy między plik.good() a !plik.fail()). Chociaż kod, który wkleiłem jest żywcem skopiowany z lekcji 33, a nie kompiluje się cały. W każdym razie - dzięki! |
|
« 1 » |