Tin Kien Giang K31
Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

Tin Kien Giang K31

Chao mung den voi dien dan Tin-KG Khoa 31
 
Trang ChínhTìm kiếmLatest imagesĐăng kýĐăng Nhập

 

 mat tran xoan oc va ma tran zit zat

Go down 
Tác giảThông điệp
vvhungtam




Tổng số bài gửi : 11
Registration date : 16/09/2007

mat tran xoan oc va ma tran zit zat Empty
Bài gửiTiêu đề: mat tran xoan oc va ma tran zit zat   mat tran xoan oc va ma tran zit zat Empty7/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;
   }
}
Về Đầu Trang Go down
 
mat tran xoan oc va ma tran zit zat
Về Đầu Trang 
Trang 1 trong tổng số 1 trang
 Similar topics
-
» CTDL tao ma tran xoan oc

Permissions in this forum:Bạn không có quyền trả lời bài viết
Tin Kien Giang K31 :: Cộng Đồng :: Cộng Đồng :: Thảo luận chung-
Chuyển đến