实验项目1——三元组ADT
实验内容
[问题描述]
设计实现抽象数据类型“三元组”。每个三元组由任意三个实数的序列构成,基本操作包括:创建一个三元组,取三元组的任意一个分量,置三元组的任意一个分量,求三元组的最大分量,求三元组的最小分量,两个三元组的对应分量相加或相减,给三元组的各分量同乘一个比例因子,显示三元组,销毁三元组等。
[基本要求]
实现创建一个三元组,取三元组的任意一个分量,置三元组的任意一个分量,求三元组的最大分量,求三元组的最小分量,显示三元组等基本操作。
【代码】
#include<iostream>
using namespace std;
template <class Elem> class Triple
{
private:
Elem e1;
Elem e2;
Elem e3;
public:
Triple(Elem v1,Elem v2,Elem v3)
{
e1=v1;
e2=v2;
e3=v3;
}
Elem Get(int i)//初始条件:三元组已经存在,1≤i≤3;操作结果:返回三元组的第i个分量
{
if(i >= 1 && i <=3)
{
Elem a[3]={e1,e2,e3};
return a[i-1];
}
else
{
cout<<"\n";
cout<<"错误,输入值范围是1~3"<<endl;
}
}
bool Put(int i,Elem e)//初始条件:三元组已经存在,1≤i≤3;
//操作结果:将三元组的第i个分量赋值为e,成功返回true,否则返回false
{
if(i >= 1 && i <=3)
{
if(i==1)
e1=e;
else if(i==2)
e2=e;
else if(i==3)
e3=e;
return true;
}
else
return false;
}
Elem GetMax()//初始条件:三元组已经存在,操作结果:返回三元组中最大分量值e
{
Elem a[3]={e1,e2,e3};
Elem max=a[0];
if(a[1]>a[0])
max=a[1];
if(a[2]>max)
max=a[2];
return max;
}
Elem GetMin()//初始条件:三元组已经存在,操作结果:返回三元组中最小分量值e
{
Elem a[3]={e1,e2,e3};
Elem min=a[0];
if(a[1]<a[0])
min=a[1];
if(a[2]<min)
min=a[2];
return min;
}
void Output()//初始条件:三元组已经存在,操作结果:输出三元组中所有分量值
{
Elem a[3]={e1,e2,e3};
cout<<"现在三元组所有分量值为:";
for(int i=0;i<3;i++)
cout<<a[i]<<" ";
}
Elem Sum(int i,int j)//输入进行相加运算的序号,返回相加后的结果
{
Elem a[3]={e1,e2,e3};
return a[i-1]+a[j-1];
}
void Proportion(float a,float b,float c)//三元组的各分量同乘一个比例因子
{
e1=e1*a;
e2=e2*b;
e3=e3*c;
}
void Destroy()//销毁三元组
{
e1=0;
e2=0;
e3=0;
cout<<"三元组已初始化为0";
}
};
//测试
int main()
{
Triple<float> t(10,33,-44);
cout<<"测试结果:"<<endl;
cout<<"三元组第一个数为:"<<t.Get(1)<<endl;
t.Output();
cout<<"\n";
cout<<"\n将第一个数修改为55后";
t.Put(1,55);
t.Output();
cout<<"\n";
cout<<"\n三元组最大值为:"<<t.GetMax()<<endl;
cout<<"三元组最小值为:"<<t.GetMin()<<endl;
cout<<"\n";
t.Output();
cout<<"\n三元组中第一个和第三个数的和为:"<<t.Sum(1,3);
cout<<"\n";
cout<<"\n为三元组中各元素分别乘以0.1,0.4,0.5后";
t.Proportion(0.1,0.4,0.5);
cout<<"\n";
t.Output();
cout<<"\n";
cout<<"\n销毁三元组"<<endl;
t.Destroy();
cout<<"\n";
t.Output();
system("pause");
}
注:以上内容仅供参考,如有问题请指正。
作者“心海新航”
补充:软件开发 , C语言 ,