Wczytywanie danych z pliku za pomoca >> - problem z zadaniem
Ostatnio zmodyfikowano 2013-12-02 15:13
Zacco Temat założony przez niniejszego użytkownika |
Wczytywanie danych z pliku za pomoca >> - problem z zadaniem » 2013-12-01 22:33:16 Witam, próbuję napisać program który ma wczytać dane z pliku i następnie je zsumować i wypisać. Napisałem coś takiego : #include <iostream> #include <fstream> #include <string> using namespace std;
void dodaj( int liczba ) { int wynik = 0; wynik += liczba; cout << wynik; }
bool WczytajPlik( string nazwapliku ) { ifstream plik; plik.open( nazwapliku.c_str() ); if( plik.good() ) { while( true ) { int liczba; plik >> liczba; if( plik.good() ) dodaj( liczba ); else break; } } else return false; }
int main() { if( !WczytajPlik( "D://haha.txt" ) ) cout << "Nie udalo sie wczytac pliku" << endl; return 0; }
Po skompilowaniu wychodzi takie coś: "112233Nie udalo sie wczytac pliku" Mój plik ma nazwę haha.txt a w nim znajduja sie liczby 1 1 2 2 3 3 Dlaczego program nie sumuje tych liczb i wyswietla ze nie udalo sie wczytac pliku skoro sie udalo? Nie moge do tego dojść. Byłbym wdzięczny za pomoc. Pozdrawiam |
|
Nitr0Skay |
» 2013-12-01 23:02:36 Już wiem, na czym polega problem. Pętla wywołuje funkcję dodaj(), w której Tworzysz nową zmienną suma a zaraz po niej ja wypisujesz. Za każdym kolejnym obrotem pętli wartość sumy jest resetowana, tzn funkcja tworzy nową zmienną, do której przypisuje podany jej argument. Dlatego wszystkie liczby zostają przepisane, a nie następuje ich sumowanie. |
|
Mitu |
» 2013-12-01 23:59:30 Za każdym razem program wyświetla, że nie wczytano pliku, bo nie masz w funkcji "return true". Powinno się znaleźć w ifie za pętlą. Liczby się nie sumują, bo nie ma takiej możliwości - za każdym razem gdy wywołujesz funkcję, tworzysz w niej zmienną int równą zero i do niej dodajesz wartość, więc funkcja zawsze wyświetli 0+liczba, tak jak to wygląda teraz. Możesz to naprawić w prosty sposób dodając modyfikator static przed typem zmiennej w funkcji, tutaj więcej na ten temat: [LINK]; |
|
Zacco Temat założony przez niniejszego użytkownika |
» 2013-12-02 14:12:07 Ok ogarnąłem ten napis ale dodawania nie mogę. Jeśli dam tak : void dodaj( int liczba ) { int wynik; wynik += liczba; cout << wynik; } To daje mi efekt końcowy : 224466. Mitu nie wiem jak to ogarnąć przez te statystyczne. Pomoże ktoś? :) |
|
pekfos |
» 2013-12-02 14:50:49 Po co to robisz w funkcji? |
|
Zacco Temat założony przez niniejszego użytkownika |
» 2013-12-02 15:03:28 Ponieważ chcę się nauczyć korzystać z funkcji bo jak mi to wejdzie w banie to bede tego uzywal a jak nie to bede pisal programy bez funkcji. |
|
pekfos |
» 2013-12-02 15:13:40 W tym przypadku nie ma żadnego sensu używania funkcji. Sumować możesz na miejscu - będzie prościej i szybciej. |
|
« 1 » |