參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類

題目:隨機實數值轉換為等效二進制值


問題描述
  1. 設計一個程式系統能將隨機產生 0.0 ~ 9999.999999 之間的一個十進制實數值( Real value) 轉換為等效二進制值(Binaryvalue)。此實數值或二進制值其小數點左方的數值稱為整數部分 (Integral part),而小數點右方的數值稱為分數部分(Fraction part)。
  2. 實數值的整數部分轉換為二進制值的方法:將其整數部分 ÷2 取其餘數插入二進制值左方,而其商值再 ÷2 取其餘數插入二進制值左方,依此類推,直至商值為 0;最後可得到實數值的整數部分之等效二進制值。
  3. 實數值的分數部分轉換為二進制值的方法:將其分數部分 ×2 取其整數插入二進制值右方,而其新分數值再 ×2 取其整數插入二進制值右方,依此類推,直至新分數值為 0 或二進制值已具有 10 位數;最後可得到實數值的分數部分之等效二進制值。
  4. 組合第2點與第3點轉換結果,即可得到十進制實數值轉換為等效二進制值。如果二進制值其小數點最右方存在無效 0,則必須將其移除,並修正此等效二進制值。
  5. 例題 1:十進制實數值 74.3312 轉換為等效二進制值 1001010.0101010011。 例題 2:十進制實數值 19.561 轉換為等效二進制值 10011.1000111110 ,經修正為 10011.100011111。
  6. 設計此系統如下圖所示,每當滑鼠點一下 Random 鍵,則隨機產生 0.0 ~ 9999.999999 之間的一個十進制實數值顯示在 Real Ⅴalue 的右方,且此值可以人工修改(但限制在上述範圍內)。每當滑鼠點一下 Convert 鍵,則自動將 Real value 的十進制實數值轉換為等效二進制值,並顯示在 Binary value 的右方;如果二進制值其小數點最右方存在無效0,則將其移除,且將修正後的二進制值顯示於 Final Binary value 的右方;如不存在無效 0,則 Final Binary value 的右方顯示值等同於原 Binary Value。上述可重複操作,直至滑鼠點一下 Exit 鍵,則自動離開此系統。


輸入格式輸出格式
在 Real value 位置可隨機產生或人工輸入 0.0 ~ 9999.999999 之間任意一個的十進制實數值。
在 Binary value 及 Final Binary value 位置顯示此實數值的等效二進制值。

範例1:在 Real value 位置隨機產生或人工輸入 19.561,滑鼠點一下 Convert 鍵, Binaryvalue 及 Final Binary value 位置顯示如下:


範例一
輸入正確輸出
74.3312
1001010.0101010011

範例二
輸入正確輸出
19.561
    
10011.100011111
    

完成後影片


程式碼下載(GitHub)      程式碼下載(本地)


Microsoft Visual Studio Community 2022 (64 位元) - Current 版本 17.8.1