ďťż
Misja Tereski
Losowanie liczb w C++
Aby móc skorzystać skorzystać z funkcji rand() (funkcja ta znajduje się w bibliotece cstdlib) , która służy do losowania liczb należy najpierw zainicjować generator liczb losowych, czyli wywołać funkcję srand(). Funkcja srand() może przyjmować różne argumenty, jednak najczęściej jej argumentem jest funkcja time() : srand(time(0)); LUB srand(time(null)); 1 Procedura, która losuje liczby z przedziału <a ; b> Download: Rapidshare, Hotfile, Megaupload, Przeklej i Inne void losowanie() { int a,b = 0; int i = 1; printf("Losuje 10 liczb z przedziału <a ; b> \n"); print("Podaj a : "); cin >> a ; printf("Podaj b : "); cin >> b ; while (i<101) { cout << setw(5) << a + rand() % (b-a+1); i++; } } Download bez limitów A co zrobić, jeżeli chcemy te wartości zachować na czas działania programu? To proste - wystarczy zapisać je do tablicy. 2 Program losuje 100 liczb z przedziału <11 ; 99>, zapisuje do tablicy i wypisuje na ekran po 10 w rządku. Download: Rapidshare, Hotfile, Megaupload, Przeklej i Inne #include <iostream> #include <cstdlib> #include <conio.h> using namespace std; const int n = 50; // określamy ilość liczb do wylosowania int tablica[n]; // tworzymy tablice dla liczb całkowitych o liczbie elementów równej n int main() { cout << "Wylosowane liczby:\n\n"; srand((unsigned)time(NULL)); for(int i = 0; i < n; i++) { tablica[i] = 11 + rand() % (99-11+1); if (i % 10 == 0) cout << "\n"; // dzielenie na rządki cout << " " << tablica[i]; } getch(); // wstrzymanie działania programu return 0; } Download bez limitów 3 Program losuje 40 liczb z przedziału <11 ; 99>, zapisuje do tablicy i wypisuje na ekran po 10 w rządku oraz sortuje je metodą bąbelkową [użyto podprogramów oraz instrukcji wybru switch{}] Download: Rapidshare, Hotfile, Megaupload, Przeklej i Inne #include <cstdlib> #include <iostream> #include <conio.h> #include <time.h> #include <algorithm> using namespace std; const int n = 40; int d[n]; int t[n]; bool sprawdzam , warunek; void losowanie() /* Funkcja losuje liczby z zakresu <11;99> */ { for (int i = 0 ; i < n ; i++) { d[i] = 11 + rand() % (99-11+1); // d[i] = zp + rand() % (zk-zp+1) t[i] = d[i]; } cout << "\n\t # Wylosowano liczby! #" << "\n\n\t # Nacisnij jakis znak, aby wrocic do menu... #"; getch(); } void sortowanie() /* Procedura sortuje tablice za pomoca funkcji sort() */ { sort(d,d+n); // zastosowanie funkcji sort z modułu Algorithm ; użycie : sort(nazwa_tablicy , nazwa_tablicy + liczba_elementow tablicy}; for (int i = 0 ; i < n ; i++) { if (i % 10 == 0) printf("\n"); printf ("%d ", d[i]); } } void wypisanie() { if (sprawdzam) { cout << "\n\t Liczby wylosowane: \n\n"; for (int i = 0 ; i < n ; i++) { if (i % 10 == 0) printf("\n"); printf (" %d ", t[i]); } } else cout << "\n\t # Nie wylosowales zadnych liczb! #\n\t # Najpierw wylosuj liczby, wybierajac pierwsza pozycje z menu! # \n\n"; if (warunek) { cout << "\n\n\n\t Liczby posortowane: \n\n"; for (int i = 0 ; i < n ; i++) { if (i % 10 == 0) printf("\n"); printf (" %d ", d[i]); } } else cout << "\n\n\n\t # Nie posortowales wylosowanych liczb! #\n\t # Najpierw posortuj liczby, wybierajac druga pozycje z menu! # \n\n"; getch(); } void menu() { int w; system("title Losowanie i sortowanie liczb (C) Maciej Sikorski,2010"); do { system("cls"); cout << "\n\t Menu: "; cout << "\n\n\t # 1 Wylosuj zbior liczb calkowitych typu Int #\n"; cout << "\n\t # 2 Posortuj wylosowane liczby #\n"; cout << "\n\t # 3 Wyswietl zbior liczb & Wyswietl posortowany zbior #\n"; cout << "\n\n\t # 0 Zakoncz dzialanie programu #\n"; cout << "\n\n Wybierz : "; cin >> w; switch(w) { case 1 : system("cls"); losowanie(); sprawdzam = true; break; case 2 : system("cls"); if (sprawdzam) { sort(d,d+n); cout << "\n\t # Posortowano liczby! #" << "\n\n\t # Nacisnij jakis znak, aby wrocic do menu... #"; warunek = true; } else cout << "\n\n\n\t # Nie wylosowales liczb! #\n\t # Najpierw wylosuj liczby, wybierajac pierwsza pozycje z menu! # \n\n"; getch(); break; case 3 : system("cls"); wypisanie(); break; default : return; } } while (w != 0); } int main() { srand(time(NULL)); menu(); return 0;; } Download bez limitów W/w program jest zabezpieczony przed tym, że użytkownik chce wypisać wylosowane liczby, mimo, że jeszcze ich nie wylosował. W przeciwnym razie wypisałby 40 razy liczbę 0. Dziękuje i zapraszam na kolejne poradniki & programy mojego autorstwa. Jaspher © Maciej Sikorski, 2010 Wszelkie prawa zastrzeżone. |