✧3.编写一个程序。使用类模板对数组元素进行排序和求和。产生类型实参分别为inf型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
时间: 2023-06-26 15:08:20 浏览: 203
C语言程序设计-编写函数求1~100中奇数的平方和结果为166650.000000.c
5星 · 资源好评率100%
以下是一个使用类模板对数组元素进行排序和求和的示例程序,涉及到的类型实参分别为inf型和double型的两个模板类,分别对整型数组与双精度数组完成所要求的操作。
```c++
#include<iostream>
using namespace std;
// 定义一个inf型的模板类
template<typename T>
class InfArray {
private:
T* arr;
int size;
public:
InfArray(int n) {
size = n;
arr = new T[size];
}
~InfArray() {
delete[] arr;
}
void read() {
for (int i = 0; i < size; i++) {
cout << "请输入第" << i + 1 << "个元素:";
cin >> arr[i];
}
}
void sort() {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
T sum() {
T result = 0;
for (int i = 0; i < size; i++) {
result += arr[i];
}
return result;
}
void print() {
cout << "排序后的数组为:";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "数组元素的和为:" << sum() << endl;
}
};
// 定义一个double型的模板类
template<typename T>
class DoubleArray {
private:
T* arr;
int size;
public:
DoubleArray(int n) {
size = n;
arr = new T[size];
}
~DoubleArray() {
delete[] arr;
}
void read() {
for (int i = 0; i < size; i++) {
cout << "请输入第" << i + 1 << "个元素:";
cin >> arr[i];
}
}
void sort() {
for (int i = 0; i < size - 1; i++) {
for (int j = i + 1; j < size; j++) {
if (arr[i] > arr[j]) {
T temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
T sum() {
T result = 0;
for (int i = 0; i < size; i++) {
result += arr[i];
}
return result;
}
void print() {
cout << "排序后的数组为:";
for (int i = 0; i < size; i++) {
cout << arr[i] << " ";
}
cout << endl;
cout << "数组元素的和为:" << sum() << endl;
}
};
int main() {
cout << "inf型数组:" << endl;
InfArray<int> ia(5); // inf型的模板类,T为int型
ia.read(); // 读入数组元素
ia.sort(); // 对数组元素进行排序
ia.print(); // 输出排序后的数组以及数组元素的和
cout << "double型数组:" << endl;
DoubleArray<double> da(5); // double型的模板类,T为double型
da.read(); // 读入数组元素
da.sort(); // 对数组元素进行排序
da.print(); // 输出排序后的数组以及数组元素的和
return 0;
}
```
运行结果如下:
```
inf型数组:
请输入第1个元素:9
请输入第2个元素:3
请输入第3个元素:7
请输入第4个元素:1
请输入第5个元素:5
排序后的数组为:1 3 5 7 9
数组元素的和为:25
double型数组:
请输入第1个元素:3.2
请输入第2个元素:1.5
请输入第3个元素:7.8
请输入第4个元素:5.6
请输入第5个元素:2.1
排序后的数组为:1.5 2.1 3.2 5.6 7.8
数组元素的和为:20.2
```
阅读全文