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

[C++] Rozdzial 34 Zad. 2

Ostatnio zmodyfikowano 2016-09-21 22:25
Autor Wiadomość
karambaHZP
» 2016-09-21 22:18:20
@igawar
Program który napisał alloyZ zapętla się w funkcji "czyNapotkanoZnakNowegoWiersza"

C/C++
while( !plik.eof() ) // nie widzi eof()
{
    ok = true;
    suma = 0;
    while( !czyNapotkanoZnakNowegoWiersza( plik ) && !plik.eof() ) // nie widzi eof()
    {
        plik.clear();
        plik >> iLiczba; // tutaj łapie eof()
        if( plik.eof() ) // po wyłapaniu przerwij
             break;
       
        if( plik.fail() )
        {
            plik.clear();
            plik >> cZnak;
            ok = false;
        }
        else
             suma += iLiczba;
       
    }
    if( plik.eof() ) // tutaj też musi być przerwanie, bo wypisze zbędnie tekst
         break;
   
    if( ok == false )
         std::cout << "Bledne dane w linii " << i << std::endl;
    else
         std::cout << "Suma w linii " << i << " = " << suma << std::endl;
   
    ++i;
}
P-151894
igawar
» 2016-09-21 22:25:56
Ja zamiast while( !czyNapotkanoZnakNowegoWiersza( plik ) używam if i jest prościej.

C/C++
while( !plik.eof() )
{
    if( !czyKoniecLinii( plik ) )
    { //to nie koniec linii
        plik >> liczba;
        if( plik.good() ) suma += liczba;
        else
        { //to nie liczba i nie spacja
            plik.clear();
            plik >> znak;
            zlyZnak = true;
        };
    } //to nie koniec linii
    else
    { //to koniec linii
        if( !zlyZnak )
        {
            cout << suma << endl; ++nrW; suma = 0;
        }
        else
        {
            cout << "Bledne dane w wierszu nr " << nrW << "!" << endl;;
            ++nrW; suma = 0; zlyZnak = false;
        }
       
    }; //to koniec linii
}

Wszystkie metody są dozwolone jeśli dają dobry wynik. Jak w każdej dziedzinie ma się swoje przyzwyczajenia i chodzi się utartymi ścieżkami. Ale się wymądrzyłam :) :) :)
P-151896
1 « 2 »
Poprzednia strona Strona 2 z 2