Informatică, întrebare adresată de vargad682, 8 ani în urmă

Să se scrie o aplicaţie C/C++ care alocă dinamic memorie necesară pentru stocarea a
n<=10.000 de numere întregi. Programul iniţializează numerele cu valori aleatoare
între 1 şi Max<=100 (folosiţi funcţiile srand() şi/sau rand() în VC++). Scrieţi o
funcţie care afişează cele mai frecvente k<=10 numere şi numărul lor de apariţii în
tabloul iniţial.

Răspunsuri la întrebare

Răspuns de olteansilvan
0

Răspuns:

#include <iostream>

#include <cstdlib>

#include <ctime>

using namespace std;

const int MAX_NUMBERS = 10000; // numarul maxim de numere

const int MAX_VALUE = 100; // valoarea maxima a numerelor

const int K = 10; // numarul de numere cele mai frecvente

// functia care aloca dinamic memorie pentru un vector de numere

int *allocateNumbers(int n)

{

   int *numbers = new int[n];

   return numbers;

}

// functia care initializeaza vectorul cu numere aleatoare

void initializeNumbers(int *numbers, int n)

{

   srand(time(NULL)); // initializam generatorul de numere aleatoare

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

   {

       numbers[i] = rand() % MAX_VALUE + 1; // generam un numar aleator intre 1 si MAX_VALUE

   }

}

// functia care afiseaza cele mai frecvente k numere si numarul lor de aparitii in vector

void displayMostFrequentNumbers(int *numbers, int n, int k)

{

   // vector pentru a stoca frecventa numerelor

   int frequency[MAX_VALUE + 1] = {0};

 

   // calculam frecventa fiecarui numar

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

   {

       frequency[numbers[i]]++;

   }

   // afisam cele mai frecvente k numere si numarul lor de aparitii

   cout << "Cele mai frecvente " << k << " numere si numarul lor de aparitii:" << endl;

   for (int i = 1; i <= MAX_VALUE; i++)

   {

       if (k == 0)

       {

           break;

       }

       // afisam numarul si numarul lui de aparitii doar daca frecventa este mai mare decat 0

       if (frequency[i] > 0)

       {

           cout << i << ": " << frequency[i] << endl;

           k--;

       }

   }

}

int main()

{

   int n;

   cout << "Introduceti numarul de numere: ";

   cin >> n;

   int *numbers = allocateNumbers(n);

   initializeNumbers(numbers, n);

   int k;

   cout << "Introduceti numarul de numere cele mai frecvente care doriti sa fie afisate: ";

   cin >> k;

   displayMostFrequentNumbers(numbers, n, k);

   delete[] numbers;

   return 0;

}

Explicație:

Daca vrei sa ai alta functie de random poti schimba

Alte întrebări interesante