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:
#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”.