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

Se dă o matrice pătratică de dimensiune n. Aceasta este împărțită în patru sectoare de către diagonala principală și cea secundară. Să se efectueze o permutare circulară a sectoarelor, în sensul acelor de ceasornic.

Date de intrare
Pe prima linie se află numărul n. Pe următoarele n linii se află câte n numere separate prin câte un spațiu, reprezentând elementele matricei.

Date de ieșire
Programul va afișa matricea după efectuarea permutării.

Restricții
1 ≤ n ≤ 50
1 ≤ m[i][j] ≤ 100
Exemple
Date de intrare Date de ieșire
3
1 2 3
4 5 6
7 8 9 1 4 3
8 5 2
7 6 9
4
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44 11 31 21 14
42 22 23 12
43 32 33 13
41 34 24 44
5
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
51 52 53 54 55 11 41 31 21 15
52 22 32 24 12
53 43 33 23 13
54 42 34 44 14
51 45 35 25 55
Limbaj C++

Răspunsuri la întrebare

Răspuns de grigore2018
0

Răspuns:

#include <iostream>

using namespace std;

const int MAX_N = 50;

int n;

int matrix[MAX_N][MAX_N];

void rotate() {

   for (int i = 0; i < n / 2; i++) {

       for (int j = i; j < n - i - 1; j++) {

           int temp = matrix[i][j];

           matrix[i][j] = matrix[j][n-1-i];

           matrix[j][n-1-i] = matrix[n-1-i][n-1-j];

           matrix[n-1-i][n-1-j] = matrix[n-1-j][i];

           matrix[n-1-j][i] = temp;

       }

   }

}

int main() {

   cin >> n;

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n; j++) {

           cin >> matrix[i][j];

       }

   }

   rotate();

   for (int i = 0; i < n; i++) {

       for (int j = 0; j < n; j++) {

           cout << matrix[i][j] << " ";

       }

       cout << endl;

   }

   return 0;

}


Juju93: Salut si multumesc de ajutor dar nu e corecta rezolvarea.
Juju93: Astea sunt datele de intrare 4
11 12 13 14
21 22 23 24
31 32 33 34
41 42 43 44
Juju93: Si asa datele de iesire 11 31 21 14
42 22 23 12
43 32 33 13
41 34 24 44
Juju93: Doar zonele N,S,E,V trebuie mutate.
Alte întrebări interesante