编写一个程序,使用类模板对数组元素进行查找和求和,设计数组类模板,然后分别实例化为int型、double型和string的3个数组类,最后分别对3个数组完成所要求的操作。(注:数组中元素个数不超过100) 输入描述: 输入9行数据: 第1行:int型数组元素的个数 第2行:int型数组元素的值 第3行:要查找的int型数据值 第4行:double型数组元素的个数 第5行:double型数组元素的值 第6行:要查找的double型数据值 第7行:string型数组元素的个数 第8行:string型数组元素的值 第9行:要查找的string型数据值 输出描述: 查找int型数据所在的位置 int型数组的元素和 查找double型数据所在的位置 double型数组的元素和 查找string型数据所在的位置 string型数组的元素和 输入样例: 3 1 2 3 5 2 1.2 2.3 2.3 3 abcd 123456 @#$%^& abcd 输出样例: 未找到该元素 数组和为:6 是第2个元素 数组和为:3.5 是第1个元素 数组和为:abcd123456@#$%^&
时间: 2024-03-14 08:45:22 浏览: 79
数组元素的排序和查找
这是一道程序设计题目,需要编写代码实现要求。以下是一个可能的代码实现,供参考:
```
#include <iostream>
#include <string>
using namespace std;
template<typename T>
class MyArray {
private:
T* data;
int size;
public:
MyArray(T* data, int size) {
this->data = data;
this->size = size;
}
T sum() {
T result = 0;
for (int i = 0; i < size; i++) {
result += data[i];
}
return result;
}
int search(T value) {
for (int i = 0; i < size; i++) {
if (data[i] == value) {
return i;
}
}
return -1;
}
};
int main() {
int n1, n2, n3;
cin >> n1;
int* a = new int[n1];
for (int i = 0; i < n1; i++) {
cin >> a[i];
}
MyArray<int> array1(a, n1);
int value1;
cin >> value1;
int pos1 = array1.search(value1);
if (pos1 == -1) {
cout << "未找到该元素" << endl;
} else {
cout << "是第" << pos1 + 1 << "个元素" << endl;
}
cout << "数组和为:" << array1.sum() << endl;
cin >> n2;
double* b = new double[n2];
for (int i = 0; i < n2; i++) {
cin >> b[i];
}
MyArray<double> array2(b, n2);
double value2;
cin >> value2;
int pos2 = array2.search(value2);
if (pos2 == -1) {
cout << "未找到该元素" << endl;
} else {
cout << "是第" << pos2 + 1 << "个元素" << endl;
}
cout << "数组和为:" << array2.sum() << endl;
cin >> n3;
string* c = new string[n3];
for (int i = 0; i < n3; i++) {
cin >> c[i];
}
MyArray<string> array3(c, n3);
string value3;
cin >> value3;
int pos3 = array3.search(value3);
if (pos3 == -1) {
cout << "未找到该元素" << endl;
} else {
cout << "是第" << pos3 + 1 << "个元素" << endl;
}
cout << "数组和为:" << array3.sum() << endl;
delete[] a;
delete[] b;
delete[] c;
return 0;
}
```
此代码中,我们首先定义了一个类模板 `MyArray`,其中包含了查找和求和数组元素的功能。在主函数中,我们实例化了三个 `MyArray` 对象,分别对应一个 `int` 类型的数组、一个 `double` 类型的数组和一个 `string` 类型的数组。我们先输入三个数组的长度和各自的元素值,然后对每个数组依次调用相应的成员函数完成题目要求,并输出结果。
需要注意的是,在实现 `MyArray` 类的成员函数时,我们在求和函数中使用了模板类型参数 `T`,因此可以适用于任何类型的数组。在搜索函数中,如果找到了目标元素,我们返回其索引;否则,返回 `-1` 表示未找到。在输出结果时,需要注意要输出“未找到该元素”和“是第X个元素”两种情况的不同输出格式。
阅读全文