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

[Kurs] Losowanie bez powtórzeń, wyjaśnienie

Ostatnio zmodyfikowano 2014-03-19 08:47
Autor Wiadomość
MojaTrauma
Temat założony przez niniejszego użytkownika
[Kurs] Losowanie bez powtórzeń, wyjaśnienie
» 2014-03-14 19:04:21
Idąc sobie poprzez kurs niczym burza, po pewnej nieprzespanej nocy w pracy wziąłem się właśnie za lekcje o losowaniu bez powtórzeń. Jak to zwykle mam w zwyczaju, stanąłem na początku tematu i zacząłem pisać kod.

Otóż mógłbym go napisać jeszcze raz albo dojść do końca rozdziału i zrobić to tak jak powinno to wyglądać, lecz po nie zadowalającym mnie wyniku kompilacji chciałbym się dowiedzieć co jest nie tak w poniższym kodzie:

C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int przypisanie( int t[] )
{
    int i = 0;
    do
    {
        t[ i ] =(( rand() % 10 ) + 1 );
        i++;
    } while( i < 5 );
   
    return 0;
}

int sprawdzenie( int t[], int nr )
{
    int i = 0;
    do
    {
        if( t[ nr ] == t[ i ] )
        {
            t[ nr ] =(( rand() % 10 ) + 1 );
        }
        else
        {
            i++;
        }
    } while( i < 5 );
   
    return 0;
}

int main()
{
    srand( time( NULL ) );
    int tablica[ 5 ];
    int num = 0;
   
    cout << "Inicjacja dziala!" << endl;
   
    przypisanie( tablica );
    cout << "Przypisanie dziala!" << endl;
   
    do
    {
        sprawdzenie( tablica, num );
        cout << tablica[ num ] << ", ";
        num++;
    } while( num < 5 );
   
    return 0;
}

Z tego co rozumiem jest coś nie tak z funkcją "sprawdzenie" ew. z losowaniem liczb.


Przypominam że nie interesuje mnie gotowe rozwiązanie, tylko wytknięcie co zrobiłem nie tak w moim programie - gdyż może coś nie do końca zrozumiałem i muszę wrócić do poprzedniej lekcji.

Dzięki za pomoc :).
P-106360
lukmas3
» 2014-03-18 20:38:20
a może napisałbyś co mają robić poszczególne funkcje, wtedy ew. można powiedzieć co jest nie tak
P-106736
alixir
» 2014-03-19 08:47:47
Nie bardzo mogę zrozumieć co ma dokładnie robić funkcja „sprawdzenie”.
Przypatrz się uważnie co się dzieje w pierwszym przebiegu twojej głównej pętli w main.
Wywołujesz funkcję przekazując do niej tablicę oraz num, który wynosi początkowo 0.
W funkcji porównujesz czy element tablicy o numerze „num” (0) jest równy elementowi tablicy o numerze „i” (0) . Wynik chyba jest oczywisty. Stąd wywołuje się przypisanie nowo wylosowanej liczby. Nic innego pozatym się nie dzieje, więc pętla funkcji porównuje nadal ten sam element tablicy ….. i tak w kółko.
P-106760
« 1 »
  Strona 1 z 1