| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 730 人关注过本帖
标题:pascal编程的一道题,我怎么搞也搞不对,请看看吧!
只看楼主 加入收藏
chenxiaohan757
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-9
收藏
 问题点数:0 回复次数:3 
pascal编程的一道题,我怎么搞也搞不对,请看看吧!
题目是:计算sin(x)=x-(x∧3)/3!+(x∧5)/5!-(x∧7)/7!+……直到最后一项绝对值小于10∧-7时停止运算,x由键盘输入。(x∧3表示x的3次方,下同)
我编的代码是
program ex9;
var y:real;
i,n,t,s,x:longint;
begin
write('x=');readln(x);
n:=1;
y:=0;
repeat
s:=1; t:=1;
if n mod 2=1 then
begin
for i:=1 to (2*n-1) do
begin
t:=t*x;
s:=s*i;
end;
y:=y+t/s;
end
else
begin
for i:=1 to (2*n-1) do
begin
t:=t*x;
s:=s*i;
end;
y:=y-t/s;
end;
n:=n+1;
until t/s<1/(10*10*10*10*10*10*10);
write('sin',x,'=',y:0:4);
readln;
end.
所用的软件是Borland Pascal 7
但算出来的sin值不对,请大家看看有哪里错了,谢谢了
搜索更多相关主题的帖子: pascal 
2006-06-09 16:33
yjmovice
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-6-11
收藏
得分:0 

计算效率太低了,
该公式是计算弧度的
var
x:real;
m,n:integer;

i:integer;
ret,y:real;
xx:real;//x^n
nj:real;//n!

begin
//sin
//sin(x)=x-(x∧3)/3!+(x∧5)/5!-(x∧7)/7!+……直到最后一项绝对值小于10∧-7时停止运算
x:=spinedit1.Value/57.29577951 ; //角度转弧度
ret := x;
n:=1;
xx:=x;
nj:=1;
//m 3,7.9...
repeat
m:=2*n+1;
//x^n
xx:=xx*x*x;
//n!
nj:=nj*(m-1)*m;

y:=xx/nj;
if n mod 2 =0 then
ret := ret +y
else
ret := ret -y;

n:=n+1;
until y<(1/(10*10*10*10*10*10*10));
edit1.Text:= FloatToStr(ret);


end;

2006-06-11 16:37
chenxiaohan757
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-9
收藏
得分:0 
thank you very much
2006-06-11 20:32
chenxiaohan757
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2006-6-9
收藏
得分:0 
甘拜下风,代码写得太太太太太太太强了。
看来以后的路还很长。

[此贴子已经被作者于2006-6-11 20:38:45编辑过]

2006-06-11 20:38
快速回复:pascal编程的一道题,我怎么搞也搞不对,请看看吧!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022417 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved