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

Funkcja getchar nie czeka na pobranie znaku

Ostatnio zmodyfikowano 2016-04-08 13:27
Autor Wiadomość
Critical
Temat założony przez niniejszego użytkownika
Funkcja getchar nie czeka na pobranie znaku
» 2016-04-08 10:49:19
Witam

Od dłuższego czasu walczę z tym problemem ale jednak nie potrafię sam go rozwiązać. Czy może ktoś powiedzieć gdzie jest błąd?
C/C++
#include <iostream>
#include <cstdlib>
#include <cstdio>

using namespace std;

float x, y;
char wybor;

int main()
{
   
    for(;; )
    {
        cout << "Podaj 1 liczbe: ";
        cin >> x;
        cout << "Podaj 2 liczbe: ";
        cin >> y;
        system( "cls" );
       
        cout << "MENU GLOWNE" << endl;
        cout << "1.Dodawanie" << endl;
        cout << "2.Odejmowanie" << endl;
        cout << "3.Mnozenie" << endl;
        cout << "4.Dzielenie" << endl;
        cout << "5.Koniec" << endl;
        cout << "Co chcesz zrobic(podaj numer 1-5): ";
       
        wybor = getchar();
        cout << endl;
       
        switch( wybor )
        {
        case '1':
            cout << "Wynik dzialania x + y to: " << x + y << endl;
            break;
        case '2':
            cout << "Wynik dzialania x-y to: " << x - y << endl;
            break;
        case '3':
            cout << "Wynik dzialania x*y to: " << x * y << endl;
            break;
        case '4':
            cout << "Wynik dzialania x/y to: " << x / y << endl;
            break;
        case '5':
            exit( 0 );
            break;
            default:
            cout << "Niepoprawny wybor";
        }
    }
    return 0;
}
P-147071
carlosmay
» 2016-04-08 11:19:15
Wyczyść strumień przed użyciem funkcji getchar().
P-147072
Critical
Temat założony przez niniejszego użytkownika
» 2016-04-08 11:43:55
Faktycznie, działa. Ale zauważyłem inny błąd:
Dlaczego jeśli podam liczbę ze znakiem "," to automatycznie pomija wpisywanie drugiej liczby? Np. 3,5
A jeśli podam 3.5 to działa
P-147073
carlosmay
» 2016-04-08 13:27:27
Dlaczego jeśli podam liczbę ze znakiem ","
Bo używa się kropki (przecinka można gdy włączysz kodowanie na polskie znaki dla strumienia wejściowego).

Obsługa strumienia wejściowego
P-147076
« 1 »
  Strona 1 z 1