c++定义一个圆盘类Circle,用20个小于100的随机数组成一个圆(首尾相接),分别求出连续的4个数之和最大的4个数及其和值)以及连续的4最小的,个数及其和值(输出整个数列,最大,最小的4个数及其和值)。
时间: 2024-01-25 11:04:34 浏览: 104
好的,以下是C++代码实现:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
class Circle{
public:
Circle(int n){
size = n;
nums = new int[n];
for(int i=0; i<n; i++){
nums[i] = rand() % 100;
}
}
~Circle(){
delete[] nums;
}
void print(){
for(int i=0; i<size; i++){
cout << nums[i] << " ";
}
cout << endl;
}
void findMax4(){
int max_sum = 0;
int max_index = 0;
for(int i=0; i<size; i++){
int sum = 0;
for(int j=0; j<4; j++){
sum += nums[(i+j)%size];
}
if(sum > max_sum){
max_sum = sum;
max_index = i;
}
}
cout << "连续的4个数之和最大的4个数及其和值:" << endl;
for(int i=0; i<4; i++){
cout << nums[(max_index+i)%size] << " ";
}
cout << ",和值为:" << max_sum << endl;
}
void findMin4(){
int min_sum = 1000;
int min_index = 0;
for(int i=0; i<size; i++){
int sum = 0;
for(int j=0; j<4; j++){
sum += nums[(i+j)%size];
}
if(sum < min_sum){
min_sum = sum;
min_index = i;
}
}
cout << "连续的4个数之和最小的4个数及其和值:" << endl;
for(int i=0; i<4; i++){
cout << nums[(min_index+i)%size] << " ";
}
cout << ",和值为:" << min_sum << endl;
}
private:
int* nums;
int size;
};
int main(){
srand(time(NULL)); //初始化随机数种子
Circle circle(20);
cout << "圆盘上的数列为:" << endl;
circle.print();
circle.findMax4();
circle.findMin4();
return 0;
}
```
在`Circle`类中,我们使用动态分配内存来存储随机生成的20个数。`print`函数用于输出整个数列。`findMax4`函数和`findMin4`函数分别用于查找连续的4个数之和最大和最小的4个数及其和值。这里我们使用了取模运算来实现首尾相接的圆形数组。
在主函数中,我们初始化随机数种子,创建一个`Circle`对象并调用相关函数来计算最大和最小的四个数及其和值。程序输出结果包括整个数列、连续的4个数之和最大和最小的4个数及其和值。
阅读全文