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

[C++] Rozdział 34 - Zadanie Domowe - błędne działanie programu.

Ostatnio zmodyfikowano 2016-07-15 17:49
Autor Wiadomość
kubaki18
Temat założony przez niniejszego użytkownika
[C++] Rozdział 34 - Zadanie Domowe - błędne działanie programu.
» 2016-07-14 19:14:35
[REUPLOAD]
Witam. Napisałem program do zadania domowego, który miał wypisać z pliku wszystkie liczby, po czym wypisać na ekran ich sumę. Mój kod:
C/C++
#include <iostream>
#include <fstream>
#include <string>

using namespace std;

void GetNR( ifstream & plik, int & Suma )
{
    int Liczba;
    while( !plik.eof() )
    {
        plik.clear();
        plik >> Liczba;
        if( plik.good() )
        {
            cout << Liczba << ", ";
            Suma += Liczba;
        }
       
    }
}

bool CzytajPlik( string Name )
{
    ifstream plik;
    plik.open( Name.c_str() );
    if( plik.bad() )
    {
        plik.close();
        return false;
    }
    int Suma = 0;
    GetNR( plik, Suma );
    cout << "Suma liczb wynosi " << Suma;
    plik.close();
    return true;
}

int main()
{
    if( CzytajPlik( "TekstLiczby.txt" ) )
         cout << endl << "Udalo sie wczytac plik!";
    else
         cout << endl << "Nie udalo sie wczytac pliku!";
   
    return 0;
}
Program kompiluje się, ale nieskończenie powtarza się w momencie gdy napotka jakiś znak nie będący spacją lub liczbą. Nie mam pojęcia dlaczego tak się dzieje. Proszę o pomoc :)
P-149957
carlosmay
» 2016-07-14 19:23:45
nieskończenie powtarza się w momencie gdy napotka jakiś znak nie będący spacją lub liczbą.
Strumień plikowy działa podobnie do strumienia std::cin. Nieudany wczytywanie powoduje zablokowanie strumienia.
Wyzeruj flagi i pozbądź się błędnych danych.
P-149959
kubaki18
Temat założony przez niniejszego użytkownika
» 2016-07-14 19:28:38
Jest przecież plik.clear();
P-149960
marcolo2307
» 2016-07-14 20:51:01
P-149969
kubaki18
Temat założony przez niniejszego użytkownika
» 2016-07-14 21:25:16
Błędną odpowiedź...
P-149970
marcolo2307
» 2016-07-14 22:29:03
Poprawną. A jeśli jej nie rozumiałeś, to czemu nie odpisałeś w tamtym temacie?
P-149972
kubaki18
Temat założony przez niniejszego użytkownika
» 2016-07-15 01:25:48
Gdyby była poprawna, to program działałby dobrze, a tak nie jest -,-
P-149977
Gibas11
» 2016-07-15 03:02:43
Ciekawostka roku – jeśli wrzucisz kawałek kodu w złe miejsce bo go nie rozumiesz to nie znaczy że odpowiedź sama w sobie jest błędna.
Więc zapytam jak przedmówca, dlaczego nie zapytałeś w tamtym temacie, tylko tworzysz nowy?
P-149978
« 1 » 2 3
  Strona 1 z 3 Następna strona