Pomoc w losowaniu lotka

Pomoc w losowaniu lotka
Kuba Sobczyński
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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.

Kopiuj
#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;
}

szweszwe
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1694
0

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

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

Kuba Sobczyński
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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

Kuba Sobczyński
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
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.

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

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

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
1
Kuba Sobczyński napisał(a):

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

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

TomaszLiMoon
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 530
0

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

Kopiuj
#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;
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.