Witam,
Uczę się C++ korzystając z Code::Blocks na systemie Linux (Ubuntu 14.04), ponieważ takie są wymagania rynkowe.
Walczę z tym systemem od 1 odcinka i w końcu napotkał mnie problem, którego nie jestem w stanie sam rozwiązać (ani znaleźć adekwatnej odpowiedzi).
Zastępcza biblioteka <gconio.h> nie działa (błędy w kodzie). Spróbowałem zamiast tego biblioteki <ncurses.h>, którą program wykrywa, ale wyświetla mi następujący błąd w linii z getch() :
undefined reference to `stdscr'
undefined reference to `wgetch'
To wszystko dzieje się w programie Menu Główne (Kurs C++ odc. 6). W przypadku zwykłego przypisania zmiennej za pomocą komendy cin wszystko działa poprawnie.
Chciałbym uprzejmie spytać się, czy w systemie Linux jest jakieś inne rozwiązanie od używania getch(); oraz jak to zrobić za pomocą biblioteki ncurses.h?
Głównie jestem zainteresowany wciśnięciem pojedyńczego przycisku bez wciskania klawisza Enter, aby wybrać jedną z opcji w Menu Głównym.
#include <iostream>
#include <stdio.h>
#include <cstdlib>
#include <ncurses.h>
using namespace std;
float x, y;
char wybor;
int main()
{
while (true)
{
cout << "Podaj 1 liczbe: ";
cin >> x;
cout << "Podaj 2 liczbe: ";
cin >> y;
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;
//cout << "Wybierz jedna z opcji: ";
//cin >> wybor;
//cout << endl;
cout << endl;
wybor=getch();
cout << endl;
switch (wybor)
{
case '1': cout << "Suma: "<< x+y << endl;
break;
case '2': cout << "Roznica: "<< x-y << endl;
break;
case '3': cout << "Iloczyn: "<< x*y << endl;
break;
case '4': cout << "Iloraz: "<< x/y << endl;
break;
case '5':
{
cin.ignore();
cout << endl << "Program zakonczy dzialanie..." << endl;
cin.get();
exit(0);
}
break;
default: cout << "Wybierz opcje 1,2,3,4 lub 5." << endl;
}
cin.ignore();
cout << endl << "Wcisnij ENTER, aby sprobowac ponownie..." << endl;
cin.get();
system("clear");
}
return 0;
}