kafus Temat założony przez niniejszego użytkownika |
Problem z funkcją i return- zawsze zwraca 1 » 2013-07-28 16:00:40 Witam, Mam problem z pewną funkcją, która zawsze zwraca wartość 1 ! :( Dokładnie chodzi mi o funkcje co_chcesz_zrobic. Nie wiem czemu, ale zawsze zwraca wartość 1, nawet przy wyborze 2. I dodatkowo: Gdy najpierw wybierze się opcje niedozwoloną, wyswietla stosowny komunikat(tu jest ok ), ale gdy później wybierze się opcje np.2 to wybor= 0, a i tak wykonywane jest jak przy wyborze opcje 1... wiem troche zakrecilem... int co_chcesz_zrobic() { int wybor; cout << "I po grze:). Co chcesz zrobic?: " << endl; cout << "[1]- zagram jeszcze raz!" << endl; cout << "[2] - juz nie chce. Wychodze!" << endl; cin >> wybor; if( wybor != 1 && wybor != 2 ) do { cin.clear(); cin.sync(); cout << "niestety nie ma takiego wyboru, sproboj jeszcze raz: "; cin >> wybor; } while( wybor != 1 && wybor != 2 ); else { if( wybor = 1 ) return 1; if( wybor = 2 ) return 2; } } Dalszy ciąg programu: int main() { srand( time( NULL ) ); int wylosowana =( rand() % 1000 ) + 1; int liczba; int ruchy = 1; std::cout << "Wylosowana zostala liczba z przedzialu 1 do 1000." << endl; cout << "zgadnij jaka to liczba!" << endl; cout << wylosowana << endl; cin >> liczba; do { if( liczba < 1 || liczba > 1000 ) { cout << "podales liczbe: " << liczba << endl; cout << "Jest to liczba z poza przedzialu 1-1000. Sproboj jeszcze raz" << endl; cin >> liczba; } else { if( liczba > wylosowana ) { ruchy++; cout << "podales liczbe: " << liczba << endl; cout << "nietrafiles! musisz podac MNIEJSZA liczbe" << endl; cin >> liczba; } if( liczba < wylosowana ) { ruchy++; cout << "podales liczbe: " << liczba << endl; cout << "nietrafiles! musisz podac WIEKSZA liczbe" << endl; cin >> liczba; } } } while( liczba != wylosowana ); cout << "TRAFILES. Wygrales w: " << ruchy; cout << " ruchach. GRATULUJE" << endl << endl; int koniec = co_chcesz_zrobic(); cout << "wybrales: " << koniec << endl; if( koniec = 1 ) cout << main(); if( koniec = 2 ) cout << "papa"; return 0; } |
|
Berux |
» 2013-07-28 16:14:01 Operator '=' to przypisanie, prawdopodobnie chodziło ci o porównanie - jeśli tak, jest to operator '=='. Ten sam błąd masz w innym if'ie. /edit: cout << main(); Nie wiem, ale wydaje mi się, że jest to błędne - wytłumacz, dlaczego to użyłeś, to dopasujemy coś innego ;) Pozdrawiam, Berux |
|
luky92 |
» 2013-07-28 16:15:01 Jest else { if( wybor = 1 ) return 1; if( wybor = 2 ) return 2; } }
ma być else { if( wybor == 1 ) return 1; if( wybor == 2 ) return 2; } }
EDIT kolega był szybszy xD |
|
kafus Temat założony przez niniejszego użytkownika |
» 2013-07-28 16:19:31 Oj, no pewnie!!! przecież to takie proste :) dzieki za szybką odpowiedź. cout << main(); Chodziło mi tutaj o to, aby od początku czytał int main. Chodzi o to jak uzytkownik wybierze, że chce jeszcze raz zagrać to gra od początku, czyli od int main{...} ps. jak wstawic kod na forum do ramki c++ ? :) |
|
pekfos |
» 2013-07-28 17:18:35 |
|
kafus Temat założony przez niniejszego użytkownika |
» 2013-07-28 17:40:33 Dziękuję. Tego szukałem i nie umiałem znaleźć. Mam jeszcze jeden problem. Chcę dodać do programu opcję ilości wykorzystanych i dostepnych ruchow ( int ruchy = 0; Przyklad jak to zrobilem: if( liczba > wylosowana ) { ruchy++; cout << "podales liczbe: " << liczba << endl; cout << "nietrafiles! musisz podac MNIEJSZA liczbe" << endl; cout << "To byl twoj: " << ruchy << " ruch" << endl; cout << "Pozostalo: " << 10 - ruchy << " Ruchow" << endl; cin >> liczba; }
wszystko ok, ale jak dochodzi do: to byl twoj: 10 ruch Pozostalo: 0 ruchow
To jeszcze moge podac kolejna liczbe i dopiero wtedy dochodzi do : if( ruchy == 10 )
do { cout << endl << endl << endl << "Przekroczyles ilosc szans. " << "PRZEGRALES. Sproboj jeszcze raz" << endl; cout << "byla to liczba: " << wylosowana << endl << endl << endl << endl << endl; goto wybory; } while( ruchy == 10 );
Oczywiscie jak podam nawet tą dobrą to i tak jest przegrana ( to akurat dobrze). Ale nie chce, aby była możliwość podania kolejnej po 10 strzale. |
|
luky92 |
» 2013-07-28 17:48:58 if( liczba > wylosowana ) { ruchy++; cout << "podales liczbe: " << liczba << endl; cout << "nietrafiles! musisz podac MNIEJSZA liczbe" << endl; cout << "To byl twoj: " << ruchy << " ruch" << endl; cout << "Pozostalo: " << 10 - ruchy << " Ruchow" << endl; if( ruchy != 10 ) { cin >> liczba; } }
|
|
pekfos |
» 2013-07-28 18:03:01 Dziękuję. Tego szukałem i nie umiałem znaleźć. |
Obok "Załóż nowy temat" jest link (w zielonej ramce). |
|
« 1 » |