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

cin>> bez zatwierdzenia klawiszem enter

Ostatnio zmodyfikowano 2014-01-13 01:24
Autor Wiadomość
gvphjw395jp
Temat założony przez niniejszego użytkownika
cin>> bez zatwierdzenia klawiszem enter
» 2014-01-12 16:35:04
Witam, mam pytanie odnosnie strumienia wejściowego "cin>>"
otóż, zrobiłem Menu to swojego programu:

C/C++
#include<windows.h>
#include<iostream>
#include<cstdlib>
using namespace std;

int main()
{
    do
    {
        HANDLE hOut;
        hOut = GetStdHandle( STD_OUTPUT_HANDLE );
       
        SetConsoleTextAttribute( hOut, FOREGROUND_GREEN );
        cout << "\t\t\tWitaj w programie NieMaLipy"; //powitanie
        SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
       
        float a; //deklaracja liczby1
        float b; //deklaracja liczby2
        int znak; // wybor menu
       
        int operatorek; // operatory dzialan
       
        do
        {
            cout << endl;
            cout << "Menu:" << endl;
            cout << "     [1]-dodawanie.  |" << endl;
            cout << "     [2]-odejmowanie.|" << endl;
            cout << "     [3]-mnozenie.   |" << endl;
            cout << "     [4]-dzielenie.  |" << endl;
            cout << "     [0]-wyjscie.    |" << endl;
            cout << "_____________________|";
            cout << "           Wybor: ";
           
            cin >> operatorek;
            system( "CLS" );
            if( operatorek != 1 && operatorek != 2 && operatorek != 3 && operatorek != 4 && operatorek != 0 )
            {
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "^W menu nie ma takiej opcji, sproboj ponownie!!!" << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
            }
           
        } while( operatorek != 1 && operatorek != 2 && operatorek != 3 && operatorek != 4 && operatorek != 0 );
       
       
        switch( operatorek )
        {
           
        case 1:
            do
            {
                cout << "Liczba pierwsza:|";
               
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cin >> a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Liczba druga:   |";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cin >> b;
               
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Obliczenia:     |";
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "+";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << b;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "=" << a + b;
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Wcisnij: |[1]-jezeli chcesz kontunowac" << endl;
                cout << "         |[0]-jezeli chcesz powrocic do menu";
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << endl;
                cin >> znak;
                system( "CLS" );
            } while( znak != 0 );
           
            break;
           
        case 2:
            do
            {
                cout << "Liczba pierwsza:|";
               
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cin >> a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Liczba druga:   |";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cin >> b;
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Obliczenia:     |";
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "-";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << b;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "=" << a - b;
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Wcisnij: |[1]-jezeli chcesz kontunowac" << endl;
                cout << "         |[0]-jezeli chcesz powrocic do menu";
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << endl;
                cin >> znak;
                system( "CLS" );
            } while( znak != 0 );
           
            break;
        case 3:
            do
            {
                cout << "Liczba pierwsza:|";
               
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cin >> a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Liczba druga:   |";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cin >> b;
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Obliczenia:     |";
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "x";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cout << b;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "=" << a * b;
                cout << endl;
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Wcisnij: |[1]-jezeli chcesz kontunowac" << endl;
                cout << "         |[0]-jezeli chcesz powrocic do menu";
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << endl;
                cin >> znak;
                system( "CLS" );
            } while( znak != 0 );
           
            break;
        case 4:
            do
            {
                cout << "Liczba pierwsza:|";
               
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cin >> a;
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << "Liczba druga:   |";
                SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                cin >> b;
                if( b != 0 )
                {
                    cout << endl;
                    SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                    cout << "Obliczenia:     |";
                    SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                    cout << a;
                    SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                    cout << ":";
                    SetConsoleTextAttribute( hOut, FOREGROUND_BLUE );
                    cout << b;
                    SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                    cout << "=" << a / b;
                    cout << endl;
                }
                else
                {
                    SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                    cout << endl;
                    cout << "Nie mozedz dzielic przez 0!!!";
                    SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                    cout << endl;
                }
                SetConsoleTextAttribute( hOut, FOREGROUND_RED );
                cout << "Wcisnij: |[1]-jezeli chcesz kontunowac" << endl;
                cout << "         |[0]-jezeli chcesz powrocic do menu";
                SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY );
                cout << endl;
                cin >> znak;
                system( "CLS" );
            } while( znak != 0 );
           
            break;
        case 0:
            SetConsoleTextAttribute( hOut, FOREGROUND_RED );
           
            cout << "Koniec Programu";
            return 0;
        }
       
        cout << endl;
    } while( true );
   
   
    return 0;
}
chodzi i sam początek:
C/C++
cout << endl;
cout << "Menu:" << endl;
cout << "     [1]-dodawanie.  |" << endl;
cout << "     [2]-odejmowanie.|" << endl;
cout << "     [3]-mnozenie.   |" << endl;
cout << "     [4]-dzielenie.  |" << endl;
cout << "     [0]-wyjscie.    |" << endl;
cout << "_____________________|";
cout << "           Wybor: ";

cin >> operatorek;
chciałbym aby po wcisnieciu klawiasza 1,2,3,4,0, od razy wykonywała się kolejna część kodu bez potwierdzania tej cyfry klawiszem ENTER, czy da radę to jakoś zrobić?, dopiero się uczę więc zielony jestem
P-101982
leon_w
» 2014-01-12 17:16:37
Kod dawaj z znacznikach.
A do tego czego oczekujesz, służy funkcja "getch()" z biblioteki conio.h.
P-101992
Chlorek
» 2014-01-12 18:15:48
Zgadza się, jest conio.h ale to jest typowo Windows'owe rozwiązanie. Jak na razie nie znalazłem cross-platformowego rozwiązania tego zagadnienia (a i właściwie mało potrzebne jest). Ale kiedyś pod linuxem miałem potrzebę właśnie użycia takiego getch() i spotkało mnie zaskoczenie, że nie ma takiego gotowca, pamiętam, że musiałem pisać sobie funkcję, która wykorzystywała chyba header termos. Domyślam się że pytanie tu było w kontekście Windowsa, ale jeśli ktoś kiedyś będzie szukał odpowiedzi na to pytanie i tu trafi to będzie miał jakiś punkt zaczepienia.
P-102002
gvphjw395jp
Temat założony przez niniejszego użytkownika
» 2014-01-13 01:24:14
dzięki, ogarniam
P-102047
« 1 »
  Strona 1 z 1