006.二维数组类Array2D
题目描述
创建一个二维数组类Array2D。该类有私有成员rows,用于表示内部的double型二维数组的行数。
创建二维数组类对象时,需初始化rows,并根据它们的值在内部动态内存分配一个rows行8列的double型二维数组。
该类有返回行数和列数的成员函数;有求全数组平均值的成员函数;有求某一行平均值成员函数;
该类还有求全数组最大值和最小值的成员函数,以及求某一行最大值或最小值的成员函数。
请根据下面的main函数完成该类的设计:
int main(){
int r;
double n;
cin>>r;
Array2D arr®;
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;
}
输入描述
第一行输入二维数组的行数
从第二行开始,每一行输入二维数组的一行
输出描述
第一行输出行数和列数
第二行输出数组第一行的最大值、最小值和平均值
第三行输出数组最后一行的最大值、最小值和平均值
第四行输出整个数组的最大值、最小值和平均值
提示
你需要提交除了main函数之外的其他代码
样例输入
5
1 2 3 4 5 6 7 8
1 1 1 1 1 1 1 1
2 2 2 2 2 2 2 2
3 3 3 3 3 3 3 3
4 5 6 7 8 9 10 11
样例输出
5 8
8 1 4.5
11 4 7.5
11 1 3.6
释放了一个5行8列的数组
允许最长运行时间
1000ms
允许使用最大内存
128KB
#include<iostream>
#include<malloc.h>
using namespace std;
class Array2D
{
private:
int rows;
double(*arr)[8];
public:
Array2D(int rows)
{
this->rows = rows;
arr = (double(*)[8])malloc(rows * 8 * sizeof(double));
}
~Array2D()
{
cout << "释放了一个" << rows << "行8列的数组" << endl;
}
void setElem(int i,int j,double k)
{
arr[i][j] = k;
}
int getRows()
{
return rows;
}
int getColumns()
{
int j = 8;
return j;
}
double getMaxOfRow(int a)
{
double max = arr[a][0];
for (int i = 0; i < 8; i++)
{
if (arr[a][i] > max)
{
max = arr[a][i];
}
}
return max;
}
double getMinOfRow(int a)
{
double min = arr[a][0];
for (int i = 0; i < 8; i++)
{
if (arr[a][i] < min)
{
min = arr[a][i];
}
}
return min;
}
double getAvgOfRow(int a)
{
double sum = 0;
for (int i = 0; i < 8; i++)
{
sum += arr[a][i];
}
double avg;
avg = sum / 8;
return avg;
}
double getMaxOfArray()
{
double max = arr[0][0];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < 8; j++)
{
if (arr[i][j] > max)
{
max = arr[i][j];
}
}
}
return max;
}
double getMinOfArray()
{
double min = arr[0][0];
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < 8; j++)
{
if (arr[i][j] < min)
{
min = arr[i][j];
}
}
}
return min;
}
double getAvgOfArray()
{
double sum = 0;
for (int i = 0; i < rows; i++)
{
for (int j = 0; j < 8; j++)
{
sum += arr[i][j];
}
}
double avg;
avg = sum / (rows * 8);
return avg;
}
};
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;
}
运行结果: