線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:994
推到 Plurk!
推到 Facebook!

尋求圓週率程式1

答題得分者是:jean2004
1222
一般會員


發表:8
回覆:9
積分:3
註冊:2005-03-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-21 09:04:54 IP:163.17.xxx.xxx 未訂閱
我是個新手,我們老師要我們找一個圓週率程式,不知是否有人有or有人會做,幫幫我吧!~~謝謝 以下是程式的題目: 圓週率(π) = 3.14159265353979326442……………..
1222
一般會員


發表:8
回覆:9
積分:3
註冊:2005-03-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-21 09:14:10 IP:163.17.xxx.xxx 未訂閱
#include /*輸入輸出標頭檔*/
#include 
     int main()/*主要程式區*/
{
        double ans=0;/*宣告double形態的一個變數*/    
        double num=1;/*宣告double形態的一個變數*/            do
        { 
    ans=ans 4*((1/num)-(1/(num 2)));/*運算式*/            num=num 4;            }while(num<40000);            printf("%.4f\n",ans);/*輸出到螢幕上為小數點第4位*/
        getch();
        return 0;/*傳回作業系統*/    }
請問一下這個程式要如何才能將答案的位數顯示像題目那麼多位? 發表人 - 1222 於 2005/03/21 20:10:08
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-21 09:19:53 IP:210.68.xxx.xxx 未訂閱
PO程式碼的方式請參考版規說明,煩請修改謝謝配合 < href="http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48259">http://delphi.ktop.com.tw/topic.php?TOPIC_ID=48259
jean2004
初階會員


發表:69
回覆:80
積分:39
註冊:2004-12-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-21 09:20:38 IP:222.135.xxx.xxx 未訂閱
我来帮你: 精确到13位:
  double x=2, z=2;
  int a=1, b=3;
  while(z>1e-15)
  {
    z = z*a/b;
    x  = z;
    a  ;
    b =2;
  }
  Memo1->Text = AnsiString().sprintf("Pi=%.13f", x);    精确到1000位:
  const ARRSIZE=1010, DISPCNT=1000; //定义数组大小,显示位数
  char x[ARRSIZE], z[ARRSIZE]; //x[0] x[1] . x[2] x[3] x[4] .... x[ARRSIZE-1]
  int a=1, b=3, c, d, Run=1, Cnt=0;      memset(x,0,ARRSIZE);
  memset(z,0,ARRSIZE);      x[1] = 2;
  z[1] = 2;      while(Run && (  Cnt<200000000))
  {
    //z*=a;
    d = 0;
    for(int i=ARRSIZE-1; i>0; i--)
    {
      c = z[i]*a   d;
      z[i] = c % 10;
      d = c / 10;
    }
    //z/=b;
    d = 0;
    for(int i=0; i0; i--)
    {
      c = x[i]   z[i];
      x[i] = c;
      x[i-1]  = c/10;
      Run |= z[i];
    }
    a  ;
    b =2;
  }
  Memo1->Text = AnsiString().sprintf("计算了 %d 次\r\n",Cnt);
  Memo1->Text = Memo1->Text   AnsiString().sprintf("Pi=%d%d.\r\n", x[0],x[1]);
  for(int i=0; iText = Memo1->Text   "\r\n";
    Memo1->Text = Memo1->Text   (int)x[i 2];
  }
發表人 - taishyang 於 2005/03/21 09:41:21
1222
一般會員


發表:8
回覆:9
積分:3
註冊:2005-03-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-21 09:47:07 IP:163.17.xxx.xxx 未訂閱
版主~~我知錯了,我下次一定會改的~~原諒我吧!~~sorry
系統時間:2024-05-14 5:32:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!