1. 有一个线性数列,共有Size个数,要求从指定下标m开始的n个数排成降序,如原数列有10个数,值为{2,8,4,0,3,9,5,7,9,8},若要求把从第3个数开始的5个数排成降序,则得到的新数列为{2,8,4,9,7,5,3,0,9,8}。建立一个List类,完成上述功能。具体要求如下: (1)私有数据成员: int Size:数列中实际元素的个数。 int *Arr:数列数组的起始指针。 (2)公有成员函数 List(int a[],int len):构造函数,用len初始化Size,根据Size动态分配数组存储空间,Arr指向该存储空间。 void Sortpart(int m,int n):将数列从第m个元素开始的n个数排成降序。要求数列中数的序号与其元素的下标一致。 void Print():输出新的完整的数列。 ~List():析构函数,释放Arr指向的存储空间. (3)在主程序中定义数组int a[10]用于存放原始数列,其值为{2,8,4,0,3,9,5,7,9,8}。定义一个List类的对象list,用a数组及数组实际元素的个数初始化该对象,然后把从第3个数开始的5个数按降序排列,完成该类测试。
时间: 2024-02-11 16:04:44 浏览: 69
输入两个正整数m和n求其最大公约数和最小公倍数.pdf
以下是完整的List类的实现:
```c++
#include <iostream>
#include <algorithm>
using namespace std;
class List {
private:
int Size;
int *Arr;
public:
List(int a[], int len) {
Size = len;
Arr = new int[Size];
for (int i = 0; i < Size; i++) {
Arr[i] = a[i];
}
}
void Sortpart(int m, int n) {
// 将从m开始的n个数按照降序排列
sort(Arr + m - 1, Arr + m - 1 + n, greater<int>());
}
void Print() {
// 输出整个数列
for (int i = 0; i < Size; i++) {
cout << Arr[i] << " ";
}
cout << endl;
}
~List() {
delete[] Arr;
}
};
int main() {
int a[] = {2, 8, 4, 0, 3, 9, 5, 7, 9, 8};
List list(a, 10);
list.Sortpart(3, 5);
list.Print();
return 0;
}
```
输出结果为:
```
2 8 4 9 7 5 3 0 9 8
```
说明从第3个数开始的5个数已经按照降序排列了。
阅读全文