Rozdział 33 - zadanie domowe - problem
Ostatnio zmodyfikowano 2016-09-05 18:54
Speedwaymonia93 Temat założony przez niniejszego użytkownika |
Rozdział 33 - zadanie domowe - problem » 2016-09-05 15:57:44 Proszę Was bardzo o pomoc w zadaniu. Oto treść zadania: Otwórz plik tekstowy w którym będą się znajdowały tylko liczby całkowite oddzielone od siebie spacjami. Napisz program który wczyta liczby z pliku i wypisze sumę wszystkich liczb na standardowym wyjściu. Kod mi się kompiluje ale nie działa. Pomóżcie prosze i podpowiedzcie gdzie popełniłam błąd :) To są dane z mojego pliku txt: 1 2 5 67 89 4 5 8 9 56 4456 324 2456 214 3456 456 355 789 2 1 0 9876 #include <iostream> #include <fstream> #include <string>
bool wczytaj_plik( std::string nazwa_pliku ) { std::ifstream plik; plik.open( nazwa_pliku.c_str() ); if( !plik.good() ) return false; else std::cout << "Udalo sie otworzyc plik " << std::endl; std::string wiersz; std::getline( plik, wiersz ); int a = wiersz.size(); while( std::getline( plik, wiersz ) ) { int suma = 0; for( int i = 0; i < a; i++ ) { int tablica[ i ]; plik >> tablica[ i ]; std::cout << tablica[ i ]; } for( int i = 0; i < a; i++ ) { int tablica[ i ]; suma += tablica[ i ]; std::cout << "Suma wynosi:" << suma; } } plik.close(); return true; }
int main() { if( !wczytaj_plik( "D:/CodeBlocks/ZADANIA DOMOWE/POZIOM 4/lekcja 33/dane.txt" ) ) std::cout << "nie udalo sie otowrzyc pliku" << std::endl; return 0; }
|
|
carlosmay |
» 2016-09-05 16:21:05 Do tego nie potrzeba tablicy. Wystarczą dwie zmienne (do wczytywania liczby i suma wartości). Do wczytywania z pliku użyj operatora >> (w tym przypadku std::getline to utrudnianie sobie życia). |
|
Speedwaymonia93 Temat założony przez niniejszego użytkownika |
» 2016-09-05 16:30:33 Nie wychodzi mi tym sposobem co sugerowałes z tylko dwiema zmiennymi. A jak mogłabym to zrobić z użyciem tablicy? |
|
carlosmay |
» 2016-09-05 16:37:13 Tak samo, tylko zamiast wczytywać do zmiennej przechowującej liczbę, wczytujesz do tablicy. Na forum jest wiele przykładów wczytywania operatorem >> . |
|
Speedwaymonia93 Temat założony przez niniejszego użytkownika |
» 2016-09-05 16:41:41 Problem jest taki ze program po skompilowaniu wypisuj mi tylko komunikat ze się udało otworzyc plik (zrobiłam tak dla pewności ze na pewno sie plik otwiera)ale żadnch danych z pliku mi nie wczytuje i nie mogę dojść do tego dlaczego tak się dzieje. |
|
mateczek |
» 2016-09-05 16:43:14 w programie musisz sporo pokasować :) ogólnie sumę liczysz tak while( plik >> liczba ) { suma += liczba; } |
|
Speedwaymonia93 Temat założony przez niniejszego użytkownika |
» 2016-09-05 16:51:26 No dobra, sumowanie rozumiem jak zrobić ale nadal program mi nie wczytuje liczb z pliku. |
|
mateczek |
» 2016-09-05 16:53:41 tak powinien wyglądać mniej więcej program!!! Z grubsza miałaś dobrze otwieranie pliku więc nie wiem skąd ten błąd z otwarciem!!! #include <iostream> #include <fstream>
void wczytaj_plik( std::string nazwa_pliku ) { std::ifstream plik( nazwa_pliku ); if( plik.good() ) { int liczba = 0, suma = 0; while( plik >> liczba ) suma += liczba; std::cout << "Suma wynosi:" << suma << std::endl; } }
int main() { wczytaj_plik( "dane.txt" ); return 0; }
|
|
« 1 » 2 |