移动学习网 导航

方阵的转置 c++? C++ 矩阵转置

2024-05-08m.verywind.com
C++ 矩阵的转置~

#include
#define N 3
using namespace std;

float a[N][N];

void output(float p[N][N])
{
int i, j;
for(i = 0; i < N; i ++)
for(j = 0; j < N;j ++)
{
cout<<p[i][j]<<" ";
if(j == N - 1)
cout<<endl;
}
}

void change(float p[N][N])
{
float t;
int i, j;
for(i > j || j > i, i=0; i < N; i ++)
for(j = i; j < N; j ++)
{
t = p[i][j];
p[i][j] = p[j][i];
p[j][i] = t;
}
}

int main()
{
int i, j;

cout<<"请输入一个"<<N<<"*"<<N<<"的二维数组:"<<endl;
for(i = 0; i < N; i ++)
for(j = 0; j < N; j ++)
{
cout<<"请输入第"<<i + 1<<"行第"<<j + 1<<"列:";
cin>>a[i][j];
}
cout<<"您输入的矩阵是:"<<endl;
output(a);
change(a);
cout<<"转置后的矩阵是:"<<endl;
output(a);

return 0;
}

经测试正常,若要求浮点数矩阵输出格式整齐,只需输出时加上输出格式即可~~

using namespace std;
float a[3][3];
int main()
{int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
//cout<<"转制后的矩阵是:"<<change()<<endl;//
change();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change()
{int i,j;
float t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//从i+1开始。执行交换
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
//{for(i=0;i<3;i++)
//{for(j=0;j<3;j++)
// return a[i][j];}//return 只返回一次,后面的语句不执行。
//cout<<endl;
//}
}

#include <iostream>
#include <string>
using namespace std;

class Matrix
{
private:
int *mat;
int row, col;
public:
Matrix(int, int);
Matrix(): Matrix(2, 3) {};
~Matrix();
void input();
void show();
void transform();
};

Matrix::Matrix(int row, int col)
{
cout << row << col << endl;
this->row = row;
this->col = col;
this->mat = new int[row * col];
}
Matrix::~Matrix()
{
if(mat) delete this->mat;
}
void Matrix::input()
{
cout << "输入矩阵:" << endl;

for(auto i = 0; i < row * col; i++)
cin >> *(mat + i);
}
void Matrix::show()
{
for(auto i = 0; i < row * col; i++)
cout << *(mat + i) << " ";

cout << endl;
}
void Matrix::transform()
{
int *p = new int[row * col];

for(auto i = 0; i < row; i++)
for(auto j = 0; j < col; j++)
*(p + j * row + i) = *(mat + i * col + j);

delete mat;
mat = p;
p = NULL;
}

int main()
{
Matrix m;
m.input();
m.show();
m.transform();
m.show();
}


好的谢谢谢你了了很多,哦哦好吧好吧好吧吧!!!!!你就说说而已吧啦啦啦啦啦啦德玛西亚马逊购物券券券后悔吗,哦哦!好的谢谢谢你了了的的的组词语盘点赞啊啊特别不好发酒疯了一样不用上班了没得一个一个一个个煤气费劲酒店管理处处留情人节的夜晚几百万个吻合肥房管局可好吃不饱饱的谢!!!!!!你就是个女的呢!你在哪里啊特别不好发酒疯了一样订了角色阿呆在宿舍楼上楼下午在哪个

主函数输入二维数组元素,调用子函数(自定义),求转置后的二维数组,返回主函数输出结果。
可以运行的代码
#include<iostream>
using namespace std;
float a[3][3];
int main()
{int i,j;
void change();
cout<<"请输入一个3*3的二维数组:"<<endl;
for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
//cout<<"转制后的矩阵是:"<<change()<<endl;//
change();
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
return 0;
}
void change()
{int i,j;
float t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//从i+1开始。执行交换
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
//{for(i=0;i<3;i++)
//{for(j=0;j<3;j++)
// return a[i][j];}//return 只返回一次,后面的语句不执行。
//cout<<endl;
//}
}
cin
分析
#include<iostream>调用输入输出文件
#include是个包含命令,就是把isdtream这个文件里的内容复制到这里;iostream.h是input output steam的简写,意思是标准的输入输出头文件,包含cin要输入的内容,cout 要输出的内容,这个是新标准
using namespace std;必须加的
float a[3][3];表示浮点型数组a的3行,3列;从0开始
int main()主函数
{int i,j;设置了两个整形的i,j变量;
void change();函数调用前必须声明
,位置可以放置定义的函数前任意位置;C由上往下的编译系统将无法识别,所以先告诉系统有个名字,这个名字要干你转置的内容;
cout<<"请输入一个3*3的二维数组:"<<endl;cout就是iostream库中的对象,开头调用istream的作用,在这里显现;《是插入符,是在屏幕输出;具体使用有两种情况1.cout<<"请输入:"<<endl;此处只说这一种;
for(i=0;i<3;i++)
for(j=0;j<3;j++)该for仅一条语句,不加{},但是上一个for具体我也不知道,如果有有知道请告知
cin>>a[i][j];》是提取符号操作,话句话说就是用于存放输入的变量,此处,一次存一个;》后面可以跟很多个变量的;
//cout<<"转制后的矩阵是:"<<change()<<endl;//
change();开始第一个change是声明,此处是调用main之外的(定义)函数
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<<a[i][j]<<" ";这句就是输出转置后的矩阵。等价于输出a[i][j];
cout<<endl;该处清除缓存区,否则内存就满了;
}
return 0;此处return和main前面的int对应;
}
函数定义,此处就完成交换转置函数,后续再说
void change()()空变量,main没有给他函数,void是返回空,一般把函数名change变量称为返回值。通俗点来说就是函数执行完毕后得到的结果,此处没有。
{int i,j;
float t;
for(i=0;i<3;i++)
for(j=i+1;j<3;j++)//从i+1开始。执行交换
{
t=a[i][j];
a[i][j]=a[j][i];
a[j][i]=t;
}
//{for(i=0;i<3;i++)
//{for(j=0;j<3;j++)
// return a[i][j];}//return 只返回一次,后面的语句不执行。
//cout<<endl;
//}
}

风帆股份给好尴尬滚滚滚

户户网菜鸟学习
联系邮箱
返回顶部
移动学习网