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 » |