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. #BIBLIOTEKI
bool czyKoniec = false;
int ruch( bool czyKoniec ) { 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; }
int main() { while( czyKoniec == false ) { gracz(); } while( !czyKoniec == false ); return 0; }
|
|
mokrowski |
» 2017-01-06 13:10:00 |
|
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. bool czyKoniec() { 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. |
|
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. |
|
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 : bool czyKoniec() { 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ś : 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ć |
|
Gibas11 |
» 2017-01-06 15:34:10 main() ? Nie ma sensu. A czyKoniec() mogłaby być lepiej zrobiona, ale jest ok. |
|
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: int main() { bool czyKoniec = false; int zwyciezca = 0; logo(); mapka(); while( czyKoniec == false ) { gracz(); SI(); mapka(); wygrana( zwyciezca ); } 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. |
|
Gibas11 |
» 2017-01-06 15:57:11 |
|
« 1 » 2 |