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

Rozdział 15, zadanie domowe

Ostatnio zmodyfikowano 2015-07-12 22:21
Autor Wiadomość
Eryk
Temat założony przez niniejszego użytkownika
Rozdział 15, zadanie domowe
» 2015-06-25 00:09:36
Napisz program, który wczyta liczbę, a następnie wypisze ją na ekranie. Zabezpiecz przed wczytaniem nieprawidłowej liczby. Wykorzystaj do tego celu wiedzę z jednego z poprzednich rozdziałów. Sposób działania programu:
1. Podaj liczbę
2. Jeżeli błąd, wróć do kroku 1.
3. Wypisz liczbę, która została podana.



Mój kod:

C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczba;
    cout << "Podaj liczbe: ";
    cin >> liczba;
    if( cin.fail() )
    do
    {
        cout << "Sprobuj ponownie: ";
        cin >> liczba;
    } while( cin.good() );
   
    if( cin.good() )
   
         cout << "Podana liczba to: " << liczba;
   
    return 0;
}




Problem tkwi w tym, że jeśli wprowadzę literę (przykładowo 'a') to program przy podaniu ponownie liczby, zamknie się. Próbowałem też utworzyć drugą zmienną, ale nadal to samo.

C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczba, nowa_liczba;
    cout << "Podaj liczbe: ";
    cin >> liczba;
    if( cin.fail() )
    do
    {
        cout << "Sprobuj ponownie." << endl;
        cout << "Podaj liczbe: ";
        cin >> nowa_liczba;
    } while( cin.good() );
   
    if( cin.good() )
   
         cout << "Podana liczba to: " << liczba;
   
    return 0;
}
P-134053
pekfos
» 2015-06-25 00:15:37
Nie robisz nic z wykrytym błędem.
» Kurs C++ » Poziom 1Obsługa strumienia wejściowego lekcja
P-134054
Eryk
Temat założony przez niniejszego użytkownika
» 2015-06-25 00:43:22
Udało się.
 
C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczba;
    cout << "Podaj liczbe: ";
    cin >> liczba;
    cin.fail();
    if( cin.fail() )
    do
    {
        cin.clear();
        cin.sync();
        cout << "Sprobuj ponownie: ";
        cin >> liczba;
    } while( !cin.good() );
   
    if( cin.good() )
   
         cout << "Podana liczba to: " << liczba;
   
    return 0;
}


P-134055
JMII89
» 2015-06-25 08:58:42
Wiesz , że cin.good() zwraca true jeśli wczytywanie liczby się powiodło a cin.fail() zwraca true gdy się nie powiodło ? To na co tam pchasz przed tą pętlą tego ifa ?
P-134060
Eryk
Temat założony przez niniejszego użytkownika
» 2015-06-27 11:52:57
Tak będzie poprawniej?

C/C++
#include <iostream>
using namespace std;
int main()
{
    int liczba;
    cout << "Podaj liczbe: ";
    cin >> liczba;
    while( cin.fail() )
    {
        cin.clear();
        cin.sync();
        cout << "Podaj jeszcze raz!";
        cin >> liczba;
    }
    cout << "Podana liczba to: " << liczba << endl;
    return 0;
}
P-134112
Elefant
Kod
» 2015-07-12 22:21:41
C/C++
#include <iostream>

using namespace std;


int main()
{
    int liczba;
    cout << "Podaj liczbe: ";
    cin >> liczba;
   
    if( cin.fail() )
    do
    {
        cin.clear();
        cin.sync();
        cout << "Podaj jeszcze raz: ";
        cin >> liczba;
    } while( cin.fail() );
   
    cout << "Podana liczba to: " << liczba;
   
}
ten jest chyba okej?
P-134610
« 1 »
  Strona 1 z 1