Witam.
Uczę się c++ i obecnie stanąłem przy programie do losowanie liczb bez powtórzeń.
Raz, że nie wiem jak to zrobić, a dwa najważniejsze patrząc na kody które inni piszą nie rozumiem o co w ich kodzie chodzi. Jak to działa. A bez tego nigdy nie napiszę takiego programu samemu.
Mógłby ktoś ewentualnie zamieścić jakiś jak najłatwiejszy kod do takiego programu, i opisać linijka po linijce co się dzieje w danej linijce? Przy takich programach się gubię, i nie wiem jak przez to przebrnąć.
Jakby był ktoś taki dobry i pomógł mi, byłbym bardzo wdzięczny. Nie potrzebuje kodu do żadnej pracy, więc to nie jest lenistwo. Nie wiem jak to ugryźć.
możesz to napisać na takiej zasadzie, że masz koszyk z kulkami ponumerowanymi od a do b i wyjmujesz z niego n piłek z losowo wybranego miejsca.
Dobra. W końcu się udało mi napisać. trochę się pomordowałem z tym.
Użyłem pętli for, oraz do while.
Jakby co może komuś przyda się ten kod:
int main()
{
srand(time(NULL));
int zakres=49;
int poczatek=1;
int ilosc=6;
int tablica[ilosc];
bool powtorzenie;
do{
for(int i=0; i<ilosc; i++){
tablica[i]=rand()%zakres+poczatek;
for(int j=0; j<i; j++){
if(tablica[j]==tablica[i]){
powtorzenie=true;
}
}
}}
while(powtorzenie);
for(int i=0; i<ilosc; i++){
cout<<tablica[i]<<endl;
}
return 0;
}
Zamiast się mordować wystarczyło pomyśleć:
int main()
{
srand(time(0));
const int poczatek=1,zakres=49,ilosc=6;
int tablica[zakres];
for(int i=0;i<zakres;++i) tablica[i]=poczatek+i;
for(int i=zakres;i>1;--i) swap(tablica[i-1],tablica[rand()%i]);
for(int i=0;i<ilosc;++i) cout<<tablica[i]<<endl;
return 0;
}
Po pierwsze jakbyś spojrzał na mój kod, to w programie losujemy 6 liczb a nie tak jak u ciebie 49 w tablicy.
Po drugie od czego jest ten swap?
Grunt, że udało mi się zrobić w końcu program z losowaniem bez powtórzeń. To się liczy
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.