作者reefuj (重要的是心 心阿)
看板EE_DSnP
標題Re: 關於4-1的問題
時間Fri Nov 9 22:46:11 2007
※ 引述《reefuj (重要的是心 心阿)》之銘言:
: 1. 是
: 老師是希望你用電腦實做把那個分數相加起來
: 但是那個分數是個無窮級數, 思考的方向是如何讓那級數停止的條件
: (當error比你定義的accuracy e小的時候)
: 而error是說 現在這個分數SUMi總和 和 再多一個項次SUMi+1的差的絕對值
: SUMi = ? 有辦法寫出個規律性嗎?
: 2. 就我觀察老師的執行結果
: 他的程式應是使用setprecision(10);
: (記得看EE_DSnP 672中要include header file)
: 至於你的問題
: cin >> accuracy;
: double a = accuracy;
: int n = 0;
: while(a < 1)
: {
: a = a * 10;
: n++;
: }
: 這一段程式執行完畢的話
: 最後的accuracy, a, n的值會是多少?各自代表什麼意思呢?
: 然後這段程式的停止條件為何?
: a = a * 10;這行的規律性? 代表我想做什麼?
: ^^^^^^
假設我們由鍵盤輸入accuracy = 0.0001
在上面2.的那段code裡面 accuracy的值會被設成 0.0001
然後一個新的變數 a = accuracy; 把a的值設成 0.0001
新的變數 n = 0 n的值設成0
while( a < 1 ) 這句是說當 a 這個變數的值 < 1的時候
執行 while{} 大括號內部的動作
{
a = a * 10; 這句把a的值變大成原來的十倍 相當於a的小數點往右移一位
n++; 每次執行到這行n = n + 1; <--記錄現在移動了幾次
}
所以當a的值不再是小數了 n 的值也沒必要繼續增加
這就是為什麼 while 的條件是 a < 1 就繼續的原因
這段code最後 accuracy = 0.0001
a = 1
n = 4
不過....這個東西是寫來當類似的例子了解while可以怎麼用...
4-1題目裡面我的話會不管輸入的accuracy有幾位小數
直接用setprecision(10)
: 有辦法應用到你第一個問題的部份嗎?
: 由於deadline還有一個禮拜, 所以思考看看吧 lol
: > 我想問一下關於第四次作業第一題的問題
: > 1.它說要我們把pi用一連串的分數加起來,那這樣要怎麼表示阿,是直接在code裡面把
: 各個分數打進去相加就好了嗎> <
: > 2.如果輸入一個精確度像0.0001的話,那我要如何把前面的0.0001轉換成n=4然後放到
: setprecision(n)裡面
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.42.185