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

question-closed Pobieranie jednego znaku char do switcha.

0 głosów
97 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez Łukasz Wasilewski Gaduła (4,210 p.)
zamknięte 17 grudnia 2015 przez Łukasz Wasilewski

Dobry wieczór,

żeby zadać pytanie najpierw pokażę kod:

void SI::levSI()
{
	bool goodChoice=false;
	while (!goodChoice)
	{
		cout << endl << "Podaj poziom trudnosci [e(asy), n(ormal), h(ard)]";
		char l2;
		cin >> l2;
		char l = getchar();
		switch (l2)
		{
		case 'e':
		case 'E': player::lev_si='e';
			goodChoice = true;
			break;
		case 'm':
		case 'M': player::lev_si='m';
			goodChoice = true;
			break;
		case 'h':
		case 'H': player::lev_si='h';
			goodChoice = true;
			break;
		default: cout << "Zla odpowiedz, zapytam ponownie" << endl;
			break;
		}
	}
}

Problem polega na tym, że muszę pobrać jedynie jeden znak. Funkcja działa i ten znak pobiera, ale gdy napiszę np: "eqqe", to zapisuje pierwszy znak, ale mimo to wypisuje "Zla odpowiedz(...)", co psuje mi estetykę programu.

Myślę, że jeszcze nie raz trafię na ten problem dlatego uznałem, że zamiast go ominąć poszukam odpowiedzi.  
 

EDIT: Zapomniałem dodać, że próbowałem zarówno cin, cin.get(char) - podkreśla mi char w nawiasie i nie kompiluje, oraz getchar(). Żaden z tych sposobów nie działa.

komentarz zamknięcia: Problem rozwiazany

1 odpowiedź

+2 głosów
odpowiedź 17 grudnia 2015 przez Józef Gaduła (3,120 p.)
wybrane 28 grudnia 2015 przez Łukasz Wasilewski
 
Najlepsza

Skorzystaj z biblioteki conio.h i wpisz w kodzie:
 

char l2;
l2 = getch();


Teraz program będzie pobierał pojedynczy znak.

P.S. Staraj się nie używać na początku nazw zmiennych małej literki l, ponieważ jest ona podobna do cyfry 1. Trochę to utrudnia czytanie kodu.

komentarz 17 grudnia 2015 przez Eryk Andrzejewski VIP (101,370 p.)
Co do tego P.S.

Owszem, literka l jest podobna do 1, ale należy pamiętać, że nazwy zmiennych nie mogą się zaczynać od cyfr, więc nie powinno być z tym problemu :) Pozdrawiam.
komentarz 17 grudnia 2015 przez Józef Gaduła (3,120 p.)
Oczywiście, że nie mogą i takie ich wykorzystanie nie jest błędem. Chodziło mi jedynie o to, że wpływają negatywnie na czytelność kodu. Przy tak krótkich programach nie ma to znaczenia, ale przy większych może okazać się kłopotliwe.
komentarz 17 grudnia 2015 przez Łukasz Wasilewski Gaduła (4,210 p.)
Rozwiązanie działa, dziękuję za pomoc. Uwagę odnośnie nazewnictwa zmiennych jak najbardziej wezmę do siebie. :)

Podobne pytania

0 głosów
1 odpowiedź 37 wizyt
pytanie zadane 11 stycznia w C i C++ przez Revane Początkujący (310 p.)
0 głosów
1 odpowiedź 231 wizyt
pytanie zadane 15 grudnia 2015 w C i C++ przez pineapple505 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 46 wizyt
pytanie zadane 19 grudnia 2016 w C i C++ przez R4leY Nowicjusz (180 p.)
Obowiązuje już zaktualizowany regulamin.

Czy wiesz, że nie musisz już odświeżać strony głównej?

Lista pytań i odpowiedzi aktualizuje się automatycznie!

38,630 zapytań

76,520 odpowiedzi

149,461 komentarzy

18,082 pasjonatów

Przeglądających: 254
Pasjonatów: 24 Gości: 230

Motyw:

Akcja Pajacyk

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

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

...