Użycie funkcji niestandardowej funkcji kbhit()

0

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?

prbl.png

0

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.

0

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

0

@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

0

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

0

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ą

2

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.

  1. 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"

  2. Nie wiem czy dobrze rozumiesz jak działa break wewnątrz switch - wg mojej wiedzy nie przerywa pętli.

1 użytkowników online, w tym zalogowanych: 0, gości: 1