algorytm.org

Implementacja w C/C++



Baza Wiedzy
wersja offline serwisu przeznaczona na urządzenia z systemem Android
Darowizny
darowiznaWspomóż rozwój serwisu
Nagłówki RSS
Artykuły
Implementacje
Komentarze
Forum
Bookmarki






Sonda
Implementacji w jakim języku programowania poszukujesz?

Losowanie bez powtórzeń - Implementacja w C/C++
Ocena użytkownikóww: *****  / 5
SłabyŚwietny
Nadesłany przez dawidex44, 27 października 2012 23:41
Kod przedstawiony poniżej przedstawia główną część rozwiązania problemu.
Pobierz pełne rozwiązanie.

Jeżeli nie odpowiada Ci sposób formatowania kodu przez autora skorzystaj z pretty printer'a i dostosuj go automatycznie do siebie.

losowanie_bez_powtorzen.cpp:
//Losowanie bez powtorzen
//www.algorytm.org

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

using namespace std;

int main()
{
	int IL,los;
	do
	{
		cout<<"Podaj z jakiego zakresu maja byc losowane liczby "<<endl;
		cin>>IL; //IL oznacza liczbe liczb, jaka chcemy wylosowac.
		
		cout<<endl<<"Ile liczb chcesz wylosowac?"<<endl;
		cin>>los;//los to zakres liczb które chcemy wylosowac
		
		cout<<endl<<endl<<endl;
		system("cls");
	} while(IL<los);	
	
	int *T,i;
	T = (int*)malloc(IL * sizeof(int)); //zaalokuj pamiec na pule liczb do wylosowania
	for (i=0; i<IL; i++)
	{
		T[i]=i+1;//Przypisanie do tablicy z której bedziemy losowac liczby
	}

	srand(time(0)); //Zainicjowanie genereatora liczb losowych

	int *t,a;
	t = (int*)malloc(los * sizeof(int)); //zaalokuj pamiec na pule liczb wylosowanych
	for (i=0; i<los; i++)
	{
		a=(rand()%IL); //wylosuj liczbe
		t[i]=T[a];
		
		/* jezeli liczba zostaje wylosowana zostaje wyrzucona z obiegu w ten sposób, ze na jej
		   miejsce trafia ostatnia z puli liczb do wylosowania a wielkosc puli zostaje zminiejszona*/
		T[a]=T[IL-1];
		IL--;
		
		cout<<t[i]<<" "; //wypisz wylosowana liczbe
	}
		
	cout<<endl;
	system("pause");
	return EXIT_SUCCESS;
}
Komentarze
photo
+1 # Programmer 2014-02-17 20:55
Proponowałbym o dokładniejsze nazywanie zmiennych. Symboliczny zapis zazwyczaj jest czytelny zazwyczaj tylko dla tego, który to napisał.
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz