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

Losowanie bez powtórzeń

Ostatnio zmodyfikowano 2015-12-01 11:20
Autor Wiadomość
omagic
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń
» 2015-12-01 09:30:20
Witam wszystkich!
Rozpocząłem kurs C++ i szło całkiem sprawnie aż do pracy domowej związanej z losowaniem bez powtórzeń.
Próbowałem kilka razy pisać kod i dotarłem do momentu w którym program działa poprawnie bardzo rzadko, najczęściej się "zwiesza" gdy ma sprawdzać czy liczby się powtarzają.(kilka razy program przeszedł prawidłowo)
Ktoś może podpowiedzieć dlaczego tak się dzieje?
C/C++
#include <iostream>
#include <cstdlib>
#include <ctime>

bool unikat( int iLiczba, int tab[], int ile )
{
    if( ile <= 0 )
         return false;
   
    int i = 0;
    do
    {
        if( tab[ i ] == iLiczba )
             return true;
       
        i++;
    } while( i < ile );
   
    return false;
}

int losowanie()
{
    return(( rand() % 10 ) + 0 );
}


int wpisz()
{
    int liczba = 0;
    std::cin >> liczba;
    return liczba;
}


int main()
{
    srand( time( 0 ) );
    int tablica[ 10 ];
    int a, b;
    a = 0;
    b = 0;
    do
    {
        std::cout << "podaj liczbe nr : " << a + 1 << std::endl;
        tablica[ a ] = wpisz();
        a++;
    } while( a < 10 );
   
    std::cout << "test losowania : " << losowanie() << std::endl;
   
   
    do
    {
        int c = tablica[ losowanie() ];
        if( unikat( c, tablica, b ) == false )
        {
            tablica[ b ] = c;
            b++;
        }
       
    } while( b < 8 );
   
    b = 0;
    do
    {
        std::cout << "wylosowano : " << tablica[ b ] << std::endl;
        b++;
    } while( b < 8 );
   
    return 0;
}
P-141222
carlosmay
» 2015-12-01 10:50:20
Do przechowywania liczb wylosowanych utwórz drugą tablicę, bo teraz nadpisujesz tą, z której losujesz. Program działa niewłaściwe.
P-141223
omagic
Temat założony przez niniejszego użytkownika
» 2015-12-01 11:20:09
Działa jak należy :D Dziękuję bardzo za pomoc. Zamykamy :)
P-141224
« 1 »
  Strona 1 z 1