c++ funkcja losujaca bez powtórzeń problem

0

witam,

Mam funkcję której zadaniem jest losowanie nr pytania z pośród
elementów wektora( tzn od 1 wzwyż ,element zerowy jest zarezerwowany)
Żaden nr nie moze sie powtarzać.

Niestety pętla while która ma przed tym chronić
nie spełnia swojego zadnia :( co robię nie tak?

 
int nr_pytania[3]={0,0,0}               ;              
                    srand ( time(NULL) )                    ;    
                        for(int i=0;i<3;i++)  
                            {
                              nr_pytania[i]= 1+(rand()%(pytania.size()-1));                                    
                              
                              int j=-1           ;
                                         while( j<3 )
                                             {
                                               j++;
                                               if(nr_pytania[i]==nr_pytania[j] && i!=j)
                                                  {nr_pytania[i]= 1+(rand()%(pytania.size()-1));j=0;}
                                             }     
                                             
                            }       
                   for(int i=0;i<3;i++)
                            {cout <<"a: "<<nr_pytania[i]<<" ";}



0

Pewnie są lepsze rozwiązania, ale możesz poprzestawiać wektor pytań za pomocą std::random_shuffle i wybrać tyle, ile potrzebujesz.

0
t = jakas liczba pierwsza > p.size() 
for ( j=0, i=1; i<p.size ()-1; i++) {
    j = ( j + t ) % (p.size () - 1);
    p[j+1];
}
0

znalazłem błąd (po 3h ale jednak)

nr_pytania[i]= 1+(rand()%(pytania.size()-1));j=0; //powinno być j=-1; 

Może komuś się przyda :)

Dziękuję za cenne rady- postaram się wykorzystać w następnych funkcjach :)

1
ognistysztorm napisał(a):

Dziękuję za cenne rady- postaram się wykorzystać w następnych funkcjach :)
to dam ci jeszcze jedną radę tym razem bezcenną, zacznij formatować porządnie kod to znalezienie takiego błędu (i wielu innych) być może potrwałoby kilka minut, a nie godzin.

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