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

VPS Starter Arubacloud
0 głosów
475 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez Łukasz Wasilewski Mądrala (5,190 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 Mądrala (5,200 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 Mędrzec (164,260 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 Mądrala (5,200 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 Mądrala (5,190 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ź 211 wizyt
pytanie zadane 11 stycznia 2017 w C i C++ przez Revane Początkujący (310 p.)
0 głosów
2 odpowiedzi 233 wizyt
pytanie zadane 28 lipca 2015 w C i C++ przez Skoroś Rose Nowicjusz (170 p.)
0 głosów
1 odpowiedź 3,365 wizyt
pytanie zadane 15 grudnia 2015 w C i C++ przez pineapple505 Nowicjusz (120 p.)

92,451 zapytań

141,261 odpowiedzi

319,073 komentarzy

61,853 pasjonatów

Motyw:

Akcja Pajacyk

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

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...