定义一个名为PartFilledArrayWMax的类,它是作业7-1中PartFilledArray类的一个派生类。PartFilledArrayWMax新增了一个名为max_value的成员变量,它容纳数组中存储的所有数的最大值。定义一个名为get_max的成员函数,用它返回数组中存储的最大值。重定义成员函数addValue,用于向数组中添加一个值。并定义两个构造函数,其中一个构造函数要获取一个int参数,它表示数组能容纳的最大元素数量;另一个为拷贝构造函数。定义一个析构函数。 在主函数中创建一个PartFilledArrayWMax类的对象a,依次输入若干个数,以0作为输入结束,如果输入数字的个数小于max_number,则将这些数字输出,输出以空格分割,最后一个数字后也有空格。如果输入数字的个数大于max_number,则提示“Adding to a full array.”同时,分别输出这两个数组的最大值。
时间: 2023-11-27 13:50:30 浏览: 82
下面是PartFilledArrayWMax类的实现代码:
```
#include <iostream>
#include <algorithm>
using namespace std;
class PartFilledArray {
protected:
int *contents; // 存储数组的指针
int max_number; // 数组的最大元素数量
int count; // 数组中已经填充的元素数量
public:
PartFilledArray(int max) : max_number(max), count(0) {
contents = new int[max_number];
}
PartFilledArray(const PartFilledArray& arr) {
max_number = arr.max_number;
count = arr.count;
contents = new int[max_number];
for (int i = 0; i < count; i++) {
contents[i] = arr.contents[i];
}
}
virtual ~PartFilledArray() {
delete[] contents;
}
void addValue(int value) {
if (count < max_number) {
contents[count] = value;
count++;
}
}
void display(ostream& out) const {
for (int i = 0; i < count; i++) {
out << contents[i] << " ";
}
out << endl;
}
};
class PartFilledArrayWMax : public PartFilledArray {
private:
int max_value;
public:
PartFilledArrayWMax(int max) : PartFilledArray(max), max_value(0) {}
PartFilledArrayWMax(const PartFilledArrayWMax& arr) : PartFilledArray(arr), max_value(arr.max_value) {}
void addValue(int value) {
PartFilledArray::addValue(value);
max_value = max(max_value, value);
}
int get_max() const {
return max_value;
}
};
int main() {
int max_number;
cout << "Enter the maximum number of elements: ";
cin >> max_number;
PartFilledArrayWMax a(max_number);
int value;
cout << "Enter numbers (0 to end): ";
do {
cin >> value;
if (value != 0) {
a.addValue(value);
}
} while (value != 0);
cout << "The numbers entered are: ";
a.display(cout);
if (a.get_max() == 0) {
cout << "The array is empty." << endl;
} else {
cout << "The maximum value in the array is: " << a.get_max() << endl;
}
return 0;
}
```
在主函数中,首先让用户输入数组的最大元素数量,然后创建一个PartFilledArrayWMax类的对象a。接着让用户输入若干个数,调用addValue函数将这些数添加到数组中。最后调用display函数输出数组中存储的数字,调用get_max函数输出最大值。如果数组为空,则输出"The array is empty."。
阅读全文