当前位置:编程学习 > C/C++ >>

实验项目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语言 ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,