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

funkcja rand

Ostatnio zmodyfikowano 2014-04-17 20:36
Autor Wiadomość
lukhol
Temat założony przez niniejszego użytkownika
funkcja rand
» 2014-04-17 18:43:13
siema, mam problem z funkcją rand ponieważ nie losuje mi różnych liczb tylko zawsze tą samą mimo tego, ze w kodzie jest srand ( time(NULL));. Uzywam funkcji w grze kamień,papier, nożyce, której kod wrzucam.

C/C++
#include <iostream>
#include <cstdio>
#include <math.h>
#include<windows.h>
#include <ctime>
#include <string>
#include <cstdlib>


using namespace std;


int costam()
{
   
    int liczba, komputer, ja, x;
    string pytanie;
   
    komputer = 0;
    ja = 0;
   
   
   
    do {
       
        system( "cls" );
        cout << "\n\t Wynik to: " << ja << ":" << komputer << endl << endl;
        cout << "Wpisz : 0-papier, 1-nozyce, 2-kamien czy -1-koniec programu" << endl;
        cout << "Wybierasz: ";
        cin >> liczba;
       
        if( liczba < 3 && liczba >- 1 )
        {
           
            if( x = 0 )
            {
                cout << "Ja wybralem papier! a Ty wybrales ";
                {
                    if( liczba == 0 ) cout << "papier" << endl;
                    else if( liczba == 1 ) cout << "nozyce" << endl;
                    else if( liczba == 2 ) cout << "kamien" << endl;
                   
                }
                if( liczba == 0 )
                {
                    cout << "Remis!" << endl;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 1 )
                {
                    cout << "Wygrales" << endl;
                    ja = ja + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 2 )
                {
                    cout << "Przegrales" << endl;
                    komputer = komputer + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej? (tak/nie)" << endl;
                }
               
                {
                    do
                    {
                        cin >> pytanie;
                        if( pytanie == "tak" ) break;
                        else if( pytanie == "nie" ) { cout << "No to koniec :)"; Sleep( 1000 ); exit( 0 ); }
                        else cout << "Wpisales bledna wartosc. Wpisz ja ponownie: ";
                       
                    }
                    while( pytanie != "tak" || pytanie != "nie" );
                   
                }
            }
            else if( x = 1 )
            {
               
                cout << "Ja wybralem nozyce! a Ty wybrales ";
                {
                    if( liczba == 0 ) cout << "papier" << endl;
                    else if( liczba == 1 ) cout << "nozyce" << endl;
                    else if( liczba == 2 ) cout << "kamien" << endl;
                   
                }
                if( liczba == 0 )
                {
                    cout << "Przegrales" << endl;
                    komputer = komputer + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 1 )
                {
                    cout << "Remis" << endl;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 2 )
                {
                    cout << "Wygrales" << endl;
                    ja = ja + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
               
                {
                    do
                    {
                        cin >> pytanie;
                        if( pytanie == "tak" ) break;
                        else if( pytanie == "nie" ) { cout << "No to koniec :)"; Sleep( 1000 ); exit( 0 ); }
                        else cout << "Wpisales bledna wartosc. Wpisz ja ponownie: ";
                       
                    }
                    while( pytanie != "tak" || pytanie != "nie" );
                   
                }
               
            }
            else if( x = 2 )
            {
                cout << "Ja wybralem kamień! a Ty wybrales ";
                {
                    if( liczba == 0 ) cout << "papier" << endl;
                    else if( liczba == 1 ) cout << "nozyce" << endl;
                    else if( liczba == 2 ) cout << "kamien" << endl;
                   
                }
                if( liczba == 0 )
                {
                    cout << "Wygrlaes" << endl;
                    ja = ja + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 1 )
                {
                    cout << "Przegrales" << endl;
                    komputer = komputer + 1;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
                else if( liczba == 2 )
                {
                    cout << "Remis" << endl;
                    cout << ja << ":" << komputer << endl;
                    cout << "Grasz dalej?(tak/nie)" << endl;
                }
               
                {
                    do
                    {
                        cin >> pytanie;
                        if( pytanie == "tak" ) break;
                        else if( pytanie == "nie" ) { cout << "No to koniec :)"; Sleep( 1000 ); exit( 0 ); }
                        else cout << "Wpisales bledna wartosc. Wpisz ja ponownie: ";
                       
                    }
                    while( pytanie != "tak" || pytanie != "nie" );
                   
                }
               
            }
           
        }
       
       
        else if( liczba >= 3 || liczba <- 1 )
        {
            cout << "Liczba nie jest z przedzialu. Wpisz liczbe ponownie za 1[s]";
            Sleep( 1000 );
        }
        else if( liczba =- 1 ) { cout << "KONIEC!"; Sleep( 1000 ); exit( 0 ); }
    } while( liczba == 1 || liczba == 0 || liczba == 2 );
   
   
}


int main()
{
   
    int liczba, x;
    srand( time( NULL ) );
    x = rand() % 3;
    string pytanie;
    cout << endl << endl << endl << "\n\n\n\t\tWitaj w grze kamien, papier, nozyce !"; Sleep( 2000 );
   
   
    do
    {
        costam();
    }
    while( liczba == 1 || liczba == 0 || liczba == 2 );
   
    return( 0 );
   
   
}
P-108292
Monika90
» 2014-04-17 18:48:36
w C+++ operator porównania to ==, a nie =. Poza tym, zmienne x i liczba w main, to nie są te same zmienne, co w funkcji costam.
P-108293
lukhol
Temat założony przez niniejszego użytkownika
» 2014-04-17 18:52:17
@Monika90 Nawet jeżeli ==, a nie = to i tak nie rozwiąże mojego problemu ;p Tak zmienne nie są te same, ale nawet jeżeli wpisuje x=rand()%3 wewnątrz funkcji to i tak ciągle losuje mi tą samą liczbę.
P-108294
michal11
» 2014-04-17 18:56:58
Nie wiem, czy wiesz ale w main() masz praktycznie pętle nieskończoną.
P-108295
RazzorFlame
» 2014-04-17 18:57:54
Na samym poczatku programu umiesc: srand(time(NULL)); Nie wywoluj tego pare razy. Zawsze tylko RAZ!
P-108296
lukhol
Temat założony przez niniejszego użytkownika
» 2014-04-17 18:59:23
srand(time(NULL)) przeciez jest wywołane tylko raz, a mimo to i tak nie działa. Co do pętli nie skończonej będę się o to martwił   dopiero potem, szczególnie, ze nie mam w planach wpisywania w funkcji main dalszej częsci programu.
P-108297
Monika90
» 2014-04-17 19:10:34
nawet jeżeli wpisuje x=rand()%3 wewnątrz funkcji to i tak ciągle losuje mi tą samą liczbę.
Na jakiej podstawie wyciągasz taki wniosek?
P-108299
lukhol
Temat założony przez niniejszego użytkownika
» 2014-04-17 19:28:40
Zapewne na takiej podstawie, ze próbowałem ją wpisać już w każdym możliwym miejscu wewnątrz funkcji costam.
P-108300
« 1 » 2
  Strona 1 z 2 Następna strona