创建一个二维数组类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;
}
输入描述
第一行输入二维数组的行数
从第二行开始,每一行输入二维数组的一行
输出描述
第一行输出行数和列数
第二行输出数组第一行的最大值、最小值和平均值
第三行输出数组最后一行的最大值、最小值和平均值
第四行输出整个数组的最大值、最小值和平均值
样例输入
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列的数组
#include<iostream>
using namespace std;
class Array2D
{
public:
Array2D(int r);
~Array2D();
int getRows();
int getColumns();
void setElem(int i,int j,double n);
double getMaxOfRow(int i);
double getMinOfRow(int i);
double getMaxOfArray();
double getMinOfArray();
double getAvgOfRow(int i);
double getAvgOfArray();
private:
int rows;
double (*a)[8];
};
Array2D::Array2D(int r)
{
rows = r;
a = new double [rows][8];
}
Array2D::~Array2D()
{
delete a;
cout<<"释放了一个"<<rows<<"行8列的数组"<<endl;
}
void Array2D::setElem(int i,int j,double n)
{
a[i][j] = n;
}
int Array2D::getRows()
{
return rows;
}
int Array2D::getColumns()
{
return 8;
}
double Array2D::getMaxOfRow(int i)
{
double max = a[i][0];
for(int b = 0;b < 8; b++)
if(a[i][b] > max)
max = a[i][b];
return max;
}
double Array2D::getMinOfRow(int i)
{
double min = a[i][0];
for(int b = 0;b < 8; b++)
if(a[i][b] < min)
min = a[i][b];
return min;
}
double Array2D::getMaxOfArray()
{
double max = a[0][0];
for(int m = 0; m < rows; m++)
for(int n = 0; n < 8; n++)
if (a[m][n]>max)
max = a[m][n];
return max;
}
double Array2D::getMinOfArray()
{
double min = a[0][0];
for(int m = 0; m < rows; m++)
for(int n = 0; n < 8; n++)
if (a[m][n]<min)
min = a[m][n];
return min;
}
double Array2D::getAvgOfRow(int i)
{
double sum = 0;
for(int m = 0;m < 8;m++)
sum += a[i][m];
return sum/8;
}
double Array2D::getAvgOfArray()
{
double sum = 0;
for(int m = 0; m < rows; m++)
for(int n = 0; n < 8; n++)
sum += a[m][n];
return sum/(8*rows);
}
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;
}