Informatică, întrebare adresată de anonymousgirl, 9 ani în urmă

Cum pot sa rotesc o matrice 90 ,180 si 360 de grade ? (c++)


Lia96: Presupun ca interschimbi liniile cu coloanele.
Lia96: Eu am facut un program, numai ca nu rulează bine. Imi afiseaza prima linie bine, iar următoarele nu
Lia96: Am pus conditia a[i][k]=a[k][j]
Lia96: Dacă afii inaintea mea cum se rezolva proble asta, te rog sa mi-o trimiti!

Răspunsuri la întrebare

Răspuns de blindseeker90
8
Am facut programul cu urmatoarele presupuneri
Pentru matricea
1 2
3 4
5 6
rotatie dreapta
5 3 1
6 4 2

rotatie stanga
2 4 6
1 3 5

Rotatie 180 grade
6 5
4 3
2 1

Rotatie 360 grade este matricea insasi, obtii acelasi lucru
Imagineaza-ti ca si cum ai roti o bucata de bloc sau lego si o sa intelegi

#include <iostream>
using namespace std;

void afisare(int a[100][100],int nr_linii,int nr_col){
int i,j;
for(i=0;i<nr_linii;i++){
for(j=0;j<nr_col;j++){
cout<<a[i][j]<<" ";
}
cout<<endl;
}
}

int main(){
int a[100][100],n,m,i,j,rot90_dreapta[100][100],rot90_stanga[100][100],rot180[100][100];
cout<<"Introduceti dimensiunile:";
cin>>n>>m;
cout<<"Introduceti matricea:\n";
for(i=0;i<n;i++){
for(j=0;j<m;j++){
cin>>a[i][j];
}
}
for(i=0;i<m;i++){
for(j=0;j<n;j++){
rot90_dreapta[i][j]=a[n-1-j][i];
}
}
cout<<"Matrice rotita la 90 grade dreapta\n";
afisare(rot90_dreapta,m,n);
for(i=0;i<m;i++){
for(j=0;j<n;j++){
rot90_stanga[i][j]=a[j][m-1-i];
}
}
cout<<"Matrice rotita la 90 grade stanga\n";
afisare(rot90_stanga,m,n);

for(i=0;i<n;i++){
for(j=0;j<m;j++){
rot180[i][j]=a[n-1-i][m-1-j];
}
}
cout<<"Matrice rotita la 180 grade\n";
afisare(rot180,n,m);
cout<<"Matrice rotita la 360 grade\n";
afisare(a,n,m);

return 0;
}
Alte întrebări interesante