39. Fourth Point!! (CPE10566, UVA10242) - CPE一顆星解答與說明

   👉  CPE 一顆星選集列表(49題) 題目說明與解答

CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com


題目


  • 題目會給平行四邊形中兩個相鄰邊的端點,找出第四點的座標



輸入說明


  • 測試資料有多筆
  • 每一筆包含 8 個浮點數
    •  第 1 個數字與第 2 個數字是第一個邊的某一端點的 (x, y) 座標
    •  第 3 個數字與第 4 個數字是第一個邊的某一端點的 (x, y) 座標
    •  第 5 個數字與第 6 個數字是第二個邊的某一端點的 (x, y) 座標
    •  第 7 個數字與第 8 個數字是第二個邊的某一端點的 (x, y) 座標



輸出說明


  • 依每筆測試資料,印出第四個座標
  • x 座標與 y 座標間隔一個空白
  • 座標單位為公尺,精確值到毫米(也就是小數點後三位)



解題技巧

  • 觀察重複的點
    • 題目會給兩條邊的座標,共四點
      • 第一個邊 


      • 第二個邊


  • 題目有說這兩個邊是相鄰的邊,表示有兩個座標是相同
  • 題目要找的第四個座標就在重複點的對角位置


    • 題目求 C 點,可由上述公式簡化推得
      • A + C = B + D
      • C = B + D – A ,例如 C (1, 0) = ( 1 + 0 - 0 , 1 + 0 - 1)
  • A 點就是題目中相鄰兩邊重疊(或重複)的那一點
  • B 與 D 點就是相鄰兩邊的末端座標
  • 找出重複的點與非重複的點帶入公式求解

解題過程

取得輸入


將相鄰兩邊的末端座標存起來

  • 宣告 ArrayList 將座標存起來
  • 呼叫 ArrayList 提供的 contains() 方法,判斷特定座標是否存在串列中
    • 若不存在,則將座標加入串列,呼叫 add() 方法
    • 若存在,則將串列中的此座標移除,呼叫 remove() 方法,
      • 此座標是相鄰兩邊中間重複的那一點,圖示中的 A 點
      • 此座標移除後,串列中就只剩下 B 點與 D 點


儲存相鄰兩邊中間重複的點

  • 宣告用來儲存重複座標的變數
    • 兩個寫法都可以
      1. new Point2D.Double(0, 0);
      2. new Point2D.Double(); 
  • 若特定座標存在串列中時,將重覆座標更新為特定座標,也就是圖示中的 A 點


計算平行四邊形中的第四個點

  • 題目求解 C 點,將 X 值與 Y 值分別帶入公式計算 C = B + D – A 




印出

  • 平行四點形中的第四點座標的 x 值與 y 值
  • 數值到小數點第 3 位
    • 使用 printf 方法
    • System.out.printf("%.3f %.3f" , 變數1, 變數2)
    • 換行
      • /r/n
      • %n
      • System.out.println();
  • 數值中間要用空白隔開
  • 每一筆輸出要換行



CPE一顆星49題解答 - pdf 電子檔,售價 199 元,

購買電子檔可將筆記與完整解答帶著走,

坐車、上課時皆可隨時複習,

不受網路或廣告影響,

若有需要請來信購買 greens2314@gmail.com

留言

這個網誌中的熱門文章

CPE 一顆星選集題目說明與解答 - Java 筆記與心得分享

Visual Studio 自動排版格式化程式碼

1. Vito's family (CPE10406, UVA10041) - CPE一顆星解答與說明