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

poziom 4 lekcja 34 zadanie domowe

Ostatnio zmodyfikowano 2017-11-10 20:03
Autor Wiadomość
Corvette653
Temat założony przez niniejszego użytkownika
poziom 4 lekcja 34 zadanie domowe
» 2017-11-10 15:04:30
prubuje wykonać to zadanie w następujący sposób:
C/C++
#include <iostream>
#include <fstream>
using namespace std;

void liczenie( int & liczba )
{
    ifstream plik;
    char znak;
    int suma = 0;
   
    plik.open( "3.txt" );
    if( !plik.good() )
    {
        cout << "nie udalo sie otworzyc pliku";
    }
    if( plik.good() )
    {
        while( !plik.eof() )
        {
            plik >> liczba;
            cout << liczba << " ";
            suma += liczba;
        }
        plik.close();
        cout << endl << "suma liczb wynosi: " << suma;
    }
}

int main()
{
    int liczba;
    liczenie( liczba );
    return 0;

nie wiem czemu wartość zmiennej liczba cały czas ma wartość 76 i ta liczba wypisuje się w konsoli w nieskończoność (tak jakby plik nigdy się nie kończył) proszę o pomoc
P-166671
pekfos
» 2017-11-10 15:15:17
I gdzie ta kontrola błędów, o której mowa w tytule lekcji?
P-166672
Corvette653
Temat założony przez niniejszego użytkownika
yyy no jest
» 2017-11-10 19:06:29
na początku sprawdzam czy plik się wczytał a później po każdej pętli czy się nie skończył, do tego nie napisałem tych linijek:
C/C++
while( !plik.eof() )
    {
            plik >> liczba;
   
    plik.clear();
    if( plik.fail() )
    {
        plik >> znak;
    }
   
            cout << liczba << " ";
            suma += liczba;  
        }
w razie wystąpienia znaku innego niż cyfra przypiszą go do char znak i program przejdzie dalej.
Chyba że napisałem cleara w złym miejscu

Co do błędu to nie mam zielonego pojęcia czemu program przypisuje akurat 76 do zmiennej liczba i czemu nie przechodzi dalej tylko powtarza to w nieskończoność.
P-166686
pekfos
» 2017-11-10 19:25:59
Chyba że napisałem cleara w złym miejscu
Ze wszystkich miejsc, te jest najgorsze.
P-166687
Corvette653
Temat założony przez niniejszego użytkownika
» 2017-11-10 19:43:17
ja bardzo przepraszam ale nie przyszedłem po porade do mistrza który mówi zagadkami tylko na forum do innych ludzi.
Według mnie to miejsce jest dobre ponieważ występuje od razu po wczytaniu, gdyby ono się nie udało to program od razu wróci do normy, a w innym wypadku mógłby pominąć jakieś instrukcje. Na prawdę proszę o dokładniejsze wyrażanie się ponieważ niewiele z tych komentarzy mogę wywnioskować
P-166688
pekfos
» 2017-11-10 19:50:54
gdyby ono się nie udało to program od razu wróci do normy
Dosłownie. Tak od razu, że nigdy nie wykryjesz błędu, bo kasujesz go przed sprawdzeniem, czy jakiś błąd wystąpił. To nawet nie miała być zagadka, wstaw to w dowolnym innym miejscu i będzie działać lepiej, niekoniecznie zaraz dobrze, ale lepiej.
P-166689
Corvette653
Temat założony przez niniejszego użytkownika
hmm w teorii może to był błąd jednak działanie programuy jest to samo
» 2017-11-10 19:54:17
w konsoli nie widać różnicy jednak po usunięciu 'a' i ' ' z początku pliku txt zamiast 76 program wypisuje 321 321 321 ...
P-166690
pekfos
» 2017-11-10 19:55:51
A teraz jak kod wygląda?
P-166691
« 1 » 2
  Strona 1 z 2 Następna strona