końcowa linijka w pliku się nie sumuje
Ostatnio zmodyfikowano 2020-07-21 20:59
fviel Temat założony przez niniejszego użytkownika |
końcowa linijka w pliku się nie sumuje » 2020-07-21 12:17:59 Witam, Problem polega na tym ze ostatnia linijka kodu się nie sumuje. Proszę o pomoc jak zmienić kod aby ostatnia linija się sumowała :) Oto mój kod: #include <iostream> #include <string> #include <fstream>
using namespace std;
bool czy( fstream & plik ) { char znak; for(;; ) { znak = plik.peek(); if( plik.fail() ) return false; if( !isspace( znak ) ) return false; plik.get( znak ); if( plik.fail() ) return false; if( znak == '\n' ) return true; } } void wczytaj( string tekst ) { fstream plik; plik.open( tekst.c_str() ); if( !plik ) { cout << "blad wczytania pliku" << endl; } int a; int suma = 0; while( !plik.eof() ) { plik >> a; suma += a; cout << a << ", "; if( plik.fail() ) { plik.clear(); plik.get(); continue; } if( czy( plik ) ) { cout << "suma: " << suma << endl; suma = 0; } } } int main() { wczytaj( "C://plik.txt" ); return 0; }
Dane w pliku.txt 1 2 3 3 4 a 5 3 2 5 2 2 1 3 ^ 3 4 |
|
pekfos |
» 2020-07-21 20:59:11 Program reaguje tylko na znak nowej linii, a Twój plik najwyraźniej się tak nie kończy. Trzeba albo dorobić obsługę końca pliku do czy(), albo po głównej pętli sprawdzać czy są jakieś dane do wyświetlenia. |
|
« 1 » |