作者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