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

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 de bobita25
0

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).

Anexe:

birouflorin: multumesc dar primesc 0 puncte
bobita25: Daca este vorba despre problema aceasta -> https://www.pbinfo.ro/probleme/224/rotire
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.
birouflorin: multumesc am rezolvat doar am schimbat cateva date
birouflorin: #include
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;
}
Alte întrebări interesante