Dlaczego moje rozwiązanie działa w 1 sposób

0

Link do zadania: http://cpp0x.pl/kursy/Kurs-C++/Poziom-4/Wczytywanie-zawartosci-pliku-a-kontrola-bledow/485

Treść zadania:

  1. Napisz program, który wczyta z pliku liczby całkowite i wypisze je na ekranie. Wszelkie nieprawidłowe znaki mają zostać pominięte. Program ma wypisać również sumę wszystkich wczytanych liczb. Przykładowa zawartość pliku z danymi:
    a 1 2 321b9 ac.de ef#@g 5 #3

Teraz moja częśc kodu odpowiadająca za wyświetlanie samych liczb:

while (!file.eof())
        {
            file>>number;


            if(file.fail() || file.bad())
            {
                file.clear();
                file.get();
                continue;
            }

            cout<<number;

            znak = file.peek();
            if (znak=' ')
            {

                file.clear();
                cout<<" ";
                file.get(znak);
                continue;
            }

        }
    file.close();

I ogólnie wszystko działa tak jak powinno. Jednak zastanawia mnie dlaczego jak pozamieniam to w taki sposób:

while (!file.eof())
        {
            file>>number;

            znak = file.peek();
            if (znak=' ')
            {

                file.clear();
                cout<<" ";
                file.get(znak);
                continue;
            }

            if(file.fail() || file.bad())
            {
                file.clear();
                file.get();
                continue;
            }

            cout<<number;

        }
    file.close();

To już nic się nie wyświetla. Może mi ktoś to wytłumaczyć dlaczego tak się dzieje?

0

Debugger na pewno by ci powiedział, a nauka jego obsługi ci nie zaszkodzi. Klikasz na początku tego kodu i dajesz "toggle breakpoint" a następnie uruchamiasz program w debug mode i przechoidzisz krok po kroku za pomocą step-over.

0

Pierwsze co rzuca się w oczy to:

          if (znak=' ') 

To jest zawsze prawda, a znak przyjmuje tą wartość. Prawdopodobnie chciałeś zrobić ==.

0
Shalom napisał(a):

Debugger na pewno by ci powiedział, a nauka jego obsługi ci nie zaszkodzi. Klikasz na początku tego kodu i dajesz "toggle breakpoint" a następnie uruchamiasz program w debug mode i przechoidzisz krok po kroku za pomocą step-over.

Ok, postram się skorzystać z tego narzędzia. Dziękuję za wskazówkę.

krzysiek050 napisał(a):

Pierwsze co rzuca się w oczy to:

          if (znak=' ') 

To jest zawsze prawda, a znak przyjmuje tą wartość. Prawdopodobnie chciałeś zrobić ==.

Program wypisywał wynik poprawnie. Naprawiłem operator porównania i wypisuje teraz błędny wynik :D

1 użytkowników online, w tym zalogowanych: 0, gości: 1