Rozdział 33 - zadanie domowe.
Ostatnio zmodyfikowano 2013-08-01 21:27
Gogus-96 Temat założony przez niniejszego użytkownika |
Rozdział 33 - zadanie domowe. » 2013-08-01 16:06:17 Witam. Mam problem z działaniem mojego programu. Zarówno kompilator, jak i sam program błędu żadnego nie wykrywa (wnioskuję, że wykrywa plik tekstowy z liczbami), jednak nie wykonuje zadanego polecenia. Oto mój kod: #include <iostream> #include <fstream> #include <string>
void wykonajoperacje( int a, int b, int c ) { std::cout << a << "+" << b << "+" << c << "=" << a + b + c << std::endl; }
bool wczytaj( std::string nazwa ) { std::ifstream plik; plik.open( nazwa.c_str() ); if( !plik.good() ) return false; while( true ) { int a; int b; int c; plik >> a >> b >> c; if( plik.good() ) wykonajoperacje( a, b, c ); else break; } return true; }
int main() { if( !wczytaj( "Cyfry.txt" ) ) std::cout << "Nie udalo sie wczytac danych." << std::endl; return 0; } Prosiłbym o pomoc, oraz z góry dziękuję. |
|
Monika90 |
» 2013-08-01 17:11:37 A co masz w pliku cyfry.txt? Spróbuj zamienić to if( plik.good() ) wykonajoperacje( a, b, c ); else break;
na if( plik ) wykonajoperacje( a, b, c ); else break;
|
|
c-plus-plus |
» 2013-08-01 17:48:12 Jeszcze jedna uwaga co do stylu. Nie deklarowałbym zmiennych w pętli while, ale raczej przed jej rozpoczęciem (a najlepiej na początku funkcji): zamiast: bool wczytaj( std::string nazwa ) { std::ifstream plik; plik.open( nazwa.c_str() ); if( !plik.good() ) return false; while( true ) { int a; int b; int c;
napisałbym raczej: bool wczytaj( std::string nazwa ) { int a, b, c; std::ifstream plik; plik.open( nazwa.c_str() ); if( !plik.good() ) return false; while( true ) {
|
|
Monika90 |
» 2013-08-01 18:19:58 Nie deklarowałbym zmiennych w pętli while, ale raczej przed jej rozpoczęciem (a najlepiej na początku funkcji) |
A to dlaczego? Łatwiej się czyta kod, kiedy zmienne są zadeklarowane możliwie blisko swego użycia. W przypadku typów takich jak int, których konstrukcja i destrukcja nic nie kosztuje, jak najbardziej należy deklarować zmienne wewnątrz pętli, gdy tak jak tu, nie są one do niczego potrzebne ani przed pętlą ani po niej. |
|
Gogus-96 Temat założony przez niniejszego użytkownika |
» 2013-08-01 21:27:00 W pliku cyfry.txt mam 9 5 1 zapisane w jednej linijce. Monika90 Twoje rozwiązanie działa. Dziękuję. |
|
« 1 » |