#include <stdio.h>
struct sumnote //建立一个结构体,方便排序,用于记录行数。
{
int data; //求和的数据。
int line; //记录函数,用于输出。
};
class array //类array
{
public:
array(int m,int n)
{
row=m;
column=n;
}
void create()
{
int i=0;
matrix = new int* [row];
for(i=0;i<row;i++)
{
matrix[i] = new int [column];
}
sumarray = new sumnote[row];
for(i=0;i<row;i++)
{
sumarray[i].data = 0;
}
inorderarray = new int[row];
for(i=0;i<row;i++)
{
inorderarray[i] = 0;
}
}
void input()
{
printf("input the elements:\n");
for(int i=0;i<row;i++)
{
for(int j=0;j<column;j++)
{
scanf("%d",&matrix[i][j]);
}
}
}
void sum()
{
for(int i=0;i<row;i++)
{
int a=1;
sumarray[i].line=i;
for(int j=column-1;j>=0;j--)
{
sumarray[i].data += matrix[i][j]*a;
if(matrix[i][j]<10) a = 10*a;
else if(matrix[i][j]<100) a=100*a;
else a=1000*a; //假设矩阵元素小于1000.
}
}
}
void inorder()
{
sumnote temp;
for(int i=0;i<row;i++)
{
for(int j=i+1;j<row;j++)
{
if(sumarray[i].data>sumarray[j].data)
{
temp=sumarray[i];
sumarray[i]=sumarray[j];
sumarray[j]=temp;
}
}
}
}
void output()
{
printf("\n\n");
printf("sum of row :\n");
for(int k=0;k<row;k++)
{
printf("%d\n",sumarray[k].data);
}
printf("\n\n");
for(int i=0;i<row;i++)
{
int k=sumarray[i].line;
for(int j=0;j<column;j++)
{
printf("%d ",matrix[k][j]);
}
printf("\n");
}
}
private:
int **matrix;
int row;
int column;
sumnote *sumarray;
int *inorderarray;
};
int main() //主程序,main函数
{
printf("input the sixe of matrix\n");
int row=0,column=0;
scanf("%d%d",&row,&column);
array matrix(row,column);
matrix.create();
matrix.input();
matrix.sum();
matrix.inorder();
matrix.output();
return 0;
}
![](https://video.ask-data.xyz/img.php?b=https://iknow-pic.cdn.bcebos.com/91529822720e0cf3b7f0a64c0946f21fbe09aa06?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_600%2Ch_800%2Climit_1%2Fquality%2Cq_85%2Fformat%2Cf_auto)