Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

końcowa linijka w pliku się nie sumuje

Ostatnio zmodyfikowano 2020-07-21 20:59
Autor Wiadomość
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:

C/C++
#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




P-177387
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.
P-177389
« 1 »
  Strona 1 z 1