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

[Lekcja 17] Losowane liczby się powtarzają

Ostatnio zmodyfikowano 2012-02-23 19:35
Autor Wiadomość
czosnek17
Temat założony przez niniejszego użytkownika
[Lekcja 17] Losowane liczby się powtarzają
» 2012-02-23 18:53:39
Cześć. Jakby co to jest mój pierwszy post.
Mam taki program:
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>


int funkcjalos()
{
    std::cout << "funkcja dziala" << std::endl;
    int liczbax =( rand() % 10 ) + 1;
    return liczbax;
    std::cin.clear();
    std::cin.sync();
}

int main() //---------------------------------
{
    srand( time( NULL ) );
    std::cin.clear();
    std::cin.sync();
    int liczba;
    int tuwynik = funkcjalos();
   
   
    do {
        std::cout << "wylosowana liczba= " << tuwynik << std::endl;
        std::cout << "|losuj-1 wyjdz-0|  " << std::endl;
        std::cin >> liczba;
       
        if( liczba == 1 )
        {
            funkcjalos();
        }
    } while( liczba == 1 );
   
    return 0;
}
Pomimo srand( time( NULL ) ); z każdym razem liczba jest ta sama. I dlaczego funkcja losująca sama się wywołuje?
P-51293
pekfos
» 2012-02-23 18:58:33
Bo tylko raz przypisujesz wartość zmiennej?
P-51295
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-02-23 19:10:08
Zmiennej liczbax? Jak to naprawić?
P-51296
pekfos
» 2012-02-23 19:11:30
funkcjalos();

zamień na

zmienna = funkcjalos();

i powtórz sobie funkcje. chyba niezbyt je rozumiesz.
P-51297
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-02-23 19:21:49
Tak, musiałem na zmienną dać tuwynik. Dzięki. Ale dlaczego funkcja się wywołuje na początku programu, tak powinno być?
zawsze musze się pomotać...
P-51298
pekfos
» 2012-02-23 19:24:01
Ale dlaczego funkcja się wywołuje na początku programu, tak powinno być?
Jakbyś nie napisał wywołania to by się nie wywoływała.

C/C++
int main() //---------------------------------
{
    srand( time( NULL ) );
    std::cin.clear();
    std::cin.sync();
    int liczba;
    int tuwynik = funkcjalos(); //tu się SAMA wywołuje
P-51299
czosnek17
Temat założony przez niniejszego użytkownika
» 2012-02-23 19:26:46
Myślałem, że się wywoła dopiero po wpisaniu 1. Jak to zrobić?
P-51300
Pankulka
» 2012-02-23 19:28:20
Chodzi o to, że liczba musi być losowana za każdym razem kiedy ma być wypisana. Jeżeli wylosujesz liczbę przed pętlą i zostaje wylosowane np 10,  to przy wciskaniu "1" wypisujesz cały czas tą samą liczbę ;) Jeżeli liczbę będziesz losował w pętli to za każdym razem będzie ona na nowo losowana.
P-51301
« 1 » 2
  Strona 1 z 2 Następna strona