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

Do..while lekcja 15 poziom 2

Ostatnio zmodyfikowano 2017-04-21 16:24
Autor Wiadomość
Panniikt
Temat założony przez niniejszego użytkownika
Do..while lekcja 15 poziom 2
» 2017-04-21 14:50:43
W pierwszym zadaniu trzeba podać liczbę i zabezpieczyć program przed wpisywaniem czegoś innego nie liczba. Mój kod wygląda tak:

Jednak po wpisaniu litery pętla powtarza się cały czas i nie ma już możliwości naprawienia swojego błędu. Może mnie ktoś rozjaśnić gdzie robię błąd
C/C++
#include <iostream>


using namespace std;


int main()
{
   
    int a;
    int b;
   
    do
    {
       
        cout << "Podaj jakas liczbe\n";
        cin.clear();
        cin.sync();
        cin >> a;
       
        if( cin.fail() )
       
       
             cout << "Podales litere/znak, a nie liczbe\n\n";
       
       
       
       
       
    } while( cin.fail() );
   
   
    cout << "Liczba ktora podales to: " << a << endl;
   
   
   
   
   
   
    system( "PAUSE" );
    return 0;
   
}
P-160329
wilkoo13
» 2017-04-21 16:05:47
Na pewno? U mnie działa poprawnie, tyle że tzeba dodać
#include <cstdlib>
P-160334
Panniikt
Temat założony przez niniejszego użytkownika
» 2017-04-21 16:16:33
Rzeczywiście działa chodź dopiero jak ten kod skopiowałem do Clion. Pierwotnie używałem Visual studio i tam niestety pętla wykonywała się w nieskończoność sama bez możliwości ponownego wpisana liczby.
P-160336
karambaHZP
» 2017-04-21 16:24:30
cin.sync();
 - nie oczyszcza od VS2015 (nie do tego służy ta metoda).
W tym celu użyj metody
cin.ignore()
.
P-160337
« 1 »
  Strona 1 z 1