Răspuns :
#include <iostream>
#include <ctime>
#include <random>
using namespace std;
//Alocare dinamica matrice
int** alocare_matrice(int nLinii, int nColoane) {
int** p = new int* [nLinii];
for (int index = 0; index < nLinii; index++)
p[index] = new int[nColoane];
return p;
}
//Dealocare matrice
void dealocare_matrice(int **matrice, int nLinii) {
for (int index = 0; index < nLinii; index++)
delete[] matrice[index];
delete[] matrice;
}
//Afisare matrice
void afisare_matrice(int** matrice, int nLinii, int nColoane) {
cout << endl;
for (int i = 0; i < nLinii; i++) {
cout << endl;
for (int j = 0; j < nColoane; j++) {
cout << matrice[i][j] << " ";
}
}
cout << endl;
}
//Citire date
void citire_date(int **matrice, int& nLinii, int& nColoane) {
cout << "Introduceti elementele matricei : ";
for (int linie = 0; linie < nLinii; linie++) {
for (int coloana = 0; coloana < nLinii; coloana++) {
cin >> matrice[linie][coloana];
}
}
}
//Alocare cu elemente aleatorii
void aleatoriu(int** matrice, int& nLinii, int& nColoane) {
srand(time(0));
for (int linie = 0; linie < nLinii; linie++) {
for (int coloana = 0; coloana < nLinii; coloana++) {
matrice[linie][coloana]= rand();
}
}
}
//Insertion_sort
void insertionSort(int *array, int dim)
{
int i, cheie, j;
for (i = 1; i < dim; i++)
{
cheie = array[i];
j = i - 1;
while (j >= 0 && array[j] > cheie)
{
array[j + 1] = array[j];
j = j - 1;
}
array[j + 1] = cheie;
}
}
//Sortarii linii matrice
void sortare_matrice_linii(int** matrice, int n_linii, int n_coloane) {
for (int index = 0; index < n_linii; index++)
insertionSort(matrice[index], n_coloane);
}
int meniu() {
cout << "\n1. Alocarea dinamica a memoriei pentru tablourile dimensionale";
cout << "\n2. Introducerea elementelor tabloului de la tastatura";
cout << "\n3. Completarea tabloului cu valori aleatorii";
cout << "\n4. Sortarea elementelor tabloului";
cout << "\n5. Afisarea elementelor tabloului la ecran";
cout << "\n6. Eliberarea memoriei alocate pentru tablou";
cout << "\n0. Iesire din program";
int alegere;
cout << "\n\tAlegere : ",cin >> alegere;
return alegere;
}
int main() {
int optiune=meniu();
int** matrice=NULL;
int n_linii, n_coloane;
while (optiune) {
switch (optiune)
{
case 1:
if (matrice) {
cout << "\nEroare, matricea e deja alocata !";
exit(1);
}
cout << "\nIntroduceti numarul de linii si coloane : ";
cin >> n_linii >> n_coloane;
matrice = alocare_matrice(n_linii, n_coloane);
break;
case 2:
if (matrice) {
cout << "\nEroare, matricea nu e alocata !";
exit(1);
}
citire_date(matrice, n_linii, n_coloane);
break;
case 3:
if (!matrice) {
cout << "\nEroare, matricea nu e alocata !";
exit(1);
}
aleatoriu(matrice, n_linii, n_coloane);
break;
case 4:
if (!matrice) {
cout << "\nEroare, matricea nu e alocata !";
exit(1);
}
sortare_matrice_linii(matrice, n_linii, n_coloane);
break;
case 5:
if (!matrice) {
cout << "\nEroare, matricea nu e alocata !";
exit(1);
}
afisare_matrice(matrice, n_linii, n_coloane);
break;
case 6:
if (!matrice) {
cout << "\nEroare, matricea nu e alocata !";
exit(1);
}
dealocare_matrice(matrice, n_linii);
break;
case 0:
if (matrice)dealocare_matrice(matrice, n_linii);
exit(0);
break;
default:
cout << "\nEroare, nu ati selectat o optiune valida !";
break;
}
optiune = meniu();
}
}