创建一个二维数组类Array2D。该类有私有成员rows,用于表示内部的double型二维数组的行数。 创建二维数组类对象时,需初始化rows,并根据它们的值在内部动态内存分配一个rows行8列的double型二维数组。 该类有返回行数和列数的成员函数;有求全数组平均值的成员函数;有求某一行平均值成员函数; 该类还有求全数组最大值和最小值的成员函数,以及求某一行最大值或最小值的成员函数。 请根据下面的main函数完成该类的设计: int main(){ int r; double n; cin>>r; Array2D arr(r); int i,j; for(i=0;i<r;i++) for(j=0;j<8;j++){ cin>>n; arr.setElem(i,j,n); } cout<<arr.getRows()<<" "<<arr.getColumns()<<endl; cout<<arr.getMaxOfRow(0)<<" "<<arr.getMinOfRow(0)<<" "<<arr.getAvgOfRow(0)<<endl; cout<<arr.getMaxOfRow(r-1)<<" "<<arr.getMinOfRow(r-1)<<" "<<arr.getAvgOfRow(r-1)<<endl; cout<<arr.getMaxOfArray()<<" "<<arr.getMinOfArray()<<" "<<arr.getAvgOfArray()<<endl; return 0; }
时间: 2023-10-30 22:33:08 浏览: 34
好的,以下是根据您提供的main函数的Array2D类的设计:
```c++
#include <iostream>
using namespace std;
class Array2D {
private:
int rows; // 行数
double **data; // 数据二维数组指针
public:
// 构造函数
Array2D(int r) {
rows = r;
data = new double*[rows];
for (int i = 0; i < rows; i++) {
data[i] = new double[8];
}
}
// 设置元素
void setElem(int row, int col, double value) {
data[row][col] = value;
}
// 获取行数
int getRows() {
return rows;
}
// 获取列数
int getColumns() {
return 8;
}
// 某一行平均值
double getAvgOfRow(int row) {
double sum = 0;
for (int j = 0; j < 8; j++) {
sum += data[row][j];
}
return sum / 8;
}
// 某一行最大值
double getMaxOfRow(int row) {
double max = data[row][0];
for (int j = 1; j < 8; j++) {
if (data[row][j] > max) {
max = data[row][j];
}
}
return max;
}
// 某一行最小值
double getMinOfRow(int row) {
double min = data[row][0];
for (int j = 1; j < 8; j++) {
if (data[row][j] < min) {
min = data[row][j];
}
}
return min;
}
// 全数组平均值
double getAvgOfArray() {
double sum = 0;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 8; j++) {
sum += data[i][j];
}
}
return sum / (rows * 8);
}
// 全数组最大值
double getMaxOfArray() {
double max = data[0][0];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 8; j++) {
if (data[i][j] > max) {
max = data[i][j];
}
}
}
return max;
}
// 全数组最小值
double getMinOfArray() {
double min = data[0][0];
for (int i = 0; i < rows; i++) {
for (int j = 0; j < 8; j++) {
if (data[i][j] < min) {
min = data[i][j];
}
}
}
return min;
}
};
```
注意,上述代码中使用了动态内存分配,需要在析构函数中释放内存:
```c++
// 析构函数
~Array2D() {
for (int i = 0; i < rows; i++) {
delete[] data[i];
}
delete[] data;
}
```