In C++ Se dă o matrice mt cu n linii și m coloane. Să se rotească matricea dată cu 90 de grade spre stânga.
Date de intrare
De pe prima linie se citesc de la tastatură numerele n și m. De pe următoarele n linii se citesc m numere naturale care reprezintă elementele matricei.
Date de ieșire
Programul va afișa pe ecran matricea rezultată în urma rotirii.
Restricții și precizări
1 ≤ n, m ≤ 50
1 ≤ mt[i][j] ≤ 3 000
Exemplu
Date de intrare....... Date de ieșire
4 3
1 2 3
5 6 7
9 10 11
13 14 15............ 3 7 11 15
2 6 10 14
1 5 9 13
Răspunsuri la întrebare
Răspuns:
#include <iostream>
using namespace std;
const int MAX = 2501;
int main()
{
int mt[MAX][MAX], transpusa[MAX][MAX];
int n, m;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> mt[i][j];
transpusa[j][i] = mt[i][j];
}
}
for (int i = m; i >= 1; i--) {
for (int j = 1; j <= n; j++) {
cout << transpusa[i][j] << " ";
}
cout << endl;
}
return 0;
}
Explicație:
Citim matricea si ii facem transpusa in transpusa[MAX][MAX].
Transpusa se obtine prin schimbarea liniilor in coloane si a coloanelor in linii (adica citim elementele de pe linie si le scriem pe coloana sau invers). Am atasat o reprezentare pentru a fi mai usor de inteles.
Pe urma, pentru a obtine rotirea in sens trigonometric cu 90°, vom inversa ordinea liniilor (ultimul for din program executa acest lucru).
Greseala este ca nu am pus fisiere, pentru ca nu ai specificat in enunt. Daca nu este aceea, imi poti trimite link-ul unde iti da 0 puncte si voi incerca sa rezolv.
using namespace std;
int main()
{
int n,m, mt[101][101], aux[101][101];
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> mt[i][j];
aux[j][i] = mt[i][j];
}
}
for (int i = m; i >= 1; i--) {
for (int j = 1; j <= n; j++) {
cout << aux[i][j] << " ";
}
cout << endl;
}
return 0;
}