Zadanie rozdzial 15 czesc 1. Czemu w programie za pierwszym razem wyswietla podwójnie tekst "podaj wlasciwa liczbe"
Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Zarejestruj się!

Zadanie rozdzial 15 czesc 1. Czemu w programie za pierwszym razem wyswietla podwójnie tekst "podaj wlasciwa liczbe"

AutorWiadomość
Temat założony przez niniejszego użytkownika
Zadanie rozdzial 15 czesc 1. Czemu w programie za pierwszym razem wyswietla podwójnie tekst "podaj wlasciwa liczbe"
» 2018-12-05 12:44:26
Witam. Pytanie jak w temacie postu. Za pierwszym razem komunikat jest wyświetlany podwójnie natomiast jeśli jeszcze raz podamy zła liczbę wyświetla już poprawnie tylko raz. Poniżej kod programu:

C/C++
#include <iostream>
#include <limits>
int main()
{
    int liczba;
    bool test;
    std::cout << "podaj liczbe" << std::endl;
    std::cin >> liczba;
    test = std::cin.fail();
   
    if( test == true )
    do
    {
        std::cout << "poddaj wlasciwa liczbe";
        std::cin >> liczba;
        test = std::cin.fail();
        std::cin.clear();
        std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
    } while( test == true );
   
    std::cout << "Twoja liczba to:" << liczba;
   
    return 0;
   
}
P-173107
» 2018-12-05 13:30:33
C/C++
std::cout << "podaj liczbe" << std::endl;
std::cin >> liczba; // Nieudane: błędne dane na wejściu
//test = std::cin.fail();

//if( test == true )
//do
//{
std::cout << "poddaj wlasciwa liczbe";
std::cin >> liczba; // Nieudane: cin.fail() == true
//test = std::cin.fail();
std::cin.clear();
std::cin.ignore( std::numeric_limits < std::streamsize >::max(), '\n' );
//} while( test == true ); // true
std::cout << "poddaj wlasciwa liczbe";
std::cin >> liczba; // Faktyczne wczytywanie drugiej liczby
Bo tak właśnie to zaimplementowałeś.
P-173108
Temat założony przez niniejszego użytkownika
» 2018-12-06 08:24:14
Ok dzieki poprawiłem i działa.
P-173115
« 1 »
 Strona 1 z 1