用C++解决矩阵的问题
问题描述:
这是原题目:{
重建给定的矩形矩阵,移动其中的字符串,
这样,结果矩阵的行中的元素之和就会增加。
-输出收到的矩阵;
-在其中查找不包含负数的第一列的数目元素。
}
最后一个输出的要求:(在其中查找不包含负数的第一列的数目元素)我不是很清楚,
但是大概的要求是:
输入一个n乘n的随机矩阵:
1 4 7
2 5 8
3 6 9
1.输出矩阵
2矩阵的行相加(1+4+7=12,2+5+8=15,3+6+9=18)后输出显示得数
然后按得数的大小排列每一行,输出显示:
3 6 9
2 5 8
1 4 7
答
运行图及代码如下,如有帮助,请帮忙采纳一下,谢谢。
代码
#include <iostream>
using namespace std;
int main()
{
int i,j,n;
int**a;
int* sum;
int* index;
//输入n
cin >> n;
a = new int*[n];
sum = new int[n]; //存储每一行的和
index = new int[n]; //存储行的下标
//输入n*n的矩阵
for(i=0;i<n;i++)
{
a[i] = new int[n];
sum[i] = 0;
index[i] = i;
for(j=0;j<n;j++)
{
cin >> a[i][j];
sum[i] += a[i][j];
}
}
//按照行的和排序
for (i=0;i<n-1;i++)
{
for (j=0;j<n-1-i;j++)
{
if (sum[j] < sum[j+1])
{
int t = sum[j];
sum[j] = sum[j+1];
sum[j+1] = t;
//调整下标
t = index[j];
index[j] = index[j+1];
index[j+1]=t;
}
}
}
//输出
for (i=0;i<n;i++)
{
int t = index[i];
for(j=0;j<n;j++)
{
if(j<n-1)
cout << a[t][j] << " ";
else
cout << a[t][j] << endl;
}
}
delete[] sum;sum = 0;
delete[] index;index=0;
for(i=0;i<n;i++)
{
delete[] a[i];
a[i] = 0;
}
delete[] a;
a = 0;
return 0;
}