2021-05-18

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;
}

运行结果:
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个数据可以使用Python进行解析和处理。可以按照以下步骤进行: 1. 将数据分割成每个数据项。 ``` data_items = data.split(',') ``` 2. 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中。 ``` data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) ``` 3. 对于每个小项,进行相应的转换。 ``` for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime if item[2] != '': # 操作转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串 ``` 4. 可以按照需要对数据进行进一步处理,如按照题号、时间等进行排序、筛选等操作。 完整的Python代码如下: ``` import datetime data = '''1#2021-05-18 14:31:55##初级会计实务,2#2021-05-18 14:31:57#12#初级会计实务,2#2021-05-18 14:32:08##初级会计实务,3#2021-05-18 14:32:09#12#初级会计实务,4#2021-05-18 14:32:34#12#初级会计实务,4#2021-05-18 14:32:45##初级会计实务,5#2021-05-18 14:32:46#12#初级会计实务,5#2021-05-18 14:32:57##初级会计实务,6#2021-05-18 14:33:00#12#初级会计实务,7#2021-05-18 14:33:44#12#初级会计实务,7#2021-05-18 14:34:42##初级会计实务,8#2021-05-18 14:34:43#12''' # 将数据分割成每个数据项 data_items = data.split(',') # 对于每个数据项,将其按#分割成四个小项,并存储到一个列表中 data_list = [] for item in data_items: item_list = item.split('#') data_list.append(item_list) # 对于每个小项,进行相应的转换 for item in data_list: item[0] = int(item[0]) # 题号转换为整数 item[1] = datetime.datetime.strptime(item[1], '%Y-%m-%d %H:%M:%S') # 时间转换为datetime if item[2] != '': # 操作转换为整数 item[2] = int(item[2]) item[3] = str(item[3]) # 科目转换为字符串 print(data_list) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值