Răspuns :
#include <iostream>
using namespace std;
int mt[51][51], aux[51][51];
//Functie pentru afisarea matricei cu n linii si m coloane
void afisare_matrice(int mat[51][51], int n, int m) {
for (int linie = 0; linie < n; ++linie) {
for (int coloana = 0; coloana < m; ++coloana) {
cout << mat[linie][coloana] << " ";
}
cout << '\n';
}
}
int main() {
int n, m, i, j, l;
cin >> n >> m;
//Citeste matrice
for (int row = 0; row < n; ++row) {
for (int column = 0; column < m; ++column) {
cin >> mt[row][column];
}
}
//Citeste poz submatr
cin >> i >> j >> l;
--i;
--j;
//Copiaza submatricea separat
for (int linie = i; linie <= i + l; ++linie) {
for (int coloana = j; coloana <= j + l; ++coloana) {
aux[linie-i][coloana-j] = mt[linie][coloana];
}
}
//Transpune submatricea
for (int linie = 0; linie < l; ++linie) {
for (int coloana = 0; coloana < linie; ++coloana) {
swap(aux[linie][coloana], aux[coloana][linie]);
}
}
//Copiaza matricea transpusa de jos in sus pe coloane in matricea originala
for (int coloana = 0; coloana < l; ++coloana) {
for (int linie = 0; linie < l; ++linie) {
mt[i + linie][j + coloana] = aux[l - linie-1][coloana];
}
}
afisare_matrice(mt, n, m);
return 0;
}
► Explicatie :
◘ Copiem submatricea separat, o rotim la 90 de grade spre stanga si apoi o lipim la loc.
◘ Putem roti o matrice la 90 de grade spre stanga astfel :
- O transpunem
- O scriem de jos in sus (Inversam prima linie cu ultima, a doua linie cu penultima, a treia cu a treia de la sfarsit, etc. )
Vă mulțumim că ați vizitat platforma noastră dedicată Informatică. Sperăm că informațiile prezentate v-au fost utile. Dacă aveți întrebări sau aveți nevoie de suport suplimentar, vă rugăm să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la lista de favorite!