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

De afişat la ecran elementele multiple lui 5 din matricele R[1..N,1..M] şi T[1..K,1..L] cu
elemente reale prin suprograme!
Va rog ajutatime!!

Răspunsuri la întrebare

Răspuns de Apollyon
2

Răspuns:

#include <iostream>

#include <cstdlib>

#include <ctime>

using std::cout, std::cin, std::endl;

static int **creareMatrice(const size_t &numarLinii, const size_t &numarColoane)

{

   int **matrice = new int *[numarLinii];

   for (size_t i = 0; i < numarLinii; i++)

       matrice[i] = new int[numarColoane];

   return matrice;

}

static void populareMatrice(int **matrice, const size_t &numarLinii, const size_t &numarColoane)

{

   srand(static_cast<unsigned int>(time(nullptr)));

   for (size_t i = 0; i < numarLinii; i++)

       for (size_t j = 0; j < numarColoane; j++)

           matrice[i][j] = rand() % 100 + 1;

}

static void afisareMatrice(int **matrice, const size_t &numarLinii, const size_t &numarColoane)

{

   for (size_t i = 0; i < numarLinii; i++)

   {

       for (size_t j = 0; j < numarColoane; j++)

           cout << matrice[i][j] << " ";

       cout << endl;

   }

}

static void afisareMultipli(int **matrice, const size_t &numarLinii, const size_t &numarColoane)

{

   cout << "Multipli lui 5 din matrice sunt: ";

   for (size_t i = 0; i < numarLinii; i++)

   {

       for (size_t j = 0; j < numarColoane; j++)

           if (matrice[i][j] % 5 == 0)

               cout << matrice[i][j] << " ";

   }

   cout << endl;

}

static void dealocaMatrice(int **matrice, const size_t &numarLinii)

{

   for (size_t i = 0; i < numarLinii; i++)

       delete[] matrice[i];

   delete[] matrice;

   matrice = nullptr;

}

static void apelareFunctii(int **matrice, const size_t &numarLinii, const size_t &numarColoane)

{

   populareMatrice(matrice, numarLinii, numarColoane);

   afisareMatrice(matrice, numarLinii, numarColoane);

   afisareMultipli(matrice, numarLinii, numarColoane);

   dealocaMatrice(matrice, numarLinii);

}

int main()

{

   size_t numarLinii, numarColoane;

   cout << "Introdu numarul de linii si de coloane pentru prima matrice (de ex. 2 3) >> ";

   cin >> numarLinii >> numarColoane;

   int **matrice = creareMatrice(numarLinii, numarColoane);

   apelareFunctii(matrice, numarLinii, numarColoane);

   cout << "Introdu numarul de linii si de coloane pentru a doua matrice(de ex. 2 3) >> ";

   cin >> numarLinii >> numarColoane;

   matrice = creareMatrice(numarLinii, numarColoane);

   apelareFunctii(matrice, numarLinii, numarColoane);

   return 0;

}

Explicație:

Prima dată citești numărul de linii și de coloane ca mai apoi să creezi o matrice cu datele citite, de asta o să se ocupe creareMatrice(...). După ce ai terminat cu prima matrice, repeți aceași chestie și pentru a doua.

Ai următoarele funcții:

  • creareMatrice(...) care îți crează efectiv matricea cu numărul de linii și de coloane.
  • populareMatrice(...) care-ți introduce-n matricea creată câte un număr random între 1 și 100 ( ca să nu le introduci tu de la tastatură )
  • afisareMatrice(...) care efectiv îți afișează matricea creată ( ai un for care ia linia și al doilea for care ia element cu element de pe linia respectivă ).
  • afisareMultipli(...) verifică dacă numărul respectiv din matrice este multiplu de 5. Dacă este multiplu îl afișează.
  • dealocaMatrice(...) dealocă memoria alocată dinamic pentru matrice.
  • apelareFunctii(...) e o funcție care efectiv îți apelează populareMatrice, afisareMatrice, afisareMultipli, dealocaMatrice ca să nu le scrii de 2 ori pe fiecare-n main. E opțională, n-ai nevoie de ea dar îți face codul mai „clean”.
Alte întrebări interesante