Problem z if/else if.

0

Siedziałem i szukałem rozwiązania i nic nie dało efektu. Nie ważne czy wpiszę "TAK" Lub "NIE" zawsze wykonuje się if z zakresu "Tak", a else if "Nie" jest pomijany.
Drugi problem to fakt, że podczas resetu gry kiedy wpiszę jakąkolwiek cyfrę program się resetuje. W jaki sposób mogę w tym fragmencie kodu zablokować liczby?
Jestem świadomy, że to "śmieszne" problemy, ale uczę się trzeci dzień.

 #include <iostream>
#include <cstdlib>
#include <ctime>
#include <windows.h>
#include <string>


using namespace std;

int liczba, losowanie;
int licznik = 1;
string wybor1;


void zlaLiczba()
{
	if (liczba > 20)
	{
		cout << "Wybrana Liczba Wykracza Po Za Zakres Liczb!" << endl;
	}
}


int main() 
{
	do
	{
		do
		{
			srand(time(NULL));
			cout << "Gra w Liczby! Zakres Liczb Od 1 Do 10" << endl;
			cout << "Prosze Podac Wybrana Liczbe : ";
			cin >> liczba;
			zlaLiczba();
			losowanie = ((rand() % 3) + 1);
			if (liczba == losowanie)
			{
				cout << "========================================" << endl;
				cout << "Gratuluje! Twoja Liczba Jest Poprawna!" << endl;
				cout << "Szczesliwa Liczbe Trafiles Za " << licznik << " Razem!" << endl;
				cout << "Byla To Liczba Numer : " << losowanie << endl;
				cout << "========================================" << endl << endl;
			}
			else if (liczba != losowanie)
			{
				cout << "Sprobuj Szczescia Podnownie! " << endl;
				Sleep(1000);
				system("cls");
				licznik++;
			}
		} while (liczba != losowanie);

		cout << "Czy Chcesz Zresetowac Gre? Wybierz [Tak] lub [Nie]" << endl;
		cout << "Wybor : ";
		cin >> wybor1;

		if (wybor1 == "Tak" || "TAK" || "tak")
		{
			cout << "Restartuje Gre!" << endl;
			Sleep(1000);
			system("cls");
		}
		else if (wybor1 == "Nie" || "NIE" || "nie")
		{
			exit(0);
		}
	} while (wybor1 == "Tak" || "TAK" || "tak");
	system("pause");
	return 0;
}
3

if(wybor1 == "Tak" || "TAK" || "tak")

Nie możesz tak - musisz trzy razy porównać zmienną do literału:

if(wybor1 == "Tak" || wybor1 == "TAK" || wybor1 == "tak")

A tak na marginesie - użyj jakiejś funkcji, która zmieni wielkość znaków w ciągu np. na małe litery i dopiero wtedy porównuj; Dzięki temu wystarczy przyrównanie tylko do jednego literału.

1

Wydaje mi się, że (wybor1 == "Tak" || "TAK" || "tak") to to samo co (wybor1 == "Tak" || true || true)

0

Poza tym, co napisał furious, to nie robi się tak. A jeśli użytkownik wpisze: "TaK", to co się stanie? Program się wyłączy. To, co wpisze użytkownik powinieneś zamienić np. na małe litery i potem masz już tylko porównanie:

 if(wybor1 == "tak")
{

}

1 użytkowników online, w tym zalogowanych: 0, gości: 1