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

poziom 4 lekcja 34 zadanie domowe [trudne zadanie]

Ostatnio zmodyfikowano 2017-11-11 19:40
Autor Wiadomość
Corvette653
Temat założony przez niniejszego użytkownika
poziom 4 lekcja 34 zadanie domowe [trudne zadanie]
» 2017-11-10 20:18:07
Witam ponownie :)
tym razem mam nadzieje pójdzie szybciej.
Oto kod:
C/C++
int main()
{
    ifstream plik;
    int i = 0;
    int cyfra;
    int suma = 0;
    char znak;
    plik.open( "4.txt" );
    while( !plik.eof() )
    {
        i++;
        while( !czyNapotkanoZnakNowegoWiersza( plik ) )
        {
            plik >> cyfra;
            if( !plik.good() )
            {
                plik.clear();
                plik >> znak;
                cout << "Bledne dane w wierszu nr " << i << "!" << endl;
            }
            suma += cyfra;
        }
        cout << suma << endl;
    }
    plik.close();
    return 0;
}
reszta jest na stronie
wszystko działa jednak napis bledne dane w wierszu 5 wypisuje się w nieskonczonosc a powinien tylko raz (zawsze to samo :) # poprzednie rozwiązałem dziekuje za pomoc )
proszę o szybką odpowiedź ponieważ śpieszę się na mecz :)
P-166697
pekfos
» 2017-11-10 20:36:03
Twoja pętla while(!czyNapotkanoZnakNowegoWiersza(plik)) nie uwzględnia przypadku, gdy plik się kończy. Może tam nie powinno być tej pętli..?
P-166698
Corvette653
Temat założony przez niniejszego użytkownika
jak zwykle zagadkowy :)
» 2017-11-10 20:43:10
zamiast tego zrobie
if ( plik.eof() )
brek;
powinno być :)
P-166699
Corvette653
Temat założony przez niniejszego użytkownika
wyszło mi takie dziwne coś :)
» 2017-11-10 20:50:43
C/C++
plik.open( "4.txt" );
while( !plik.eof() )
{
    i++;
    while( !czyNapotkano( plik ) )
    {
        if( plik.eof() )
             break;
       
        plik >> cyfra;
        if( !plik.good() )
        {
            plik.clear();
            plik >> znak;
            cout << "Bledne dane w wierszu nr " << i << "!" << endl;
            suma = 0;
        }
        else
        {
            suma += cyfra;
        }
    }
    if( !suma == 0 )
    {
        cout << suma << endl;
    }
    suma = 0;
}
plik.close();
jednak nadal dwa razy wypisuje mi 5
oraz bledne dane w wierszu 5! mogę to zrobić jednak trzeba mi coś takiego:
while ( ! )// następnym znakiem nie jest liczba, isspace oznacza znak biały, a liczbę czym można oznaczyć?
{
    plik >> znak
} ( będę dalej pisać jutro dobranoc i wesołego meczu :)  )
P-166700
Corvette653
Temat założony przez niniejszego użytkownika
ktoś wie jak to można oznaczyć?
» 2017-11-11 19:05:51
while ( !(następnym znakiem jest liczba) ) jak to można napisać??
P-166760
pekfos
» 2017-11-11 19:07:24
while ( !(liczba) ) jak to można napisać??
Można to napisać bez nawiasu. Nie potrzeba tam tyle nawiasów.

isspace oznacza znak biały, a liczbę czym można oznaczyć?
W tym zdaniu masz wszystko czego potrzeba, by znaleźć odpowiednią funkcję w 10 sekund w Google. Ale lepiej zapytać na forum i czekać prawie 24h na odpowiedź, jak człowiek inteligentny.
http://www.cplusplus.com​/reference/cctype/
P-166761
Corvette653
Temat założony przez niniejszego użytkownika
yyy tam ma być oznaczenie
» 2017-11-11 19:14:20
to nie jest konkretna liczba chodzi mi o sprawdzenie czy to jest cyfra, jeśli nie to pętla się wykonuje dalej
dlatego to ma wyglądać o tak :
while ( !(zamiast tego nawiasu ma być oznaczenie liczby) ) // tak jak isspace oznacza znak biały to isnumber oznacza liczbę? 
ja wiem że nic nie wiem i dlatego się pytam a teraz już wiem że czasami faktycznie jestem idiotą masz racje :)
P-166764
jankowalski25
» 2017-11-11 19:19:06
P-166765
« 1 » 2
  Strona 1 z 2 Następna strona