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

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 de Apollyon
1

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;

}


danielabrz: Buna! Multumesc pentru raspuns! dar.... totul merge bine pana la sortare:
danielabrz: Nu recunoaste "sort"
danielabrz: Revin... scuze! ... functioneaza. Uitasem sa declar .
Alte întrebări interesante