poziom 4 lekcja 34 zadanie domowe
Ostatnio zmodyfikowano 2017-11-10 20:03
Corvette653 Temat założony przez niniejszego użytkownika |
poziom 4 lekcja 34 zadanie domowe » 2017-11-10 15:04:30 prubuje wykonać to zadanie w następujący sposób: #include <iostream> #include <fstream> using namespace std;
void liczenie( int & liczba ) { ifstream plik; char znak; int suma = 0; plik.open( "3.txt" ); if( !plik.good() ) { cout << "nie udalo sie otworzyc pliku"; } if( plik.good() ) { while( !plik.eof() ) { plik >> liczba; cout << liczba << " "; suma += liczba; } plik.close(); cout << endl << "suma liczb wynosi: " << suma; } }
int main() { int liczba; liczenie( liczba ); return 0;
nie wiem czemu wartość zmiennej liczba cały czas ma wartość 76 i ta liczba wypisuje się w konsoli w nieskończoność (tak jakby plik nigdy się nie kończył) proszę o pomoc |
|
pekfos |
» 2017-11-10 15:15:17 I gdzie ta kontrola błędów, o której mowa w tytule lekcji? |
|
Corvette653 Temat założony przez niniejszego użytkownika |
yyy no jest » 2017-11-10 19:06:29 na początku sprawdzam czy plik się wczytał a później po każdej pętli czy się nie skończył, do tego nie napisałem tych linijek: while( !plik.eof() ) { plik >> liczba; plik.clear(); if( plik.fail() ) { plik >> znak; } cout << liczba << " "; suma += liczba; }
w razie wystąpienia znaku innego niż cyfra przypiszą go do char znak i program przejdzie dalej. Chyba że napisałem cleara w złym miejscu Co do błędu to nie mam zielonego pojęcia czemu program przypisuje akurat 76 do zmiennej liczba i czemu nie przechodzi dalej tylko powtarza to w nieskończoność. |
|
pekfos |
» 2017-11-10 19:25:59 Chyba że napisałem cleara w złym miejscu |
Ze wszystkich miejsc, te jest najgorsze. |
|
Corvette653 Temat założony przez niniejszego użytkownika |
» 2017-11-10 19:43:17 ja bardzo przepraszam ale nie przyszedłem po porade do mistrza który mówi zagadkami tylko na forum do innych ludzi. Według mnie to miejsce jest dobre ponieważ występuje od razu po wczytaniu, gdyby ono się nie udało to program od razu wróci do normy, a w innym wypadku mógłby pominąć jakieś instrukcje. Na prawdę proszę o dokładniejsze wyrażanie się ponieważ niewiele z tych komentarzy mogę wywnioskować |
|
pekfos |
» 2017-11-10 19:50:54 gdyby ono się nie udało to program od razu wróci do normy |
Dosłownie. Tak od razu, że nigdy nie wykryjesz błędu, bo kasujesz go przed sprawdzeniem, czy jakiś błąd wystąpił. To nawet nie miała być zagadka, wstaw to w dowolnym innym miejscu i będzie działać lepiej, niekoniecznie zaraz dobrze, ale lepiej. |
|
Corvette653 Temat założony przez niniejszego użytkownika |
hmm w teorii może to był błąd jednak działanie programuy jest to samo » 2017-11-10 19:54:17 w konsoli nie widać różnicy jednak po usunięciu 'a' i ' ' z początku pliku txt zamiast 76 program wypisuje 321 321 321 ... |
|
pekfos |
» 2017-11-10 19:55:51 A teraz jak kod wygląda? |
|
« 1 » 2 |