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

odnośnie tematu "pomoc z zabezpieczeniem przed wpisaniem literki"

Ostatnio zmodyfikowano 2011-05-02 19:02
Autor Wiadomość
Anomander
Temat założony przez niniejszego użytkownika
odnośnie tematu "pomoc z zabezpieczeniem przed wpisaniem literki"
» 2011-05-02 16:33:50
Witam,
przeglądałem tamten temat i napisałem własną wersję, zastanawia mnie czemu linijka w pętli while wyświetla się dwukrotnie, sam nie mogę tego rozkminić:

C/C++
#include <iostream>

using namespace std;

int main() {
    int liczba;
    cout << "Podaj liczbe: " << endl;
    cin >> liczba;
    bool spr = cin.good();
   
   
   
   
    if( !spr )
    {
        do {
            cout << "miales podac liczbe" << endl;
            cin >> liczba;
            spr = cin.good();
            cin.clear();
            cin.sync();
           
        } while( !spr );
       
    }
   
    cout << "gratulacje" << endl;
   
   
   
}


chodzi o fragment "miales podac liczbe"
najpierw sam napisałem ten program, ale później zauważyłem że w programie końcowym w temacie jest dokładnie taki sam błąd.

Przy okazji chciałbym zapytać czy to normalne że jak w składni znajduje się cin.clear i cin.sync to program tak długo się wczytuje?okienko się otwiera ale zanim wykona jakąkolwiek instrukcję z kodu mija z 20-30 sekund?
P-32459
ison
» 2011-05-02 16:48:18
ponieważ w 2 miejscach wczytujesz, jeśli za pierwszym razem wpiszesz nieprawidłową liczbę to zamiast wyczyścić bufor wczytujesz kolejną

zmień kolejność, w pętli najpierw czyść bufor/flagi błędów
C/C++
if( !spr )
{
    do {
        cin.clear();
        cin.sync();
        cout << "miales podac liczbe" << endl;
        cin >> liczba;
        spr = cin.good();
       
    } while( !spr );
   
}

Przy okazji chciałbym zapytać czy to normalne że jak w składni znajduje się cin.clear i cin.sync to program tak długo się wczytuje?okienko się otwiera ale zanim wykona jakąkolwiek instrukcję z kodu mija z 20-30 sekund?
nie, może antywirus Ci skanuje aplikację przed uruchomieniem?
P-32460
Anomander
Temat założony przez niniejszego użytkownika
» 2011-05-02 19:02:31
Tak, to był antywirus :/
Wielkie dzięki za pomoc, zamykam temat
P-32473
« 1 »
  Strona 1 z 1