• 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
89 wizyt
pytanie zadane 17 grudnia 2015 w C i C++ przez użytkownika Łukasz Wasilewski Gaduła (4,130 punkty)
zamknięte 17 grudnia 2015 przez użytkownika Ł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 użytkownika Józef Gaduła (3,000 punkty)
wybrane 28 grudnia 2015 przez użytkownika Ł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 użytkownika Eryk Andrzejewski Maniak (74,890 punkty)
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 użytkownika Józef Gaduła (3,000 punkty)
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 użytkownika Łukasz Wasilewski Gaduła (4,130 punkty)
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ź 35 wizyt
pytanie zadane 6 dni temu w C i C++ przez użytkownika Revane Początkujący (250 punkty)
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 24 grudnia 2016 w C i C++ przez użytkownika pawlos2013 Początkujący (270 punkty)
0 głosów
1 odpowiedź 133 wizyt
pytanie zadane 15 grudnia 2015 w C i C++ przez użytkownika pineapple505 Nowicjusz (120 punkty)
...