`
bulote
  • 浏览: 1310467 次
文章分类
社区版块
存档分类
最新评论

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

 
阅读更多

编写并测试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);
}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics