1. 程式人生 > >01-抽象數據類型

01-抽象數據類型

代碼 class 邏輯 兩個 部分 輸入 mage 對數 數據結構

一.作業題目

實驗題目

試仿照三元組或復數的抽象數據類型寫出有理數抽象數據類型的描述 (有理數是其分子、分母均為整數且分母不為零的分數)。

有理數基本運算如下所示:

  • 1.構造有理數T,元素e1,e2分別被賦以分子、分母值
  • 2.銷毀有理數T
  • 3.用e(引用類型參數)返回有理數T的分子或分母,當入參i為1時返回分子, i為2是返回分母。
  • 4.將有理數T的分子或分母更改為e,入參i為1時改變分子, i為2是改變分母
  • 5.有理數T1,T2相加
  • 6.有理數T1,T2相減
  • 7.有理數T1,T2相乘
  • 8.有理數T1,T2相除
    補充:加減乘除運算結果我存入的是有理數T1

實驗要求:

  • 抽象數據類型名為Rational。
  • 有理數分母不能為負數或者0,類似輸入請提示重輸入。
  • 數據對象和數據運算的表示與數據操作的實現分離。表示用頭文件完成,實現用CPP文件完成。Main.cpp文件實現數據輸入輸出。
  • 數據輸入輸出格式參考如下:
    輸入:
    1 3 //T1的分子、分母
    1 2 //T2的分子、分母
    ** 輸出:**
    5 6 //兩個有理數相加
    -1 6 //兩個有理數相減
    1 6 //兩個有理數相乘
    2 3 //兩個有理數相除
  • 程序應對異常輸入或者出錯必要處理和提示,分子分母要約分。

二、博客作業要求:

1.作業內容

用ADT的抽象數據模型描述你的有理數數據類型。

ADT  Rational
{    數據對象:
          D={e1,e2|e1,e2均為實數}
     數據關系:
          R={<e1,e2>|e1是有理數的分子部分,e2是有理數的分母部分}
     基本運算:
          InitRational(rational,e1,e2):構造有理數T,其分子和分母分別賦以參數v1,v2的值
          DestroyRational(rational):銷毀有理數T
          Get(rational,choice):提取分子或分母
          Yuefen(rational):對分子分母進行約分
          Put(rational, choice):修改分子或分母
          Add(rational,rationalnew):倆個有理數相加
          Minus(rational,rationalnew):倆個有理數相減
          Multiply(rational,rationalnew):倆個有理數相乘
          Divided(rational,rationalnew):倆個有理數相除
}ADT Rational

2.數據結構、函數說明

截圖展示你的頭文件。頭文件代碼務必加入註釋。

技術分享圖片

技術分享圖片

3.代碼實現說明

截圖展示每個函數代碼。簡要說明做法。

  • 構造有理數:正確輸入e1,e2,給T申請空間,將e1,e2的值存在T數組中,T[0]表示分子,T[1]表示分母
  • 銷毀有理數:釋放T的空間
  • 查詢分子或分母的值:通過i的輸入,輸出對應數組的值,即輸出分子分母的值
  • 修改分子或分母的值:通過i的輸入,修改對應數組的值,即修改分子分母的值
  • 有理數的加法運算:再構造一個新的有理數,對倆個有理數進行通分相加並約分化簡
  • 有理數的減法運算:再構造一個新的有理數,對倆個有理數進行通分相減並約分化簡
  • 有理數的乘法運算:再構造一個新的有理數,對倆個有理數進行相乘並約分化簡
  • 有理數的除法運算:再構造一個新的有理數,對倆個有理數進行相除並約分化簡
  • 約分:利用輾轉相除法找到最小公倍數,分子分母同除最小公倍數,註意分子小於等於0的情況

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

技術分享圖片

5.結果展示

每種測試數據一個截圖結果。測試數據越多,此項得分越高。務必考慮臨界數據,如分母為負數或0情況等等。

構造有理數

技術分享圖片

銷毀有理數

技術分享圖片

正確查詢輸出查詢結果,錯誤查詢無結果

技術分享圖片

修改分子或分母

技術分享圖片

運算操作有理數分子均大於0

有理數加減

技術分享圖片

技術分享圖片

有理數乘除

技術分享圖片

運算操作有理數分子小於0

技術分享圖片

技術分享圖片

技術分享圖片

補充:運行過程中發現一些沒有處理好的,後面代碼還可以有小改動,像結束操作時銷毀倆個有理數,還有判斷分母輸入是否正確時,代碼展示部分只能判斷一次,再輸入時分母即使是0或者負數依然順利輸入不能提示錯誤,可以改成while循環,還有輸入時一些提示語句可以再完善一點

退出操作

技術分享圖片

6.總結

談談你對數據結構及抽象數據類型的理解。

(1)數據結構包括倆個部分,一是數據,二是數據間的關系。數據結構包括數據元素間的邏輯關系,數據元素和關系在計算機中的儲存方式,還有就是數據運算這幾個方面。
(2)邏輯結構包括集合,線性,樹,圖;存儲結構主要有順序的和鏈式的;數據運算最常用的有檢索,插入,刪除,排序等
(3)抽象數據類型適合不大容易表示出來的數據,比如像這次的有理數分子分母,還有課本上的復數。可以通過數組或者結構體數組來將組成數據的部分分裝儲存並進行操作

01-抽象數據類型