Sa se scrie un program care introduce de la tastatura o matrice patratica cu n linii si n coloane numere intregi. Sa se parcurga matricea si sa se inmulteasca cu 2 elementele impare ale acesteia, iar elementele pare sa se imparta la 2, apoi sa se ordoneze crescator elementele de pe fiecare linie. Sa se afiseze pe ecran matricea finala.
in c++...
#include
using namespace std;
Please!!!
Răspunsuri la întrebare
Răspuns:
#include <algorithm>
#include <iostream>
int** creareMatrice(size_t numarLiniiSiColoane);
void afisareMatrice(int** pMatrice, size_t numarLiniiSiColoane);
void imparteSauInmulteste(int** pMatrice, size_t numarLiniiSiColoane);
void sortareMatrice(int** pMatrice, size_t numarLiniiSiColoane);
void stergeMatrice(int** pMatrice, size_t numarLiniiSiColoane);
int main() {
/* citim n-ul (nr. de linii și coloane)*/
size_t n;
std::cout << "Introdu n: ";
std::cin >> n;
/* creăm matricea cu n linii și coloane */
int** pMatrice = creareMatrice(n);
/* afișăm inițial matricea creată (opțional, mai mult ca să testăm că a fost creată corect) */
std::cout << "Matricea inainte de inmultire/impartire si sortare:\n";
afisareMatrice(pMatrice, n);
/* parcurgem matricea, înmulțim cu 2 nr. impare, împărțim cu 2 numerele pare */
imparteSauInmulteste(pMatrice, n);
std::cout << "\nMatricea dupa inmultire/impartire:\n";
afisareMatrice(pMatrice, n);
/* sortăm liniile matricei crescător */
sortareMatrice(pMatrice, n);
std::cout << "\nMatricea dupa sortare:\n";
afisareMatrice(pMatrice, n);
/* la final dealocăm memoria */
stergeMatrice(pMatrice, n);
return 0;
}
int** creareMatrice(size_t numarLiniiSiColoane) {
int** pMatrice = new (std::nothrow) int*[numarLiniiSiColoane];
/* dacă operatorul new n-a putut aloca memorie ieșim din program */
if (pMatrice == nullptr) {
std::cerr << "Eroare la alocarea memoriei!\n";
exit(EXIT_FAILURE);
}
for (int i = 0; i < numarLiniiSiColoane; i++) {
pMatrice[i] = new (std::nothrow) int[numarLiniiSiColoane];
/* dacă operatorul new n-a putut aloca memorie ieșim din program */
if (pMatrice[i] == nullptr) {
std::cerr << "Eroare la alocarea memoriei!\n";
exit(EXIT_FAILURE);
}
/* dacă totul a mers bine până aici citim numerele */
for (int j = 0; j < numarLiniiSiColoane; j++) {
std::cout << "pMatrice[" << i << "][" << j << "] = ";
std::cin >> pMatrice[i][j];
}
}
return pMatrice;
}
void afisareMatrice(int** pMatrice, size_t numarLiniiSiColoane) {
for (int i = 0; i < numarLiniiSiColoane; i++) {
for (int j = 0; j < numarLiniiSiColoane; j++) {
std::cout << pMatrice[i][j] << " ";
}
std::cout << "\n";
}
}
void imparteSauInmulteste(int** pMatrice, size_t numarLiniiSiColoane) {
for (int i = 0; i < numarLiniiSiColoane; i++) {
for (int j = 0; j < numarLiniiSiColoane; j++) {
int numarCurent = pMatrice[i][j];
/* dacă e par împărțim, altfel înmulțim */
pMatrice[i][j] = numarCurent % 2 == 0 ? numarCurent / 2 : numarCurent * 2;
}
}
}
/* ne folosim de std::sort din algorithm pentru a sorta array-ul de numere, poți folosi și un algoritm de sortare */
void sortareMatrice(int** pMatrice, size_t numarLiniiSiColoane) {
for (int i = 0; i < numarLiniiSiColoane; i++) {
std::sort(pMatrice[i], pMatrice[i] + numarLiniiSiColoane);
}
}
void stergeMatrice(int** pMatrice, size_t numarLiniiSiColoane) {
for (int i = 0; i < numarLiniiSiColoane; i++) {
delete[] pMatrice[i];
}
delete[] pMatrice;
}