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

Zadanie 15 poziom 2

Ostatnio zmodyfikowano 2016-07-10 19:40
Autor Wiadomość
carlosmay
» 2016-07-09 19:56:15
W takim wypadku
ignore();
 czyści mi całe "menu".
W tym miejscu strumień jest pusty, więc metoda czeka na jakieś dane.
Używaj tej metody, po wykryciu błędnych danych, oraz po użyciu operatora
>>
,
aby oczyścić strumień przed kolejnymi danymi.

edit:
Napisane po swojemu (nie wg treści).
Dużo nadmiarowego kodu.
W każdym
case
 sprawdzasz te same błędy. Można zrobić to raz przed instrukcją
switch
,
a w
case
'ach wykonać tylko obliczenia. Wyjątkiem jest dzielenie, gdzie trzeba sprawdzić,
czy wprowadzona liczba nie jest zerem.
P-149797
neferx
Temat założony przez niniejszego użytkownika
» 2016-07-10 19:40:49
Napisałem całość od nowa. Teraz wszystko chyba pasuje do wzoru, w
case
 nie ma już instrukcji dotyczących sprawdzenia błędów, za wyjątkiem
case 4:
, czyli dzielenia.
Czy teraz jest już ok?

@Edit: Coś pokopałem, ale nie wiem co. Teraz program się zamyka nawet, gdy wpisze jakies litery. Wcześniej było w porządku.
@Edit2: Brakowało
break;
 po
case 0:
 i przez to wykonywał się
default:
, w którym miałem wcześniej przypisany
wybor = 6
, co skutkowało nieskończoną pętlą. Doszedłem do wniosku, że po wpisaniu liter w
cin >> wybor;
 automatycznie przypisywane jest 0 dla
wybor;
 co powoduje zakończenie pętli, czyli zamknięcie programu. Postanowiłem wprowadzić sprawdzenie
cin.good();
 czy wczytywanie
cin >> wybor;
 się powiodło i w
else
 przypisalem
wybor = 6
, tak aby nie zakończyć pętli.
C/C++
#include <iostream>
#include <windows.h>
using namespace std;

int main()
{
    float l1, l2, wynik = 0;
    int wybor;
    bool ok1, ok2, okwybor;
    do {
        cout << "Wynik wynosi: " << wynik << endl;
        cout << "Wprowadz 1 liczbe: " << endl;
        cin.clear();
        cin.sync();
        cin >> l1;
        ok1 = cin.good();
        if( ok1 == true )
        {
            cout << "Wprowadz 2 liczbe: " << endl;
            cin.clear();
            cin.sync();
            cin >> l2;
            ok2 = cin.good();
            if(( ok1 == true ) &&( ok2 == true ) )
            {
                cout << "[1] Dodawanie" << endl;
                cout << "[2] Odejmowanie" << endl;
                cout << "[3] Mnozenie" << endl;
                cout << "[4] Dzielenie" << endl;
                cout << "[5] Rezygnuj" << endl;
                cout << "[0] Wyjscie" << endl;
                cin.clear();
                cin.sync();
                cin >> wybor;
                okwybor = cin.good();
                system( "cls" );
                if(( wybor >= 0 ) &&( wybor <= 5 ) &&( okwybor == true ) )
                {
                    switch( wybor )
                    {
                    case 1:
                        {
                            wynik = l1 + l2;
                        }
                        break;
                    case 2:
                        {
                            wynik = l1 - l2;
                        }
                        break;
                    case 3:
                        {
                            wynik = l1 * l2;
                        }
                        break;
                    case 4:
                        {
                            if( l2 != 0 )
                            {
                                wynik = l1 / l2;
                            }
                            else
                            {
                                wynik = 0;
                                cout << "Nie dzielimy przez 0!" << endl;
                            }
                        }
                        break;
                    case 5:
                        {
                           
                        }
                        break;
                    case 0:
                        {
                            wybor = 0;
                        }
                        break;
                        default:
                        {
                            cout << "Wystapil blad! Wprowadz cyfry z zakresu 0-5" << endl;
                        }
                        break;
                    }
                }
                else
                {
                    wybor = 6;
                    cout << "Wprowadz cyfre z zakresu od 0 do 5" << endl;
                }
            }
            else
            {
                system( "cls" );
                cout << "Wprowadz poprawne liczby!" << endl;
            }
        }
        else
        {
            system( "cls" );
            cout << "Wprowadz poprawne liczby!" << endl;
        }
    } while( wybor != 0 );
   
    cout << "Do zobaczenia!" << endl;
    Sleep( 500 );
    return 0;
   
}
P-149817
1 « 2 »
Poprzednia strona Strona 2 z 2