Prosty kalkulator, warunki w pętli while

0
 #include <iostream>
#include <string>

using namespace std;

int main()
{
	double arg1, arg2;
	char znak;
	cout << "Podaj jakie chcesz wykonac dzialanie: " << endl;
	cin >> znak;
	while((znak!='-')||(znak!='+')||(znak!='/')||(znak!='*'))
	{
	cout << "Nie ma takiego dzialania, sprobuj jeszcze raz: " << endl;
	cout << "Podaj jakie chcesz wykonac dzialanie: " << endl;
	cin >> znak;
	}
	cout << "Podaj pierwsza liczbe: " << endl;
	cin >> arg1;
	cout << "Podaj druga liczbe: " << endl;
	cin >> arg2;
	if(znak=='+')
	{
		cout << "Wynik to: " << arg1+arg2 << endl;
	}
	else if(znak=='-')
	{
		cout << "Wynik to: " << arg1-arg2 << endl;
	}
	else if(znak=='*')
	{
		cout << "Wynik to: " << arg1*arg2 << endl;
	}
	else if(znak=='/')
	{
		cout << "Wynik to: " << arg1/arg2 << endl;
	}
	
	
	return 0;
}

Prosty kalkulator, gdy wpisze inny znak niż -,/,+,* pyta się użytkownika o ponowną próbę, jednak za każdym razem pokazuje, że jest zły znak, jak w warunku pętli podam tylko np. znak!='-' to wtedy program działa.

2

while((znak!='-')||(znak!='+')||(znak!='/')||(znak!='*')) Pomyśl dokładnie co robi ta linijka, Spróbuj podstawić za znak różne możliwości i zobacz, co jest z tym źle.

4

Dla uproszczonego przykładu:

while((znak!='-')||(znak!='+'))

dla czytelności: p = (znak!='-'), q = (znak!='+')

znak p q p or q
'-' false true true
'+' true false true
inne true true true

Zamień || na && i będzie ok, ale przydatne będzie jeśli będziesz rozumieć co się tam dzieje.

0
kq napisał(a):

Dla uproszczonego przykładu:

while((znak!='-')||(znak!='+'))

dla czytelności: p = (znak!='-'), q = (znak!='+')

znak p q p or q
'-' false true true
'+' true false true
inne true true true

Zamień || na && i będzie ok, ale przydatne będzie jeśli będziesz rozumieć co się tam dzieje.

Dzięki serdeczne, chyba w innych przykładach będę sobie po prostu rozpisywał na jakieś kartce warunki logiczne.

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