[C++] Operator logiczny "albo"

Awatar użytkownika
Ceplusplusik
Użytkownik
Użytkownik
Posty: 228
Rejestracja: 7 paź 2012, o 17:02
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 94 razy

[C++] Operator logiczny "albo"

Post autor: Ceplusplusik »

Witam. Zamieszczam część mojego kodu obliczającego rodzaj trójkąta:

Kod: Zaznacz cały

#include <iostream>
#include <cmath>
using namespace std;

int main ()
{	
	double bokA,bokB,bokC;
	
	cout << "Podaj dlugosc boku A: "; cin>>bokA;
	cout << "Podaj dlugosc boku B: "; cin>>bokB;
	cout << "Podaj dlugosc boku C: "; cin>>bokC;
	
	
	if (bokC==bokB==bokA)
	{
		cout << "Z podanych bokow mozna zbudowac trojkat rownoboczny." << endl;
		return 0;
	}
	
	else 
	if (pow(bokA, 2)+pow(bokB, 2)==pow(bokC, 2) || pow(bokB, 2)+pow(bokC, 2)==pow(bokA, 2) || pow(bokA, 2)+pow(bokC, 2)==pow(bokB, 2) )
	{
		cout << "Z podanych bokow mozna zbudowac trojkat prostokatny." << endl;
		return 0;
	}
	
	else
	if (bokA==bokB || bokB==bokC || bokC==bokA)
	{
		cout << "Z podanych bokow mozna zbudowac trojkat rownoramienny." << endl;
		return 0;
	}
	
	else cout << "Z podanych bokow mozna utworzyc jedynie trojkat roznoboczny. " << endl;
	return 0;
	
}
Czego nie znalazłem? Otóż potrzebny jest mi operator "albo" (na matematyce był, w C++ już nie sposób do dopatrzeć, a przynajmniej nie spotkałem się), który w przypadku trójkąta równoramiennego określi, czy:

Kod: Zaznacz cały

if (bokA==bokB albo bokB==bokC albo bokC==bokA)
W przypadku operatora "lub" niestety program uznaje również trójkąty równoboczne jako równoramienne, bo te też spełniają warunki odnośnie powyższego z operatorem ||. To pierwsza rzecz, druga: dziwi mnie, że Dev-C++ interpretuje to w taki sposób (mimo wszystko), jeśli w pierwszej kolejności powinien zakończyć program, kiedy pojawią się przykładowo liczby: 2,2,2. Co się z kolei dzieje? W przypadku wpisania liczb 1,1,1 - owszem - wyświetla się trójkąt równoboczny, natomiast w przypadku każdej innej większej "trójcy" (3,3,3; 4,4,4) program wskazuje już na trójkąt równoramienny. Proszę o pomoc, pozdrawiam .
Afish
Moderator
Moderator
Posty: 2828
Rejestracja: 15 cze 2008, o 15:45
Płeć: Mężczyzna
Lokalizacja: Seattle, WA
Podziękował: 3 razy
Pomógł: 356 razy

[C++] Operator logiczny "albo"

Post autor: Afish »

Nie ma logicznego operatora "albo", aby taki uzyskać musisz stosować tożsamość :
\(\displaystyle{ a \text{ albo } b = (a \wedge \neg b ) \vee ( \neg a \wedge b)}\)
Awatar użytkownika
Ceplusplusik
Użytkownik
Użytkownik
Posty: 228
Rejestracja: 7 paź 2012, o 17:02
Płeć: Mężczyzna
Lokalizacja: Kraków
Podziękował: 94 razy

[C++] Operator logiczny "albo"

Post autor: Ceplusplusik »

W porządku, dzięki . Pozdrawiam.
ODPOWIEDZ