Witam,
Jestem bardzo początkująca w zakresie linuxa. Napisałam program pod windowsa, który działa i chciałam go przenieść na linuxa. Po wielu bojach udało mi sie go skompilować (bez errorów i warningów) ale niestety nie działa. Problem występuje z funkcją getch(). Doczytałam, że żeby konsola była w odpowiednim trybie należy użyć cbreak() ale to też nic nie zmienia.
Idea zadania jest prosta: wczytujemy znaczki (koniecznie "na bieżąco", bez zatwierdzania każdego kolejnego enterem), jeśli znak nie jest literą to wypisujemy stosowny komunikat. Mój kod wygląda następująco (3 pliki: main.cpp, head.h, literki.cpp)
main.cpp:
#include "head.h"
int main(){
char znak = 'a';
vector ciag;
while(znak){
cbreak();
znak = getch();
if(znak==13){
cout< break;
}
Lancuch X(znak);
try{
if(getFlag(X) == false) throw X;
cout< ciag.push_back(X);
}
catch(Lancuch& x){
cout< cin>>znak;
if(znak == 'n') break;
}
}
cout<<"Wprowadzone litery: "<for (int unsigned i = 0; i cout<< getChar(ciag[i]);
}
cout<}
literki.cpp
#include "head.h"
Lancuch::Lancuch(char lit){
if((lit>64 && lit<91)||(lit>96 && lit<123)){
flaga = true;
znak = lit;
}
else flaga = false;
}
bool getFlag(Lancuch& x){
return x.flaga;
}
char getChar(Lancuch& x){
return x.znak;
}
head.h
#ifndef hhead
#define hhead
#include
#include
#include
using namespace std;
class Lancuch{
protected:
bool flaga;
bool znak;
public:
Lancuch(char);
friend bool getFlag(Lancuch&);
friend char getChar(Lancuch&);
};
bool getFlag(Lancuch&);
char getChar(Lancuch&);
#endif
W wyniku dzialania programu dostaję od razu informację "to nie jest litera". Bez czekania na wprowadzenie jakichkolwiek danych przez użytkownika.
Czy ktoś mógłby mi podpowiedzieć jak rozwiązać ten problem?
Pozdrawiam
Mal.