• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

petla do-while, powtarzajacy sie printf

0 głosów
153 wizyt
pytanie zadane 14 marca 2020 w C i C++ przez Deny Nowicjusz (140 p.)
 do{
    scanf("%c",&wybor);
    if(!(wybor=='A' || wybor=='B'))
    {
        printf("Upsss.. tej opcji nie ma w menu, sprobuj jeszcze raz! ");
    }
    }while(!(wybor=='A' || wybor=='B'));

Czy mógłby ktoś mi pomoc z pewną rzecza? Otóż chodzi mi o to aby użytkownik podał prawidłową litere żeby przejść dalej, gdy zastosowałem taki kod to wtedy printf wyskakuje mi co najmniej 2 razy a gdy dam np. "asdasd" zamiast 'A' to wypisze mi w konsoli kilka dobrych razy printf a chciałbym żeby tylko raz wyskoczyla ta informacja i można było znowu wpisac jakąś litere 

1 odpowiedź

0 głosów
odpowiedź 14 marca 2020 przez Piotr Płatos Bywalec (2,380 p.)
Dzieje się tak dlatego ponieważ po kliknięciu klawisza enter sczytywane są dwa znaki do bufora: klawisz który kliknąłeś i enter.

Przykładowo klikasz znak 'x' na klawiaturze i zatwierdzasz enterem. Do bufora sczytane są znaki 'x' i znak entera. Ponieważ oba nie są równe 'A' ani 'B' to tekst wyświetla się dwa razy(po razie dla jednego i drugiego klawisza). Problem można rozwiązać np używając instrukcji getch()
komentarz 14 marca 2020 przez Deny Nowicjusz (140 p.)
Uzylem instrukcji getch(), wpisuje np. 'd' wyswietla raz komunikat, ale gdy probuje wpisac kolejna litere to komunikat znowu się powiela
komentarz 14 marca 2020 przez Piotr Płatos Bywalec (2,380 p.)
Będzie się pojawiać tyle razy ile razy podasz błędną literę, czy chciałbyś aby pojawił się maksymalnie raz? Bez względu na to ile razy podasz błędną literę?
komentarz 14 marca 2020 przez Deny Nowicjusz (140 p.)
Chciałym aby mniej więcej tak to wyglądało:

Podaje błędą literę wyskakuje komunikat i mam możliwość wpisania kolejnej litery jeżeli będzie błędna to chce aby komunikat pojawił się jeszcze raz załóżmy od nowej linii

Bo teraz wpisuje bledna litere i wyskakuje komunikat ale nie mam możliwości wpisania drugiej litery bo od razu po kliknieciu byle czego wyskakuje drugi raz komunikat
komentarz 14 marca 2020 przez Piotr Płatos Bywalec (2,380 p.)
Wystarczy dodać endl aby następny komunikat wyświetlił się w nowej linii. Teraz masz możliwość podania dobrej litery i też nie wyskoczy Ci komunikat. To już działa, spróbuj.
komentarz 14 marca 2020 przez Deny Nowicjusz (140 p.)
Nie rozumiemy się:D dla poprawnych liter wszystko działa, ale nadal są sczytywane 2 znaki bo klikam 'd' wypisuje printf i teraz powinna być możliwość wpisania kolejnej litery a takowej nie ma mimo ze kursor miga to po kliknieciu np. 'A' (A jest poprawne)lub nawet entera czy jakiego kolwiek znaku pojawia się znowu printf bez sprawdzenia czy dana litera jest poprawna
komentarz 14 marca 2020 przez Piotr Płatos Bywalec (2,380 p.)
Ja Cię rozumiem, tylko musiałeś coś źle napisać. U mnie wszystko działa nawet jeżeli najpierw podasz złą literę a później poprawisz to zadziała(wyjdzie z pętli i nie wypisze już komunikatu). Pokaż swój kod.
komentarz 14 marca 2020 przez Deny Nowicjusz (140 p.)
 do{
   scanf("%c",&wybor);
   if(!(wybor=='A' || wybor=='B'))
   {
       printf("Upsss.. tej opcji nie ma w menu, sprobuj jeszcze raz! \n");
        getch();
   }
   }while(!(wybor=='A' || wybor=='B'));

 

komentarz 14 marca 2020 przez Piotr Płatos Bywalec (2,380 p.)
Chodziło mi o wczytanie wartości do zmiennej za pomocą instrukcji getch()

np:

 

char zmienna;

zmienna=getch();
komentarz 14 marca 2020 przez Deny Nowicjusz (140 p.)

@Piotr Płatos,
 dzięki wielkie już działa poprawnie

Podobne pytania

0 głosów
1 odpowiedź 242 wizyt
pytanie zadane 3 sierpnia 2019 w C i C++ przez Garper Początkujący (360 p.)
0 głosów
1 odpowiedź 292 wizyt
pytanie zadane 6 stycznia 2019 w C i C++ przez Kacper Lasota Początkujący (250 p.)
0 głosów
1 odpowiedź 211 wizyt

87,946 zapytań

136,527 odpowiedzi

304,410 komentarzy

58,313 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Sklep oferujący ćwiczenia JavaScript, PHP, rozmowy rekrutacyjne dla programistów i inne materiały

Oto dwie polecane książki warte uwagi. Pełną listę znajdziesz tutaj.

...