[C++]Funkcja zwraca niepoprawną wartość


(Kalin 93) #1

Mam problem mianowicie funkcja mimo że żaden warunek nie został spełniony zwraca wartość 1 a powinna 0

int ZwyciestwoRemis (unsigned short aPlansza [3] [3])

{

    bool bGracz1Wygrana = false , bRemis = false , bGracz2Wygrana = false , ;

    unsigned nTemp = 0;

    for (unsigned short i = 0 ; i <= 2 ; i++)

    {

        nTemp = (aPlansza [i] [0] + aPlansza [i] [1] + aPlansza [i] [2])/3;

        if (nTemp == 1) bGracz1Wygrana = true;

        if (nTemp == 2) bGracz2Wygrana = true;

    };

    if (bGracz1Wygrana == false && bGracz2Wygrana == false)

    {

                       for (unsigned short i = 0 ; i <= 2 ; i++)

                       {

                           nTemp = (aPlansza [0] [i] + aPlansza [1] [i] + aPlansza [2] [i])/3;

                           if (nTemp == 1) bGracz1Wygrana = true;

                           if (nTemp == 2) bGracz2Wygrana = true;

                       };

    };

    if (bGracz1Wygrana == false && bGracz2Wygrana == false)

    {

                       nTemp = (aPlansza [0] [0] + aPlansza [1] [1] + aPlansza [2] [2]) / 3;

                       if (nTemp == 1) bGracz1Wygrana = true;

                       if (nTemp == 2) bGracz2Wygrana = true;

    };

    if (bGracz1Wygrana == false && bGracz2Wygrana == false)

    {

                       nTemp = (aPlansza [2] [0] + aPlansza [1] [1] + aPlansza [0] [2]) / 3;

                       if (nTemp == 1) bGracz1Wygrana = true;

                       if (nTemp == 2) bGracz2Wygrana = true;

    };

    if (bGracz1Wygrana = true) return 1;

    if (bGracz2Wygrana = true) return 2;

}

(Fiołek) #2

Jak to żaden warunek nie jest spełniony? Jest, ten od "return 1". Tam masz PRZYPISANIE a powinieneś mieć PORÓWNANIE.


(Kalin 93) #3

Aaa faktycznie :wink: Dzięki tak to jest jak sie pisze programy niewyspanym :wink:


(Sawyer47) #4

Dlatego jeżeli porównujesz jakąś wartość z literałem to dobrze stawiać literał po prawej, wtedy kompilator zgłosi błąd. W tym wypadku:

if( true == zmienna ) // jeżeli przez pomyłkę dasz przypisanie kompilator zgłosi błąd

(Fiołek) #5

Lub zaopatrzyć się w kompilator który rzuca błędy w takim wypadku. Visual C++ z /W4 wyświetla ostrzeżenie.