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: #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"; SetConsoleTextAttribute( hOut, FOREGROUND_INTENSITY ); float a; float b; int znak; int operatorek; 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: 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 |
|
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. |
|
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. |
|
gvphjw395jp Temat założony przez niniejszego użytkownika |
» 2014-01-13 01:24:14 dzięki, ogarniam
|
|
« 1 » |