0
点赞
收藏
分享

微信扫一扫

UJN【C++指针】矩阵类(二维数组指针)

梦为马 2022-04-14 阅读 67
c++

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();
}
举报

相关推荐

0 条评论