Pomoc w losowaniu lotka

0

Witam,
Od jakiegoś czasu, mam problem z napisaniem prostego programu działającego na tablicach który wylosuje 6 liczb, bez powtórzeń. Zamysłem programu jest wpisanie wartości wylosowanej liczby na ostatnie miejsce w tablicy oraz losowanie następnej liczby w zmniejszonym zakresie. Myśle ze zamysł dobry lecz wykonanie zawiodło. Z góry dziekuję za pomoc.

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

int main()
{
    int tab[49],x=0,p=0;
    srand(time(NULL));
    cout<<"Wylosowane liczby to: "<<endl;
    for (int n=0;n<49;n++)
    {
        tab[n]=n+1;

    }
    for(int n=0;n<6;n++)
    {
        x=tab[rand()%(48-n)];
        p=tab[48-n];
        tab[48-n]=x;
        tab[x-1]=p;
        cout<<x<<" ";
    }
    cout<<endl;
    system("pause");
    return 0;
}

0

Ale koniecznie chcesz robić takie cuda z tą tablicą czy po prostu wylosować 6 liczb bez powtórzeń z zakresu?

0

Użyj: http://www.cplusplus.com/reference/algorithm/shuffle/
Następnie wypisz pierwsze 6

0
szweszwe napisał(a):

Ale koniecznie chcesz robić takie cuda z tą tablicą czy po prostu wylosować 6 liczb bez powtórzeń z zakresu?

To jest akurat moja interpretacja zadania wraz ze wskazowkami prowadzącego, ktory zaproponował właśnie tablice

0
_13th_Dragon napisał(a):

Użyj: http://www.cplusplus.com/reference/algorithm/shuffle/
Następnie wypisz pierwsze 6

Z chęcią bym z tego skorzystał, lecz nie moge wybiec za bardzo za materiał z zajęć, a shuffle czy swap jeszcze nie przerabialismy.

0

Aby przerobić na zajęciach cały STL trzeba jakieś 300 godzin zajęć, masz tyle godzin w planie zajęć?

1
Kuba Sobczyński napisał(a):

Myśle ze zamysł dobry lecz wykonanie zawiodło.

Proponuję określić w jakim stopniu się zawiodłeś.

0

Twój problem polegał na tym,że nie zapisywałeś nigdzie wylosowanego indeksu tablicy. Mam nadzieję, że operator bitowy XOR już przerabialiście.

#include <iostream>
#include <ctime>
#include <cstdlib>

using namespace std;

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

    int tab[49];
    for( int n=0 ; n<49 ; ++n ) tab[n]=n+1;

    for( int n=0 ; n<6 ; ++n )
    {
        int index = rand()%(49-n);

        tab[48-n]  ^= tab[index];
        tab[index] ^= tab[48-n];
        tab[48-n]  ^= tab[index];

        cout << tab[48-n] << " ";
    }

    return 0;
}

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