Rozdział 34
Ostatnio zmodyfikowano 2018-04-20 11:32
Pawełek Temat założony przez niniejszego użytkownika |
Rozdział 34 » 2018-04-20 11:08:58 1. Napisz program, który wczyta z pliku liczby całkowite i wypisze je na ekranie. Wszelkie nieprawidłowe znaki mają zostać pominięte. Program ma wypisać również sumę wszystkich wczytanych liczb. Przykładowa zawartość pliku z danymi: a 1 2 321b9 ac.de ef#@g 5 #3 Oczekiwane standardowe wyjście programu dla przykładowego zestawu danych: 1 2 321 9 5 3 Suma liczb wynosi: 341 |
Moja funkcja #include <iostream> #include <fstream> #include <string>
bool wczytajLiczbe( std::string nazwa, int tablica[] ) { std::ifstream plik; plik.open( nazwa.c_str() ); for( int a = 0; !plik.eof(); ) { plik >> tablica[ a ]; if( plik.fail() ) { plik.clear(); return false; } else { std::cout << tablica[ a ] << " "; a++; } } plik.close(); return true; }
int suma( int tablica[], int wynik ) { wynik = 0; for( int b = 0; b < 5; b++ ) wynik += tablica[ b ]; std::cout << "Suma: " << wynik; return 0; }
int main() { int tablica[ 6 ]; int wynik; wczytajLiczbe( "zadanie.txt", tablica ); suma( tablica, wynik ); return 0; }
Mam problem z moją pierwszą funkcją od góry, problem opisałem w komentarzach. |
|
pekfos |
» 2018-04-20 11:22:03 return wychodzi z funkcji. |
|
Pawełek Temat założony przez niniejszego użytkownika |
» 2018-04-20 11:32:12 po usunięciu return, pętla jest nieskończona i metoda fail zawsze zwraca prawdę, co mam zrobić aby przy następnym powtórzeniu pętli, owa pętla pominęła pierwszą wartość pliku (pierwszą wartością jest litera co widać na załączonym zadaniu) i przeszła do drugiej wartości (drugą wartością jest już liczba a więc metoda fail zwróci fałsz) |
|
pekfos |
» 2018-04-20 11:32:55 plik.ignore() |
|
« 1 » |