程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 實驗項目1——三元組ADT

實驗項目1——三元組ADT

編輯:關於C

實驗內容
[問題描述]
設計實現抽象數據類型“三元組”。每個三元組由任意三個實數的序列構成,基本操作包括:創建一個三元組,取三元組的任意一個分量,置三元組的任意一個分量,求三元組的最大分量,求三元組的最小分量,兩個三元組的對應分量相加或相減,給三元組的各分量同乘一個比例因子,顯示三元組,銷毀三元組等。
[基本要求]
實現創建一個三元組,取三元組的任意一個分量,置三元組的任意一個分量,求三元組的最大分量,求三元組的最小分量,顯示三元組等基本操作。
【代碼】
#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");
}
注:以上內容僅供參考,如有問題請指正。
作者“心海新航”

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved