vvhungtam
Tổng số bài gửi : 11 Registration date : 16/09/2007
| Tiêu đề: mat tran xoan oc va ma tran zit zat 7/4/2008, 10:09 | |
| - Code:
-
#include<iostream> #include<iomanip>
using namespace std;
void nhapmang(int a[][100],int& n); void xuatmang(int a[][100],int n); void matranxoanoc(int a[][100],int n); void matranzitzat(int a[][100],int n); void mangtang(int b[],int a[][100],int n); void insertionsort_chentructiep(int a[],int n);
int a[100][100],n; void main() { nhapmang(a,n); matranxoanoc(a,n); matranzitzat(a,n); } void nhapmang(int a[][100],int& n) { cout<<"nhap n: "; cin>>n; cout<<"nhap mang: \n"; for(int i=0;i<n;++i) for(int j=0;j<n;j++) { cout<<"a["<<i+1<<"]["<<j+1<<"]="; cin>>a[i][j]; } } void xuatmang(int a[][100],int n) { for(int i=0;i<n;++i) { for(int j=0;j<n;++j) cout<<setw(3)<<a[i][j]; cout<<endl; } } void matranxoanoc(int a[][100],int n) { int i=0,j=0,k=0,l=n-1,c[100][100],dem=1,b[100]; mangtang(b,a,n); int m=(n%2)?n*n-1:n*n; while(k<m) switch(dem) { case 1: { for(int t=0;t<l;++t) c[i][j+t]=b[k++]; j=j+l; dem++; }break; case 2: { for(int t=0;t<l;++t) c[i+t][j]=b[k++]; i=i+l; dem++; }break; case 3: { for(int t=0;t<l;++t) c[i][j-t]=b[k++]; j=j-l; dem++; }break; case 4: { for(int t=0;t<l;++t) c[i-t][j]=b[k++]; i=i-l+1; j=j+1; l=l-2; dem=1; }break; } if(n % 2) c[n/2][n/2]=b[n*n-1]; xuatmang(c,n);cout<<endl; } void matranzitzat(int a[][100],int n) { int b[100],i=0,j=0,dem=1,k=0,c[100][100]; mangtang(b,a,n); for(int t=1;t<2*n;++t) { switch(dem) { case 1: { while(i>=0 && j<=n-1) { c[i][j]=b[k++]; i--;j++; } i++;j--; if(j==n-1) i++; else j++; dem++; }break; case 2: { while(i<=n-1 && j>=0) { c[i][j]=b[k++]; i++;j--; } i--;j++; if(i==n-1) j++; else i++; dem=1; }break; } } xuatmang(c,n);cout<<endl; for(int s=0;s<n*n;++s) cout<<b[s]<<' '; } void mangtang(int b[],int a[][100],int n) { int k=0; for(int i=0;i<n;++i) for(int j=0;j<n;j++) b[k++]=a[i][j]; insertionsort_chentructiep(b,n*n); } void insertionsort_chentructiep(int a[],int n) { int x,i,k; for(i=1;i<n;i++) { x=a[i]; k=i-1; while(k>=0 && a[k]>x) { a[k+1]=a[k]; k--; } if(i!=k+1) a[k+1]=x; } }
| |
|