• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Program nie wykonuje działań w CODE::BLOCKS

Object Storage Arubacloud
0 głosów
2,058 wizyt
pytanie zadane 3 listopada 2015 w C i C++ przez damiang Nowicjusz (160 p.)
edycja 3 listopada 2015 przez damiang

Mój problem polega na tym, że po wpisaniu pierwsze i drugiej liczby wyświetla się komunikat "Nie ma takiej opcji w menu". Używam Linuxa/Ubuntu.14.04.

PS. Przepraszam ale nastąpiła pomyłka, ten kod poniżej jest mój a ten wcześniejszy to był kod z tutorialu.

 

#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <ncurses.h>
using namespace std;

float x,y;
char wybor;

int main()
{

for(;;)
{

    cout << "Podaj 1 liczbe: ";
    cin >> x;
    cout << "Podaj 2 liczbe: ";
    cin >> y;

    cout<<endl;
    cout << "MENU GLOWNE" << endl;
    cout << "-----------------" << endl;
    cout << "1. Dodawanie" << endl;
    cout << "2. Odejmowanie" << endl;
    cout << "3. Mnozenie" << endl;
    cout << "4. Dzielenie" << endl;
    cout << "5. Koniec programu" << endl;


    cout << endl;
    wybor=getch();

    switch(wybor)
    {
    case '1':
            cout<<"Suma = "<<x+y;
    break;

    case '2':
            cout<<"Roznica = "<<x-y;
    break;

    case '3':
            cout<<"Iloczyn = "<<x*y;
    break;

    case '4':
            if (y==0) cout << "Nie dzielimy przez zero!";
            else cout<<"Iloraz = "<<x/y;
    break;

    case '5':
            exit(0);
    break;

    default: cout<<"Nie ma takiej opcji w menu!";
    }
    getchar();getchar();
    system("clear");
}
    return 0;
}

 

3 odpowiedzi

+1 głos
odpowiedź 3 listopada 2015 przez adrian17 Ekspert (344,860 p.)

Trochę poza tematem, ale...

Używam Linuxa/Ubuntu.14.04.

Skąd wziąłeś <conio.h>? Z tego co wiem on jest specyficzny dla Windowsa.

komentarz 3 listopada 2015 przez damiang Nowicjusz (160 p.)
Już poprawione:)
0 głosów
odpowiedź 3 listopada 2015 przez Michał628496 Pasjonat (17,340 p.)
U mnie też nie działa . To jest chyba wina funkcji getch()

bo po getch(); dałem cout
–1 głos
odpowiedź 3 listopada 2015 przez Patrycjerz Mędrzec (192,320 p.)
Switch służy do porównywania liczb całkowitych, niczego poza tym.
komentarz 3 listopada 2015 przez adrian17 Ekspert (344,860 p.)
edycja 3 listopada 2015 przez adrian17
Nic nie rób, ze switchem wszystko jest ok. Zgadzam się z tą drugą odpowiedzią, że prawdopodobnie chodzi o coś z działaniem getch().

Spróbuj cout'ować "wybor". (cout << (int)wybor;) Strzelam że wpadł tam znak entera (nowej linii).
komentarz 3 listopada 2015 przez niezalogowany
Też tak coś myślałem z tym enterem, ale kod jest (chyba) taki sam jak w kursie Pana Zet, więc nic o tym nie mówiłem.
komentarz 3 listopada 2015 przez adrian17 Ekspert (344,860 p.)
Dobra, mój strzał że to z curses jest rzecz. On normalnie jest stworzony do pełnych interfejsów konsolowych i z tego co widzę powinno się go używać dopiero po wywołaniu initscr();. I faktycznie, wtedy łapanie inputu działa, ale z kolei przestaje działać poprawnie u mnie endl... coś, curses pewnie nie lubi gdy cokolwiek innego niż on próbuje pisać na ekran.

Sugestia moja: zignoruj getch(). To nie jest częścią standardu C++ i zawsze był bolesnym punktem zarówno na Windowsie jak i na Linuxie, a wszystko tylko dlatego że komuś się nie chce wcisnąć głupiego entera.
komentarz 3 listopada 2015 przez damiang Nowicjusz (160 p.)

To miejsce:

 

cout << endl;
    wybor=getch();

 

Ma wyglądać tak?

 


    cout << endl;
    wybor=getch();
    cout << (int)wybor;

 

komentarz 3 listopada 2015 przez adrian17 Ekspert (344,860 p.)
Tak; pewnie dostaniesz -1, jak ja. Patrz moja najnowsza odpowiedź wyżej.

Podobne pytania

0 głosów
2 odpowiedzi 2,142 wizyt
pytanie zadane 4 października 2015 w C i C++ przez WWOTEX Mądrala (6,200 p.)
0 głosów
1 odpowiedź 809 wizyt
0 głosów
2 odpowiedzi 327 wizyt

92,580 zapytań

141,432 odpowiedzi

319,665 komentarzy

61,965 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...