廣告廣告
  加入我的最愛 設為首頁 風格修改
首頁 首尾
 手機版   訂閱   地圖  簡體 
您是第 2228 個閱讀者
 
發表文章 發表投票 回覆文章
  可列印版   加為IE收藏   收藏主題   上一主題 | 下一主題   
ylk2468 手機
數位造型
個人文章 個人相簿 個人日記 個人地圖
初露鋒芒
級別: 初露鋒芒 該用戶目前不上站
推文 x0 鮮花 x1
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片
推文 x0
[C/C++] gcd的四則運算
輸入兩個分數(有理數)的分子和分母,以及四則運算符號,根據不同的運算
符號將兩分數作適當運算, ..

訪客只能看到部份內容,免費 加入會員 或由臉書 Google 可以看到全部內容



獻花 x0 回到頂端 [樓 主] From:台灣中華電信 | Posted:2005-09-25 19:31 |
Darren
數位造型
個人文章 個人相簿 個人日記 個人地圖
社區建設獎
小有名氣
級別: 小有名氣 該用戶目前不上站
推文 x4 鮮花 x144
分享: 轉寄此文章 Facebook Plurk Twitter 複製連結到剪貼簿 轉換為繁體 轉換為簡體 載入圖片

寫好了, 試試 (C#)
複製程式
long a=1,b=10,c=4,d=5;
                     long Em,fm;

                     //通分
                     long bj = 0; //a和b要乘的倍數
                     long dj = 0; //c和d要乘的倍數
                     if(b%d==0)
                     {
                            dj = b/d;
                            bj = 1;
                     }
                     else if(d%b==0)
                     {
                            bj = d/b;
                            dj = 1;
                     }
                     else
                     {       
                            //這是最偷懶的方法,容易溢位,建議參考下面的輾轉相除法求得b, d最小公倍數
                            bj = d;
                            dj = b;
                     }

                     Em = (a*bj)-(c*dj);  //-號可替換成其它四則運算子
                     fm = b*bj;
                     
                     long E = Em,f =fm;

                     //約分
                     long yinsu = 1;//分子母的最大公因數

                     if(E==f)
                     {
                            Em=1;
                            fm=1;
                     }
                     else if(E%f==0)
                     {
                            yinsu = f;
                     }
                     else if(f%E==0)
                     {
                            yinsu = E;
                     }
                     else
                     {  
                            //輾轉相除法
                            do
                            {       
                                   E = E%f;       
                                   try
                                   {
                                          if(f%E!=0)
                                          {
                                                 f = f%E;
                                          }
                                          else
                                          {
                                                 yinsu = E;
                                                 break;
                                          }
                                   }
                                   catch
                                   {   yinsu = f;
                                          break;
                                   }
                            }while(true);//while條件式不重要,裡面有跳出的條件式
                     }
                     MessageBox.Show((Em/yinsu).ToString() + "/" + (fm/yinsu).ToString());


獻花 x0 回到頂端 [1 樓] From:台灣 和信超媒體寬帶網 | Posted:2005-09-26 12:16 |

首頁  發表文章 發表投票 回覆文章
Powered by PHPWind v1.3.6
Copyright © 2003-04 PHPWind
Processed in 0.052856 second(s),query:16 Gzip disabled
本站由 瀛睿律師事務所 擔任常年法律顧問 | 免責聲明 | 本網站已依台灣網站內容分級規定處理 | 連絡我們 | 訪客留言