要求:
1、+运算符实现两个二维数组相加,一个二维数组在主函数内初始化传递给类的构造函数,第二个二维数组由用户输入。
2、[]运算符将二维数组按行进行索引,返回0~N*N-1之间的索引的数组元素值,如果输入参数不在范围内,输出”下标越界!",返回-1.
cont int N=3;//二维数组维数定义
class matrix
{ int m[N][N];
public:
matrix(int a[][]);//构造函数
int operator[]();//[]运算符重载
matrix operator+(matrix& b);//+运算符重载
void print();//输出
}
#include<iostream>
using namespace std;
const int N=3;//二维数组维数定义
class matrix{
int m[N][N];
public:
matrix(int a[][N]){
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
m[i][j] = a[i][j];
}
int operator[](const int pos){
if(pos<0 || pos >N*N-1){
printf("ERROR!");
return -1;
}
return this->m[pos/N][pos%N];
}
matrix operator+(const matrix b){
int _m[N][N];
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
_m[i][j] = this->m[i][j] + b.m[i][j];
return {_m};
}
void print(){
for(int i=0;i<N;i++){
for(int j=0;j<N;j++)
printf("%d ",m[i][j]);
printf("\n");
}
}
};
int main(){
int num[N][N] = {{1,2,3},{4,5,6},{7,8,9}};
matrix M1 = matrix(num);
M1.print();
printf("The No.8: %d\n", M1[8]);
printf("The No.3: %d\n", M1[3]);
printf("The No.-1: %d\n", M1[-1]);
printf("\nPlease input a matrix(%d*%d):\n",N,N);
for(int i=0;i<N;i++)
for(int j=0;j<N;j++)
scanf("%d",&num[i][j]);
matrix M2 = matrix(num);
matrix M3 = M1+M2;
M3.print();
return 1;
}
您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!
速戳参与调研>>>https://t.csdnimg.cn/Kf0y
C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html