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

Losowanie bez powtórzeń //rozdział 21

Ostatnio zmodyfikowano 2013-08-28 09:27
Autor Wiadomość
Najsu
Temat założony przez niniejszego użytkownika
Losowanie bez powtórzeń //rozdział 21
» 2013-08-27 20:21:26
Cześć, poniżej kod mojego programu, podjąłem samodzielną walkę i o to co mi wyszło :D
Wszystko działa jak powinno, losuje 5 liczb bez powtórzeń z zakresu 1-10. Piszę, ponieważ jest jeden, chyba problem, a mianowicie chodzi o tą część kodu:

C/C++
else
{
    cout << wylosowana << " - liczba jest juz w tablicy." << endl;
    licznik--;
}

Czasami po odpaleniu programu widać coś takiego:

4 - liczba jest juz w tablicy.
9 - liczba jest juz w tablicy.
5 - liczba jest juz w tablicy.

8, 10, 1, 4, 6,
Process returned 0 (0x0)   execution time : 0.037 s
Press any key to continue.
...i tutaj jak widzimy, cyfry 9 nie ma w tablicy, jednak pojawiła się na górze. Czy wszystko z moim kodem jest okej? Z góry dzięki za pomoc.

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

int wylosuj()
{
    return rand() % 10 + 1;
}

bool sprawdzam( int wylosowana, int tablica[] )
{
    int licznik = 0;
    do
    {
        if( tablica[ licznik ] == wylosowana )
        {
            return false;
        }
        licznik++;
    } while( licznik < 5 );
   
    return true;
}
int main()
{
    srand( time( NULL ) );
    int tablica[ 5 ], wylosowana;
    int licznik = 0;
   
    do
    {
        wylosowana = wylosuj();
        bool spr = sprawdzam( wylosowana, tablica );
        if( spr )
        {
            tablica[ licznik ] = wylosowana;
            licznik++;
        }
        else
        {
            cout << wylosowana << " - liczba jest juz w tablicy." << endl;
            licznik--;
        }
    } while( licznik < 5 );
   
   
    licznik = 0;
   
    do
    {
        cout << tablica[ licznik ] << ", ";
        licznik++;
    } while( licznik < 5 );
   
    return 0;
}
P-91067
pekfos
» 2013-08-27 20:39:42
Tablica zawiera na początku śmieci, które też sprawdzasz.
P-91072
Najsu
Temat założony przez niniejszego użytkownika
» 2013-08-27 20:46:43
Zgadza się, jak ją wyczyścić? Mogę wszystkim jej argumentom przypisać zero za pomocą pętli, lecz co w przypadku gdy chciałbym np. losować liczby od -5 do 10?
P-91074
pekfos
» 2013-08-27 20:48:00
To sprawdzaj tylko te elementy, które już zapisałeś.
P-91075
Najsu
Temat założony przez niniejszego użytkownika
» 2013-08-27 21:24:52
Dzięki za naprowadzenie, tak też zrobię. Poza tym z kodem wszystko okej?
P-91077
pekfos
» 2013-08-27 21:28:28
Poza tym z kodem wszystko okej?
A działa?
P-91078
Najsu
Temat założony przez niniejszego użytkownika
» 2013-08-27 22:05:52
W takim razie do zamknięcia, dzięki za pomoc.
P-91081
RazzorFlame
» 2013-08-28 09:27:06
@UP sam możesz zamykać swoje tematy...
P-91098
« 1 »
  Strona 1 z 1