资源描述
编写一个使用类模板对数组中元素进行排序和求和的程序。
【提示】在模板中完成排序和求和的操作。
#include<iostream>
using namespace std;
//类模板
template<class T>
class vector
{
public:
void sort(T a[],int n);
T sum(T a[],int n);
int search(T e, T a[], int n);
};
//排序
template<class T>
void vector<T>::sort(T a[],int n)
{
T temp;
bool exchange;
for(int i = 1; i < n; i++)
{
exchange = false;
for(int j = n-1; j >= i; j--)
if(a[j] < a[j-1])
{
temp = a[j]; a[j] = a[j-1]; a[j-1] = temp;
exchange = true;
}
if(!exchange)
return;
}
}
//求和
template<class T>
T vector<T>::sum(T a[],int n)
{
T sum = a[0];
for(int i = 1; i < n; i++)
sum += a[i];
return sum;
}
//查找
template<class T>
int vector<T>::search(T e, T a[], int n)
{
for(int i = 0; i < n; i++)
if(a[i] == e)
return i;
return -1;
}
void main()
{
int data[5] = {5,4,3,2,1};
vector<int> obj;
cout<<"数组和:"<<obj.sum(data,5)<<endl;
cout<<"数字4数组位置:"<<obj.search(4,data,5)<<endl;
cout<<"排序前数组各元素:"<<endl;
for(int i = 0; i < 5; i++)
cout<<data[i]<<" ";
cout<<endl;
}
一、实验目的及要求
学习完整的 C++程序开发过程。
l 理解结构化程序设计的基本方法。
l 掌握程序的三种基本控制结构及其语法。
l 掌握 break、continue、goto 语句的执行过程并熟练使用。
l 掌握标识符常量与变量的概念和定义方法。
l 掌握各种运算符的功能、优先级和结合性。
二、实验环境
DEV-C++
三、实验内容
设计一个数组类的模板,完成如下功能:
(1) 数组的规模可以任意类型,任意大小。
(2) 重载构造函数实现不同种的初始化方式(自拟)。
(3) 数组排序函数。
(4) 数组查找函数。
(5) 数组查找最大值/最小值函数。
(6) 对运算符[]重载,支持对该数组类模板对象的下标运算
#include <iostream>
#include <typeinfo>
using namespace std;
//模版类定义,一个是虚拟类型T,用来给定数组元素的类型,一个是整型值size,用来给定数组的大小,即元素个数
//此类是一个万能数组,数组类型可以任意给定,数组大小可任意给定
//模板类不仅可以传递类型T,也可以传递数值size
template <class T,int size>
class Array
{
public:
Array()
{
int i;
cout<<"请输如"<<size<<"个"<<typeid(T).name()<<"值,对数组成员赋值:"<<endl;
for(i=0;i<size;i++) //对数组元素值进行输入
cin>>array[i];
}
void display()
{
int i;
cout<<"输出"<<size<<"数组成员值:"<<endl;
for(i=0;i<size;i++) //对数组元素值进行输出
cout<<array[i]<<" ";
cout<<endl;
}
private:
T array[size];
};
int main()
{
Array<int,5> array_int; //给出模板的参数化值,使其生成具体类,然后定义类对象
//当前数组类中数组元素类型为int,数组大小为5
array_int.display();
Array<char,3> array_char; //给出模板的参数化值,使其生成具体类,然后定义类对象
//当前数组类中数组元素类型为char,数组大小为3
array_char.display();
Array<float,4> array_float; //给出模板的参数化值,使其生成具体类,然后定义类对象
//当前数组类中数组元素类型为int,数组大小为5
array_float.display();
return 0;
}
展开阅读全文