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

Losowanie 6 liczb z zakresu 1-49 bez powtórzeń

Ostatnio zmodyfikowano 2013-02-04 23:39
Autor Wiadomość
Vectrom
Temat założony przez niniejszego użytkownika
Losowanie 6 liczb z zakresu 1-49 bez powtórzeń
» 2013-02-04 22:18:34
Cześć, czołem :)
Mam taki mały programik losujący 6 liczb z zakresu 1-49:
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
    srand( time( NULL ) );
    int tablica[ 5 ];
    cout << "Totolotek!" << endl << endl;
    for( int i = 0; i < 6; i++ )
    {
        tablica[ i ] = rand() % 49 + 1;
        cout << tablica[ i ] << " ";
    }
}

Jak (najlepiej w prosty sposób) przerobić go, aby wylosowane liczby się nie powtarzały?

Pozdrawiam.
P-75732
czosnek17
» 2013-02-04 22:21:40
Zrób tablicę o wielkości takiej, jak ilość liczb, które losujesz. Po wylosowaniu liczby sprawdź, czy nie ma jej w tablicy. Jeżeli nie ma to ją tam zapisz, jeżeli jest to losuj jeszcze raz.
P-75733
Vectrom
Temat założony przez niniejszego użytkownika
» 2013-02-04 23:39:48
Zrobiłem to jakoś, może nie po mistrzowsku, ale działa.
C/C++
#include <iostream>
#include <ctime>
#include <cstdlib>
using namespace std;

int main()
{
    srand( time( NULL ) );
    int tablica[ 6 ];
    int x;
    cout << "Totolotek!" << endl << endl;
    for( int i = 0; i < 6; i++ )
    {
        do
        {
            x =( rand() % 49 ) + 1;
        }
        while(( tablica[ 0 ] == x ) ||( tablica[ 1 ] == x ) ||( tablica[ 2 ] == x ) ||( tablica[ 3 ] == x ) ||( tablica[ 4 ] == x ) ||( tablica[ 5 ] == x ) );
       
        tablica[ i ] = x;
       
        cout << tablica[ i ] << " ";
    }
    cin.get();
    return 0;
}

EDIT: coś źle mam.

EDIT2: zmieniłem kod, myślę, że robi co powinien.
P-75743
« 1 »
  Strona 1 z 1