现在的位置: 首页 > 综合 > 正文

实训C++语言设计——3*3矩阵转置函数

2013年09月17日 ⁄ 综合 ⁄ 共 1145字 ⁄ 字号 评论关闭

 编写并测试3*3矩阵转置函数,并使用数组保存3*3矩阵。
算法:先在主函数中定义一个二维数组,然后通过print函数来完成输出功能,这是通过喜欢来完成的,然后就是转置,转置时可以通过一个辅助数组来完成,先把距阵中的值传到此辅助数组中,然后把i行j列中的值传到j行i列中即可完成。
代码:
#include<iostream.h>
void main()
{
 int a[3][3],i,j,b[3][3];
 cout<<"请依次输入距阵中的元素:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    cin>>a[i][j];
   }
 }
 cout<<"此矩阵中的元素为:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    cout<<a[i][j];
 cout<<"  ";
   }
   cout<<endl;
 }
 cout<<"经过转置后矩阵为:"<<endl;
 for( i=0;i<3;i++)
 {
   for( j=0;j<3;j++)
   {
    b[i][j]=a[j][i];
 cout<<b[i][j];
 cout<<"  ";
   }
   cout<<endl;
 }
}
2使用动态内存分配生成动态数组来完成上述功能。
算法:先在主函数中定义一个整形指针,让它指向一个数组,在输出元素时,通过指针自增即可,在实现转置时,先把指针值传过去,然后通过类似上面的方式即可完成。
代码:
#include<iostream.h>
#include<stdlib.h>
void print(int *a)
{
  for(int i=0;i<9;i++)
  {
   cout<<*a;
   cout<<"  ";
   a++;
   if((i+1)%3==0)cout<<endl;
  }
}

void reserve(int *&a)
{
  int b[3][3],i,j;
  int *c;
  c=a;
  for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
 {
  b[i][j]=*a;
  a++;
 }
  }
  a=c;
for(i=0;i<3;i++)
  {
    for(j=0;j<3;j++)
 {
  *a=b[j][i];
  a++;
 }
  }
a=c;
}

void main()
{
  int i,j;
  int *a,*b;
  a=(int *)new int[3][3];
  b=a;
  cout<<"请依次输入距阵中的元素:"<<endl;
  for(i=0;i<9;i++)
  {
  cin>>*a;
  a++;
  }
  a=b;
cout<<"此距阵中的元素为:"<<endl;
print(a);
reserve(a);
cout<<"经过转置后此距阵为:"<<endl;
print(a);
}

抱歉!评论已关闭.