0
点赞
收藏
分享

微信扫一扫

C++动态创建二维数组

宁静的猫 2022-04-18 阅读 147
c++

创建一个二维数组类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;
}
举报

相关推荐

0 条评论