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

C++ problem z zabezpieczaniem strumienia wejścia

Ostatnio zmodyfikowano 2011-07-01 21:20
Autor Wiadomość
Dark
Temat założony przez niniejszego użytkownika
C++ problem z zabezpieczaniem strumienia wejścia
» 2011-06-30 12:38:30
Mam pewien problem z zabezpieczeniem strumienia, ponieważ nieważne czy wpiszę liczbę czy jakiś znak i tak dalej mi wykonuje program. Używam Visual C++ 2010 Express

Oto przykładowy kod:
C/C++
#include <iostream>
using namespace std;
int main()
{
    double a;
    bool blad = cin.fail();
    do
    {
        cout << "Wypisz liczbe: ";
        cin >> a;
        blad;
        cin.clear();
        cin.sync();
    } while( blad );
   
    cout << "Liczba to " << a << endl;
    return 0;
}
P-35016
ison
» 2011-06-30 12:52:45
C/C++
blad;
raczej powinno byc
C/C++
blad = cin.fail();

to przed pętlą
C/C++
bool blad = cin.fail();
nie jest konieczne, sprawdzasz czy się poprawnie wczytało zanim zaczniesz wczytywać
(wystarczy sama deklaracja zmiennej blad)

można by to zrobić nawet beż deklarowania dodatkowej zmiennej
C/C++
#include <iostream>

using namespace std;

int main()
{
    double a;
    do
    {
        cin.clear();
        cin.sync();
        cout << "Wypisz liczbe: ";
        cin >> a;
    } while( cin.fail() );
   
    cout << "Liczba to " << a << endl;
    return 0;
}
P-35018
Elaine
» 2011-06-30 13:03:07
Kto zauważy błąd w kodzie isona? :>
P-35020
Dark
Temat założony przez niniejszego użytkownika
» 2011-06-30 13:03:26
Dzięki za rozwiązanie mojego niedopatrzenia :)
P-35021
Dark
Temat założony przez niniejszego użytkownika
» 2011-06-30 13:04:29
Czyszczenie strumienia w złym miejscu? Moim zdaniem powinno być tak:

C/C++
#include <iostream>

using namespace std;

int main()
{
    double a;
    bool blad;
    do
    {
        cout << "Wypisz liczbe: ";
        cin >> a;
        blad = cin.fail();
        cin.clear();
        cin.sync();
    } while( blad );
   
    cout << "Liczba to " << a << endl;
    return 0;
}
P-35022
ison
» 2011-06-30 13:12:27
@up nie o to chodzi, Twój program również działa 'źle'
te programy są przeznaczone tylko do wczytywania wejścia bezpośrednio z konsoli nie z pliku więc działają ok :)
Iname się doszukuje dziury w całym ;p
P-35023
Elaine
» 2011-06-30 13:21:24
nie o to chodzi, Twój program również działa źle
Fixed that for you. :P
te programy są przeznaczone tylko do wczytywania wejścia bezpośrednio z konsoli nie z pliku więc działają ok :)
Pliku? Jakiego pliku? Nie potrzeba żadnych plików, żeby program wpadł w nieskończoną pętlę :P
Iname się doszukuje dziury w całym ;p
Gdyby to było całe, to by nie było problemu :P Niestety, jest duża dziura, którą łatwo zauważyć.
P-35024
Dark
Temat założony przez niniejszego użytkownika
» 2011-06-30 13:23:09
Co to za przypadek wpadania w nieskończoną pętlę? Może to objaśnisz.
P-35025
« 1 » 2 3
  Strona 1 z 3 Następna strona