[C++] Problem z komplikacją


(system) #1

Witam!

Od jakiegoś czasu grzebię w C++ i zapragnąłem napisać w konsoli prostą grę jaką jest O i X. Kod napisany i naglę IDE wypluwa błąd:

Używam Code::Blocks z minigw na windowsie.

Fragment kodu, którego dotyczy błąd:

if (string[1] == string[2] == string[3] == "O")

    {

        a=0;

        std::cout<<"Człowiek zwyciężył!";

    }

Wybaczcie jeżeli gdzieś popełniłem czeski błąd, ale mózg mam tak zlasowany wszelakim debugowaniem, że mogło mi się coś przemknąć.


(Sawyer47) #2

W C++ coś takiego należy zapisać jako koniunkcję pojedynczych porównań: A == B && A == C && …


(Rolek0) #3

W C++ nie można robić złożonych porównań. Z porównania string[1] == string[2] wychodzi wartość logiczna prawda/fałsz (true/false), która nie moze być porównana ze string[3].

Powinieneś zrobić w ten sposób

if(string[1] == "O" && string[2] == "O" && string[3] == "O")

Przy czym string jest tablicą stringów (trochę niefortunnie dobrałeś nazwę, ale niech ci będzie), jednak dla kólka i krzyżyka lepiej po prostu użyć tablicy znaków, bo i tak będziesz przechowywał w każdym polu jeden znak (mam rację?).

Podstawy C++ http://darkcult.nazwa.pl/wiki/index.php/C%2B%2B

Dłuższy tutorial http://xion.org.pl/productions/texts/coding/megatutorial/

Polecam również http://www.youtube.com/user/GynvaelColdwind/videos?view=1 ogólnie o programowaniu i innych rzeczach.

Miłej zabawy :smiley:


(system) #4

Dzięki za odpowiedzi!

Programuje w C++(i w ogóle) od całkiem niedawna, więc nie czytałem jeszcze dokumentacji, tylko kursy. Dzięki za linki i wytłumaczenie w czym rzecz.