Problem B: 【C++指针】矩阵类
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 602 Solved: 415
[Submit][Status][Web Board]
Description
用指向指针的指针实现矩阵类matrix,成员方法如下:
构造函数matrix(int m,int n):m为矩阵的行数,n为矩阵的列数,第i行第j列的元素赋值为按行优先顺序存放的元素的序号;
at(int, i)返回按行顺序优先的第i个元素
at(int i,int j):返回第i行第j列元素的值,比如at(3,4)是矩阵的第3行第4列的元素,注意和二维数组下标的差别。
sum():计算矩阵所有元素的和。
如3行4列矩阵构造为:
1 2 3 4
5 6 7 8
9 10 11 12
主函数如下:
int main()
{
int rowNum,colNum;
cin>>rowNum>>colNum;
matrix mat(rowNum,colNum);
cout<<mat.at(4)<<' '<<mat.at(3,4)<<' '<<mat.sum();
}
Input
矩阵的行数和列数
Output
输出3个数,第1个是矩阵行优先顺序下的第4个元素, 第2个是矩阵第3行4列的元素, 第3个是矩阵元素和
Sample Input
3 4
Sample Output
4 12 78
#include<bits/stdc++.h>
using namespace std;
int m[101][101];
int (*p)[101]=m;
int ans=1;
int s=0;
int rowNum,colNum;
class matrix{
public:
matrix (int x,int y){
for(int t=1;t<=x;t++)
for(int o=1;o<=y;o++){
*(*(p+t)+o)=ans++;
s+=*(*(p+t)+o);
}
}
int at(int x,int y){
return *(*(p+x)+y);
}
int at(int x){
return *(*(p+1)+x);
}
int sum(){
return s;
}
};
int main(){
cin>>rowNum>>colNum;
matrix mat(rowNum,colNum);
cout<<mat.at(4)<<' '<<mat.at(3,4)<<' '<<mat.sum();
}