Mały problemik z wprowadzaniem z klawiatury [C++]

(Konrad12315) #1

Witam mam taki problem:

void Ponow()

{

	int nPonow;

	std::cout << "Chcesz zagrać jeszcze raz?: [t/n]";

	std::cin >> nPonow;


	if(nPonow=='t')

	{

		Pytanie1();

	}

	else

	{

		cout << "Naciśni dowolny klawisz, by zakończyć.";

		getch();

	}

}

Nie wiem jak zrobić, żebym mógł używać przyciski z klawiatury.

Gdy uruchamiam program wciskam t następuje przejście do else…

Z góry dziękuje za pomoc :>

(Sawyer47) #2

I w czym problem? Jedynie daj typ char a nie int, czyli char nPonow i działa dobrze.

(Szczepanskimarek) #3

I będzie przechodził do else bo chcesz porównać liczbę do znaku (rzutujesz z chara na int).

Typ zmiennej nPonow to int a powinien być char lub porównanie do liczny 116 (kod ascii malej litery ‘t’)

(mi14chal) #4

No to tak musi to wyglądać:

void Ponow()

{

char nPonow;

   cout << "Chcesz zagrać jeszcze raz?: [t/n]";

   cin >> nPonow;

   switch(nPonow)

   {

                 case 't':

                      cout << "gramy jeszcze raz\n";

                      system("pause");

                      break;

                 default:

                         cout << "Naciśni dowolny klawisz, by zakończyć.";

      getch();

      break;

}

}
(Konrad12315) #5

Hmmm jeszcze bardziej to spaprałeś :wink:

Ciągle nie chce działać.

EDIT: Ok podstawiłem funkcje zamist system pause i działa :smiley:

Dzięki

(Fiołek) #6

Zamiast “int nPonow;” powinno być “char nPonow;”. Istream nie przypisze do zmiennej typu int litery.

(Sawyer47) #7

Czy ten kod też ci się nie kompiluje? Sprawdź, pokaż jakie błędy wypluwa kompilator.

#include 


void ponow() {

   char nPonow;

   std::cout << "Chcesz zagrać jeszcze raz? [t/n] ";

   std::cin >> nPonow;


   if( 't' == nPonow ) {

      std::cout << "Ok\n";

   }

   else {

      std::cout << "Koniec.";

   }

}


int main() {

	ponow();

}
(Konrad12315) #8

Już wszystko dobrze :slight_smile:

Dzięki za pomoc :slight_smile: