Użycie funkcji niestandardowej funkcji kbhit()

Użycie funkcji niestandardowej funkcji kbhit()
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
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.

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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

fasadin
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4883
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

KR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 7
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ą

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
2

Na końcu linii z kbhit daj klamerki, czyli:

Kopiuj
while(!kbhit()) 
{
...

zamień na:

Kopiuj
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.