Problem, jak działa ten return /.?
Ostatnio zmodyfikowano 2014-08-29 11:53
ChomikPL Temat założony przez niniejszego użytkownika |
Problem, jak działa ten return /.? » 2014-08-29 10:41:00 Witajcie, oto kod do zadania domowego z lekcji 33: #include <fstream> #include <iostream> #include <string>
bool otworzPlik() { std::ifstream plik; plik.open( "plik.txt" ); if( !plik.good() ) { return false; } return true; }
int policz() { std::ifstream plik; plik.open( "plik.txt" ); if( otworzPlik() ) { int liczba; int suma = 0; while( true ) { plik >> liczba; suma += liczba; if( !plik.good() ) break; } return suma; } std::cout << "Nie wczytano pliku"; }
int main() { otworzPlik(); std::cout << policz(); }
Fukncja "policz()" powinna zwracać wartość obiektu suma, jednak zwraca stałą wartość 4077712, dlaczego ? |
|
pekfos |
» 2014-08-29 11:18:47 A co zwraca, jak nie udało się otworzyć pliku? I po co otwierasz 2 razy ten sam plik? |
|
Monika90 |
» 2014-08-29 11:33:58 plik >> liczba;
suma += liczba;
|
wczytujesz liczbę ale nie sprawdzasz czy się ta operacja udała, zawsze ją dodajesz do sumy, a powinienś dodawać tylko wtedy gdy wczytywanie się powiodło. najlepiej tak napisać taką pętlę suma = 0; while( plik >> liczba ) suma += liczba;
|
|
ChomikPL Temat założony przez niniejszego użytkownika |
» 2014-08-29 11:35:37 Otwieram 2 raz, bo jak nie otworze to w funkcji policz stwierdza ze nie ma zmiennej plik ...
Hmmm no własnie wtedy nie zwraca :F to jest przyczyną wypisywania takiej wartości ?
|
|
ChomikPL Temat założony przez niniejszego użytkownika |
» 2014-08-29 11:38:43 Monika: Trafna sugestia, od teraz tak bede robil ta petle, też o tym myślałem, dlatego pierwotnie w tym miejscu pisałem: plik >> liczba;
if( !plik.good() ) break;
suma += liczba;
ale wtedy nie wczytywało w ogole ostatniej wartości z pliku... dlatego zamieniłem to miejscami. |
|
Monika90 |
» 2014-08-29 11:42:09 Otwieram 2 raz, bo jak nie otworze to w funkcji policz stwierdza ze nie ma zmiennej plik ... |
Otwierasz 3 razy. Funkcja otworzPlik jest zbędna. |
|
ChomikPL Temat założony przez niniejszego użytkownika |
» 2014-08-29 11:43:58 Nom, przemyslalem to. Racja. A co z moim returnem ?? |
|
Monika90 |
» 2014-08-29 11:48:33 Jak zachowuje się twój program? Wyświetla 4077712 , czy być może Nie wczytano pliku4077712 ? |
|
« 1 » 2 |