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

Ultraszybki serwer VPS NVMe BIZNES
0 głosów
112 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez Łukasz Wasilewski Gaduła (4,490 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,160 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 (128,400 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,160 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,490 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ź 41 wizyt
pytanie zadane 11 stycznia 2017 w C i C++ przez Revane Początkujący (310 p.)
0 głosów
1 odpowiedź 361 wizyt
pytanie zadane 15 grudnia 2015 w C i C++ przez pineapple505 Nowicjusz (120 p.)
0 głosów
2 odpowiedzi 129 wizyt
pytanie zadane 28 lipca 2015 w C i C++ przez Skoroś Rose Nowicjusz (170 p.)
Porady nie od parady
Forum posiada swój własny chat IRC, dzięki któremu będziesz mógł po prostu pogadać z innymi Pasjonatami lub zapytać o jakiś problem. Podstrona z chatem znajduje się w menu pod ikoną człowieka w dymku.
Ciekawy innych porad? Odwiedź tę stronę!

44,274 zapytań

84,080 odpowiedzi

167,405 komentarzy

21,187 pasjonatów

Przeglądających: 336
Pasjonatów: 24 Gości: 312

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.

...