Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Funkcja bool w prostym zadaniu

Ostatnio zmodyfikowano 2017-01-06 17:16
Autor Wiadomość
wokub
Temat założony przez niniejszego użytkownika
Funkcja bool w prostym zadaniu
» 2017-01-06 12:48:21
Witam. Mam jedno pilne zadanie i nie jestem pewny co robię źle z funkcją bool. Ktoś może mi podpowiedzieć? Byłbym wdzięczny. Z założenia bool czyKoniec ma być false na starcie. Dopóki pola nie są wypełnione, bool = false i powtarza się ruchy, gdy wszystkie pola zmienią się z " " na np "x", wtedy aplikacja się zamyka. Dodam, że ważne jest dla mnie utrzymanie tego formatu int main.

C/C++
#BIBLIOTEKI

bool czyKoniec = false;

int ruch( bool czyKoniec ) // JESLI WSZYSTKIE POLA SA WYPELNIONE, WTEDY PROGRAM SIE WYLACZA, INACZEJ GRA TRWA
{
   
    if( plansza[ 0 ][ 0 ] != " " && plansza[ 0 ][ 1 ] != " " && plansza[ 0 ][ 2 ] != " " && plansza[ 1 ][ 0 ] != " " && plansza[ 1 ][ 1 ] != " "
    && plansza[ 1 ][ 2 ] != " " && plansza[ 2 ][ 0 ] != " " && plansza[ 2 ][ 1 ] != " " && plansza[ 2 ][ 2 ] != " " );
   
    czyKoniec = true;
   
    return 1;
}
//GRACZ ETC SA W FUNKCJI, ALE JEST TO WAŻNE ZADANIE, WIĘC NIE CHCĘ, BY KTOS Z MEGO ROKU SKOPIOWAL CALE ZADANIE. NIE MA CO ROBIC SOBIE KONKURENCJI
//GRACZ PO WPISANIU DANYCH PÓL, NP 0 0 ZMIENIA " " NA "x"
int main()
{
    while( czyKoniec == false )
    {
        gracz();
    } while( !czyKoniec == false );
   
    return 0;
}

P-156084
mokrowski
» 2017-01-06 13:10:00
Masz tu takie błędy koncepcyjne że jak poprzednio (mam wrażenie że już pytałeś), nie wiem co odpowiedzieć poza: http://cpp0x.pl/kursy/Kurs-C++​/Poziom-2​/Funkcje-a-slowo-kluczowe-retu​rn​/339
P-156085
wokub
Temat założony przez niniejszego użytkownika
» 2017-01-06 13:12:52
Właśnie chciałem dopisać, mogłem doprecyzować zanim napisałem.
Po zmodyfikowaniu tego boola na coś w stylu tego poprzedniego pytania, mogę wykonać tylko jeden ruch. Nie chcę by bool mi blokował następne ruchy.
C/C++
bool czyKoniec() // JESLI WSZYSTKIE POLA SA WYPELNIONE, WTEDY PROGRAM SIE WYLACZA, INACZEJ GRA TRWA
{
    if( plansza[ 0 ][ 0 ] != " " && plansza[ 0 ][ 1 ] != " " && plansza[ 0 ][ 2 ] != " " && plansza[ 1 ][ 0 ] != " " && plansza[ 1 ][ 1 ] != " "
    && plansza[ 1 ][ 2 ] != " " && plansza[ 2 ][ 0 ] != " " && plansza[ 2 ][ 1 ] != " " && plansza[ 2 ][ 2 ] != " " )
         return 1;
    else
         return 0;
   
}

int main()
{
    do
    {
        gracz();
    } while( czyKoniec == 0 );
   
    return 0;
}
Czy może ten bool jest ok i powinienem szukać błędu w innej funkcji? Z tym, że działała ona przy poprzedniej wersji.
P-156086
czaffik
» 2017-01-06 13:14:22
1. Wygląda na to że kolega wokub wymyślił nową pętlę while do while, w której warunek wyjścia jest sprzeczny sam ze sobą xD A wystarczyłoby while (!czyKoniec).
2. W funkcji ruch niepotrzebnie zasłaniasz sobie zmienną globalną a wygląda na to że nie o to tutaj chodzi.
P-156087
wokub
Temat założony przez niniejszego użytkownika
» 2017-01-06 13:17:19
Mnie już się wszystko miesza. Java, HTML, Python, C++, C, Matlaby... Za dużo jak na 3 miesiące nauki :D Druga wersja jest lepsza pod względem wykonania? Powinienem iść w tym kierunku? Teraz tylko jak zrobić, aby działała. Cóż, lecę pokombinować. Nie wiem, może jednak w między czasie ktoś mi podpowie czy w tym drugim co napisałem, źle mam int main czy funkcję, że wyłącza mi program po jednym wykonaniu tego po ,,do { ... } while .. "

Aktualizacja :
C/C++
bool czyKoniec() // JESLI WSZYSTKIE POLA SA WYPELNIONE, WTEDY PROGRAM SIE WYLACZA, INACZEJ GRA TRWA
{
    if( plansza[ 0 ][ 0 ] != " " && plansza[ 0 ][ 1 ] != " " && plansza[ 0 ][ 2 ] != " " && plansza[ 1 ][ 0 ] != " " && plansza[ 1 ][ 1 ] != " "
    && plansza[ 1 ][ 2 ] != " " && plansza[ 2 ][ 0 ] != " " && plansza[ 2 ][ 1 ] != " " && plansza[ 2 ][ 2 ] != " " )
         return 1;
    else
         return 0;
   
}

int main()
{
    do
    {
        gracz();
    } while( czyKoniec != false );
   
    return 0;
}

Nie wyłącza się po jednym razie, jednak nadal funkcja nie działa. Nie ma błędów, ale gdy wypełnię wszystkie pola "x" czy komputerowym "o" (tak, jest tutaj SI), to i tak mogę dalej wpisywać. Co prawda mógłbym w funkcji gracz() zabronić sobie wypełniania pól już wypełnionych, ale niestety spytałem się ćwiczeniowca i wymaga on ode mnie zrobienia tego w bool

Kolejna aktualizacja:
W int main mam teraz takie coś :
C/C++
int main()
{
    bool czyKoniec = false;
   
    while( czyKoniec == false )
    {
        gracz();
    }
    return 0;
}


ale nadal nie włącza tej wcześniej napisanej funkcji. Czy byłby ktoś w stanie popatrzyć na tą funkcję u góry i powiedzieć mi, czy jest logiczna? Może tam coś walnąłem, a tego nie jestem w stanie zobaczyć
P-156088
Gibas11
» 2017-01-06 15:34:10
main()
? Nie ma sensu. A
czyKoniec()
 mogłaby być lepiej zrobiona, ale jest ok.
P-156101
wokub
Temat założony przez niniejszego użytkownika
» 2017-01-06 15:45:22
To jest w skrócie. Ogólnie main wygląda tak:
C/C++
int main()
{
    bool czyKoniec = false;
    int zwyciezca = 0;
    logo(); // mapka na starcie
    mapka(); //logo
   
    while( czyKoniec == false )
    {
        gracz(); // ruch gracza
        SI(); // ruch rand SI
        mapka(); //wyswietla aktualny stan
        wygrana( zwyciezca ); //regula na zwyciestwo SI lub gracza
    }
   
    return 0;
}

I właśnie tu mam problem, że ta funkcja czyKoniec () napisana przed mainem jakby się nie wczytuje. Ale dobrze, już wiem przynajmniej, że to w mainie powinienem grzebać. A to dla mnie wiele.
P-156102
Gibas11
» 2017-01-06 15:57:11
P-156103
« 1 » 2
  Strona 1 z 2 Następna strona