c++问题,解答附上代码,急求解答!拜托好心人了

1. 定义一个二维数组CTwoArray类:
(1)提示:下面是类的定义
class CTwoArray
{
int *ptr; //数组指针,指向二维数组的第一行第一列的元素
int row; //数组行数
int col; //数组列数
public:
CTwoArray(int m,int n);//构造函数
~CTwoArray();//析构函数
CTwoArray(CTwoArray &a); //拷贝构造函数
void set(); //从键盘输入数据,给二维数组元素赋值
CTwoArray& operator+(CTwoArray &b);//重载为类的成员函数
void print(); //输出二维数组元素
};
注:大家可以根据程序的需要,在类中再增加成员函数。
(2)要求:
l 构造函数用于动态建立有m×n个元素的一维数组(要将二维数组转换为内存中存放的形式)来存放m行n列的二维数组的元素,并对该数组的元素初始化为0,ptr指向数组的首地址;

提示:
要求用new运算符动态建立一维数组来存放二维数组元素。所以在访问二维数组元素时需经过转换,即二维数组中第i行第j列元素在一维数组中的位置是:ptr+i×col+j,等同于*(ptr+i)+j 都表示第i行第j列元素的地址
l 析构函数用于释放动态数组所占用的存储空间;
l 拷贝构造函数,要求必须定义
l 定义set()函数,从键盘上接收数据给二维数组元素赋值。
l 定义print()函数输出二维数组元素的值。
重载“+”运算符,实现两个同维数的二维数组的相加;要求重载为二维数组类的成员函数,在主函数中实例化二维数组,实现两个二维数组的相加,并把相加结果显示出来

#include <stdio.h>
class CTwoArray
{
      int *ptr; //数组指针,指向二维数组的第一行第一列的元素
      int row; //数组行数
      int col; //数组列数
public:
      CTwoArray(int m,int n);//构造函数
      ~CTwoArray();//析构函数
      CTwoArray(const CTwoArray &a); //拷贝构造函数
      void set();  //从键盘输入数据,给二维数组元素赋值
   CTwoArray operator+(CTwoArray &b);//重载为类的成员函数
   void print(); //输出二维数组元素   
};

CTwoArray::CTwoArray(int m,int n)
{
ptr = new int[m*n];
row = m;
col = n;
}
CTwoArray::~CTwoArray()
{
delete[] ptr;
}
CTwoArray::CTwoArray(const CTwoArray &a)
{
row = a.row;
col = a.col;
ptr = new int[row*col];
}
void CTwoArray::set()
{
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
scanf("%d",ptr+j+i*col);
}
}
}

CTwoArray CTwoArray::operator+(CTwoArray &b)
{
int m = row<b.row?row:b.row;
int n = col<b.col?col:b.col;
CTwoArray obj(m,n);
for(int i=0;i<m;i++)
{
for(int j=0;j<n;j++)
{
obj.ptr[j+i*col] = ptr[j+i*col] + b.ptr[j+i*col];
}
}
return obj;
}
void CTwoArray::print()
{
for(int i=0;i<row;i++)
{
for(int j=0;j<col;j++)
{
printf("%d ",ptr[j+i*col]);
}
printf("\n");
}
}
int main()
{
CTwoArray a(3,3);
CTwoArray b(3,3);
printf("Input a:\n");
a.set();
printf("Input b:\n");
b.set();
printf("Output a:\n");
a.print();
printf("Output b:\n");
b.print();
printf("Output a+b:\n");
(a+b).print();

}

追问

能不能写好发给我,还有要标准的格式

温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜