Może, ktoś mi pomoże bo nie mogę sobie z tym poradzić. Mam takie polecenie:
"Opracować program, który wyprowadza na ekran kod wciśniętego klawisza. Uwzględnić
klawisze specjalne, np. F1, F2, strzałki. Podać kody klawiaturowe strzałek i F1-F10." I doszedłem do czegoś takiego:
#include
using namespace std;
int main(){
char a;
cin>>a;
cin.ignore();
cout << (int)a << endl;
getchar();
return 0;
}
I nie mogę w żadnej książce/necie znaleść nic pomocnego co by powodowało wczytywanie klawiszy specjalnych(F1,F2, strzałki itd.) Drugi problem jaki mam może jest troche głupi i szkolny albo jednak okaże się czymś poważniejszym.
#include
using namespace std;
int main()
{
int a;
do
{
printf("Napisz liczbe: \n");
}while(scanf("%d",&a) == 0);
system("PAUSE");
}
Jest to fragment większego programu. Jeśli zostanie wpisana liczba program idzie dalej, jesli zostanie litera, ma jeszcze raz wypisać polecenie do wpisania liczby. Problem polega na dwóch rzeczah. Pętla nie chce się zatrzymac jak sie wpisze litere i napis leci w nieskonczonosc, a drugi jest taki ze jesli wpiszemy np. 1s albo 2sdsd2 to on to traktuje jako liczbe 0 a nie jako blad. Jakby ktos moglby cos mi doradzic, albo gdzie szukac porad byłbym bardzo wdziezny.
Dodam tylko, że klawisze funkcyjne i strzałki mają kod złożony. Oznacza to, że wciśnięcie strzałki pokaże znak o kodzie zero a później kod strzałki, który odpowiada literze h, j, k albo l (jeśli mnie pamięć nie myli). Więc jeśli chcesz odczytać znaki specjalne, potrzebujesz czegoś na kształt:
{
int ch = 0;
while (ch = getch())
{
if (ch == 0)
{
ch = getch();
printf("Znak specjalny: %d", ch);
}
else
printf("Znak zwykly: %d", ch);
}
}
Potrzebujesz jeszcze specjalny przypadek dla entera, który wysyła kod 10 i kod 13.