Cześć, tak jak na załączonym zdjęciu staram się użyć kbhit(), jednak problem polega na tym, że program się zawiesza, używając debuggera doszedlem do tego, ze mimo, iż jest naciśnięcie klawiatury i do zmiennej "c" przypisywana jest wartość to pętla while nadal trwa, ktoś jakieś ponysły?
Wywołujesz getch
gdy masz pewność, że klawisz nie został naciśnięty (w ciele pętli wykonującej się gdy !kbhit()
). Nie ma to zbytnio sensu.
powinno to działać tak, że po naciśnięciu przycisku program wychodzi w tej pętli, w innym razie oczekuje na niego, tak przynajmniej zostało mi to wytłumaczone
http://stackoverflow.com/questions/15603082/how-to-use-kbhit-and-getch-c-programming
masz zly warunek. Nie powinno byc tam negacji
@fasadin prowadzący na uczelni napisał taki warunek na tablicy, co więcej kolega z roku tez ma taki i mu działa, załączam jego kod
a pomagam Tobie czy Twojemu znajomemu czy Twojemu prowadzacemu? Wpisz to co dostales ode mnie z linka i zobacz czy dziala, jezeli nie to napisz co dokladnie sie dzieje (z debuggerem)
a jestem na 95% pewien ze zadziala
znam tamten sposób, jednak jestem uparty i skoro wiem, że z takim warunkiem w while komuś działa zaczynam się zastanawiać dlaczego nie działa mi, nie zawsze drogra na skróty jest tą lepszą
Na końcu linii z kbhit daj klamerki, czyli:
while(!kbhit())
{
...
zamień na:
while(!kbhit()) {}
if (kbhit())
{
...
Dlaczego to Ci nie działa? Są dwie przyczyny.
-
masz zły warunek pętli.
Miało być: "dopóki nic nie wciśnięte, kręć się, potem odbierz znak".
Jest: "dopóki nic nie wciśnięte, odbieraj znaki" -
Nie wiem czy dobrze rozumiesz jak działa break wewnątrz switch - wg mojej wiedzy nie przerywa pętli.