Prosty program nie działa w pożądany sposób

0

Już nad tym się głowie wiele godzin
mam taki kod

#include<iostream>
int main()

{
	using namespace std;
	int ktory;
	int i = 4;
	cout << "Panie Kapitanie co robic, spadamy!" << endl;
	cout << "Co mamy sprawdzic w pierwszej kolejnosci?!" << endl;
	cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
	cout << "Wybieram: ";

	cin >> ktory;


	while (i >= 0 || ktory != 5)
	{
		

			switch (ktory)
			{
			case 1:
				i = i - 1;
				cout <<"Zostaly nam juz tylko " << i <<" szanse"<< endl;
				cout << "Kapitanie to nie silniki dalej spadamy!" << endl;
				cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
				cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
				cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[45]" << endl;
				cout << "Wybieram: ";
				cin >> ktory;
				break;
			case 2:
				i = i - 1;
				cout << "Zostaly nam juz tylko " << i << " szanse" << endl;
				
				cout << "Kapitanie to nie stery dalej spadamy!" << endl;
				cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
				cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
				cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
				cout << "Wybieram: ";
				cin >> ktory;
				break;

			
			case 3:
				i = i - 1;
				cout << "Zostaly nam juz tylko " << i << " szanse" << endl;

				cout << "Kapitanie to nie radar dalej spadamy!" << endl;
				cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
				cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
				cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
				cout << "Wybieram: ";
				cin >> ktory;
				break;

				case 4:
				i = i - 1;
				cout << "Zostaly nam juz tylko " << i << " szanse" << endl;

				cout << "Kapitanie to nie elektryka dalej spadamy!" << endl;
				cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
				cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
				cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
				cout << "Wybieram: ";
				cin >> ktory;
				break;

				case 5:
				cout << "Swietny pomysl kapitanie to bylo to nabieramy wysokosci!" << endl;
				break;
		
			default:
				break;
			}
			//break;
	}
	
	if (ktory == 5)
	{
		cout << i;
	}
	else
	{

		cout << "Nie udalo nam sie naprawic to juz koniec!" << endl;
	}
	system("pause");


} 

I on teoretycznie ma pytać użytkownika co naprawić i jeśli się okaże, że użytkownil wybrał zła odpowiedz zabiera mu życie. Problem w tym, że gdy życie dochodzi do 0, i tak pętla dalej działa

Panie Kapitanie co robic, spadamy!
Co mamy sprawdzic w pierwszej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 1
Zostaly nam juz tylko 3 szanse
Kapitanie to nie silniki dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[45]
Wybieram: 2
Zostaly nam juz tylko 2 szanse
Kapitanie to nie stery dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 3
Zostaly nam juz tylko 1 szanse
Kapitanie to nie radar dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 4
Zostaly nam juz tylko 0 szanse
Kapitanie to nie elektryka dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 4
Zostaly nam juz tylko -1 szanse
Kapitanie to nie elektryka dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram:

Proszę bardzo o pomoc, bo czegoś nie rozumiem a pewnie to głupota

0

Zły warunek w while?
teraz - jeśli jest spełnione którykolwiek z warunków - to działa.

1
while (i >= 0 && ktory != 5)
0

Niestety dalej mam to samo

 #include<iostream>
int main()

{
	using namespace std;
	int ktory;
	int i = 3;
	cout << "Panie Kapitanie co robic, spadamy!" << endl;
	cout << "Co mamy sprawdzic w pierwszej kolejnosci?!" << endl;
	cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
	cout << "Wybieram: ";

	cin >> ktory;


	while (i >= 0 && ktory != 5)
	{


		switch (ktory)
		{
		case 1:
			i = i - 1;
			cout << "Zostaly nam juz tylko " << i << " szanse" << endl;
			cout << "Kapitanie to nie silniki dalej spadamy!" << endl;
			cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
			cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
			cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[45]" << endl;
			cout << "Wybieram: ";
			cin >> ktory;
			break;
		case 2:
			i = i - 1;
			cout << "Zostaly nam juz tylko " << i << " szanse" << endl;

			cout << "Kapitanie to nie stery dalej spadamy!" << endl;
			cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
			cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
			cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
			cout << "Wybieram: ";
			cin >> ktory;
			break;


		case 3:
			i = i - 1;
			cout << "Zostaly nam juz tylko " << i << " szanse" << endl;

			cout << "Kapitanie to nie radar dalej spadamy!" << endl;
			cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
			cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
			cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
			cout << "Wybieram: ";
			cin >> ktory;
			break;

		case 4:
			i = i - 1;
			cout << "Zostaly nam juz tylko " << i << " szanse" << endl;

			cout << "Kapitanie to nie elektryka dalej spadamy!" << endl;
			cout << "Panie Kapitanie dalej spadamy co robic, !" << endl;
			cout << "Co mamy sprawdzic w nastepnej kolejnosci?!" << endl;
			cout << "Silniki[1]\nStery[2]\nRadar[3]\nHydraulike[4]" << endl;
			cout << "Wybieram: ";
			cin >> ktory;
			break;

		case 5:
			cout << "Swietny pomysl kapitanie to bylo to nabieramy wysokosci!" << endl;
			break;

		default:
			break;
		}
		//break;
	}

	if (ktory == 5)
	{
		cout << "Swietny pomysl kapitanie to bylo to nabieramy wysokosci!" << endl;
	}
	else
	{

		cout << "Swietny pomysl kapitanie to bylo to nabieramy wysokosci!" << endl;
	}
	system("pause");


}
Panie Kapitanie co robic, spadamy!
Co mamy sprawdzic w pierwszej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 1
Zostaly nam juz tylko 2 szanse
Kapitanie to nie silniki dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[45]
Wybieram: 2
Zostaly nam juz tylko 1 szanse
Kapitanie to nie stery dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 3
Zostaly nam juz tylko 0 szanse
Kapitanie to nie radar dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram: 4
Zostaly nam juz tylko -1 szanse
Kapitanie to nie elektryka dalej spadamy!
Panie Kapitanie dalej spadamy co robic, !
Co mamy sprawdzic w nastepnej kolejnosci?!
Silniki[1]
Stery[2]
Radar[3]
Hydraulike[4]
Wybieram:

Bo generalnie mamy dwa warunki wyjścia z pętli

  1. Gdy będzie zero szans albo
    Gdy wybierze się liczbę 5

Tak w teorii

zamiana znacznika <quote> na <code class="none"> - @furious programming

0
while (i >= 0 && ktory != 5)
{
    switch (ktory)
    {
    case 1:
        i = i - 1;

Jeśli i == 0 to nadal wchodzisz do pętli, potem zmniejszasz i dopiero potem wypisujesz i, przez co masz -1. Wywal te i = i -1 ze wszystkich case. Wystarczy raz --i na samym końcu pętli while.

1

tak, tylko wypisujesz inna wartość niz wcześniej sprawdzasz, więc wyjdzie dopiero, gdy pokaże
"Zostaly nam juz tylko -2 szanse"

0

Ok super teraz już wszystko rozumiem. Dziękuje:)

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