Wątek przeniesiony 2014-10-21 13:09 z C/C++ przez ŁF.

Losowanie liczby w funkcji

0

Program ma losować liczbe. Liczba jest losowana w funkcji "losuj" i przekazywana poprzez argumenty funkcji do glownej funkcji czyli "main".
Problem w tym, ze ciagle wylosowuje ta sama liczbe a mianowicie "8". Wszystko dziala dobrze jesli losowanie odbywa sie w glownej funkcji "main". Lecz jesli losowanie odbywa sie w funkcji "losuj" to juz nie dziala. Czy ktos mi moze z tym pomoc. Jesli to potrzebne to uzywam edytora Code::Block.

Kod programu:

#include<iostream>
#include<ctime>
#include<cstdlib>
using namespace std;

int losuj (int k)
{
    k=rand()%50;

    return 0;
}

int main()
{
    srand (time(NULL));
    int x;

    losuj(x);
    cout << x << endl;

    return 0;
}

dodanie znacznika <code class="cpp"> - @furious programming

0

Losowanie przebiega ok, ale przypisujesz do kopii k (swoją drogą, samo przekazanie kopii niezainicjalizowanej zmiennej do funkcji to UB), a potem wyświetlasz niezmieniony oryginał. Proponuję poczytać o referencjach.

Poza tym: masz <random>, korzystanie z rand i srand w nowoczesnym kodzie jest niewskazane.

1
int losuj (int k)

na:

int losuj (int &k)

i będzie działało.

dodanie znacznika <code class="cpp"> - @furious programming

0

Wielkie dzieki chłopaki. Poczytalem o referencjach i już czaje o co biega. A pol dnia sie wczoraj głowiłem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1