Ninka25
Rozwiązane

C++
Generowanie ciągu liczb losowych:
a) liczby mogą się powtarzać,
b) liczby nie mogą się powtarzać.
Wygenerowane liczby zapisać w tablicach.



Odpowiedź :

#include <iostream>

#include <ctime>

#include <cstdlib>

using namespace std;

int main() {

//włączenie liczb pseudolosowych

srand(time(NULL));

//deklaracja i wczytanie zmiennej która będzie wielkośćią tablicy

int n;

cin >> n;

//zadeklarowanie tablicy tab

int tab[n];

/* nie zostało sprecyzowane z jakiego zakresu liczby mają być losowane

będe losował z zakresu inta */

for (int i=0;i<n;i++) {

 tab[i]=rand();

}

//wypisywanie tablicy

for (int i=0;i<n;i++) {

 cout<<tab[i]<<" ";

}

return 0;

}

Odpowiedź

Kod źródłowy w pierwszym załączniku, a w drugim i trzecim podałam jak wyglądają przykładowe wyniki uruchomienia.

Przyjęłam, że zakres liczb jest od  0  do  rozmiar tablicy - 1.

Algorytm w przypadku gdy liczby nie mogą się powtarzać jest nieco nietypowy, ponieważ powszechnie używany generator mógłby wpaść w nieskończoną pętlę... (tzn. nigdy nie dać wszystkich liczb z zadanego zakresu).


Jeśli chcesz innego typu tablicy niż  vector,  to poproszę utwórz nowe zadanie.

Wyjaśnienie

Przykładowe wyniki uzyskałam w Visual Studio oraz na platformie replit. Nie wiem – bo nie ma tego w treści zadania – której platformy (programu, środowiska) używacie w szkole do pisania w C++, więc napisałam tak aby było ładnie.

Jeżeli Twoja platforma nie obsługuje polskich liter w nazwach zmiennych, to zamień je na odpowiadające im znaki ASCII. (Na przykład ani  Code::Blocks,  ani  Dev-C++  jeszcze nie obsługują polskich liter w nazwach zmiennych.)

Wprawdzie zamiast  unsigned int  można by  napisać  int,  ale wszystkie zmienne zdefiniowane jako  unsigned int  (indeksy tablic) na pewno nie przyjmują wartości ujemnych, tak więc użycie  unsigned int  jest uzasadnione.

Zobacz obrazek 0AB
Zobacz obrazek 0AB
Zobacz obrazek 0AB