Sunteți pe pagina 1din 4

Sa se scrie cate o functie (sau dacă e necesar, și funcții ajutătoare) pentru

rezolvarea urmatoarelor sarcini:


1) citiere
2) tiparire
3) minimul si la ce coordonatoare apare cod
4) maximele linilor
5) minimul coloanelor
6) verificare daca e matrice liniare
7) stergerea liniei K
8) stergerea coloanei K
9) inserarea unei noi linii nule,pe poz k
10) inserarea unei coloane nule, de ordin k
11) afisarea numarului de ordine ale linilor cu elementele in ordine strict
crescatoare
12) afisarea numarului de ordine al coloanelor care contin cel putin odata o
valoare T
#include <iostream>
using namespace std;

void citireMatrice(int a[50][50], int& n, int& m) {


cout << "Introduceti numarul de linii si coloane ale matricei: ";
cin >> n >> m;

cout << "Introduceti elementele matricei:\n";


for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
cin >> a[i][j];
}

void tiparireMatrice(int a[50][50], int n, int m) {


cout << "Matricea este:\n";
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++)
cout << a[i][j] << " ";
cout << endl;
}
}

void minim_si_coordonate(int a[50][50], int n, int m) {


int minim = a[1][1], linie_min = 1, coloana_min = 1;

for (int i = 1; i <= n; i++)


for (int j = 1; j <= m; j++)
if (a[i][j] < minim) {
minim = a[i][j];
linie_min = i;
coloana_min = j;
}

cout << "Minimul este " << minim << " la coordonatele (" << linie_min << ", "
<< coloana_min << ")\n";
}

void maxime_linii(int a[50][50], int n, int m) {


for (int i = 1; i <= n; i++) {
int maxim_linie = a[i][1];
for (int j = 2; j <= m; j++)
if (a[i][j] > maxim_linie)
maxim_linie = a[i][j];
cout << "Maximul pe linia " << i << " este " << maxim_linie << endl;
}
}

void minim_coloane(int a[50][50], int n, int m) {


for (int j = 1; j <= m; j++) {
int minim_coloana = a[1][j];
for (int i = 2; i <= n; i++)
if (a[i][j] < minim_coloana)
minim_coloana = a[i][j];
cout << "Minimul pe coloana " << j << " este " << minim_coloana << endl;
}
}

bool matrice_liniara(int a[50][50], int n, int m) {


for (int i = 1; i <= n; i++)
for (int j = 1; j <= m; j++)
if (i != j && a[i][j] != 0)
return false;
return true;
}

void stergere_linie(int a[50][50], int& n, int m, int k) {


for (int i = k; i < n; i++)
for (int j = 1; j <= m; j++)
a[i][j] = a[i + 1][j];
n--;
}

void stergere_coloana(int a[50][50], int n, int& m, int k) {


for (int j = k; j < m; j++)
for (int i = 1; i <= n; i++)
a[i][j] = a[i][j + 1];
m--;
}

void inserare_linie_nula(int a[50][50], int& n, int m, int k) {


for (int i = n; i >= k; i--)
for (int j = 1; j <= m; j++)
a[i + 1][j] = 0;
n++;
}

void inserare_coloana_nula(int a[50][50], int n, int& m, int k) {


for (int j = m; j >= k; j--)
for (int i = 1; i <= n; i++)
a[i][j + 1] = 0;
m++;
}

void afisare_ordine_crescatoare(int a[50][50], int n, int m) {


for (int i = 1; i <= n; i++) {
bool crescatoare = true;
for (int j = 2; j <= m; j++)
if (a[i][j] <= a[i][j - 1]) {
crescatoare = false;
break;
}
if (crescatoare)
cout << "Linia " << i << " are elementele in ordine strict
crescatoare.\n";
}
}

void afisare_col_with_valoare(int a[50][50], int n, int m, int T) {


for (int j = 1; j <= m; j++) {
bool contine_T = false;
for (int i = 1; i <= n; i++)
if (a[i][j] == T) {
contine_T = true;
break;
}
if (contine_T)
cout << "Coloana " << j << " contine cel putin o data valoarea " << T
<< ".\n";
}
}

int main() {
int matrice[50][50];
int n, m;

citireMatrice(matrice, n, m);
tiparireMatrice(matrice, n, m);

minim_si_coordonate(matrice, n, m);
maxime_linii(matrice, n, m);
minim_coloane(matrice, n, m);

if (matrice_liniara(matrice, n, m))
cout << "Matricea este liniara.\n";
else
cout << "Matricea nu este liniara.\n";

int K;
cout << "Introduceti linia K pentru stergere: ";
cin >> K;
stergere_linie(matrice, n, m, K);
tiparireMatrice(matrice, n, m);

cout << "Introduceti coloana K pentru stergere: ";


cin >> K;
stergere_coloana(matrice, n, m, K);
tiparireMatrice(matrice, n, m);

cout << "Introduceti pozitia K pentru inserare linie nula: ";


cin >> K;
inserare_linie_nula(matrice, n, m, K);
tiparireMatrice(matrice, n, m);

cout << "Introduceti pozitia K pentru inserare coloana nula: ";


cin >> K;
inserare_coloana_nula(matrice, n, m, K);
tiparireMatrice(matrice, n, m);

afisare_ordine_crescatoare(matrice, n, m);

int T;
cout << "Introduceti valoarea T pentru cautare in coloane: ";
cin >> T;
afisare_col_with_valoare(matrice, n, m, T);

return 0;
}

S-ar putea să vă placă și