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

Lekcja 34 Praca Domowa

Ostatnio zmodyfikowano 2015-12-28 03:42
Autor Wiadomość
wikiejko
Temat założony przez niniejszego użytkownika
Lekcja 34 Praca Domowa
» 2015-12-27 23:58:37
Tutaj kod
C/C++
#include <iostream>
#include <string>
#include <fstream>


int main()
{
    int wynik = 0;
    std::ifstream plik;
    plik.open( "C:/Users/Tak/Desktop/C++/34.txt" );
    if( !plik.good() )
    {
        std::cout << "Nie udalo sie odtworzyc pliku ";
    }
    while( !plik.eof() )
    {
        int liczba;
        plik >> liczba;
        if( plik.fail() )
        {
            plik.clear();
            continue;
        }
        std::cout << liczba << std::endl;
        wynik += liczba;
    }
    std::cout << wynik;
    return 0;
}
Otóż problem jest taki, że nie wiem dlaczego nic się nie dzieje po odpaleniu programu.
Mam teorię, że moment sprawdzenia pierwszego znaku robi się w kółko, lecz nie wiem czy to jest przyczyna, a tym bardziej co z tym zrobić
P-142447
carlosmay
» 2015-12-28 00:07:03
Mam teorię, że moment sprawdzenia pierwszego znaku robi się w kółko,
 Do podtrzymywania, bądź obalania teorii najlepszy debugger.
Nie ma czyszczenia strumienia z nieprawidłowych danych, więc przy pierwszym niepowodzeniu wczytywania program zapętla się.

lecz nie wiem czy to jest przyczyna, a tym bardziej co z tym zrobić
 dodać opróżnianie strumienia po wykryciu błędu.
P-142448
wikiejko
Temat założony przez niniejszego użytkownika
» 2015-12-28 00:12:55
Czyli coś na zasadzie std::cin.sync() ?
//Edit
Znalazłem coś takiego  plik.get(), czy te 2 metody robią to samo?
P-142449
carlosmay
» 2015-12-28 00:47:33
Metoda
*.ignore();
 do czyszczenia strunienia.

  Znalazłem coś takiego plik.get(), czy te 2 metody robią to samo?
  plik.get() pobiera jeden znak. Umiejętne użycie zadziała jak metoda *.ingnore()
P-142450
wikiejko
Temat założony przez niniejszego użytkownika
» 2015-12-28 03:42:39
Dzięki za pomoc!
//Rozwiązany
P-142451
« 1 »
  Strona 1 z 1