主题:[讨论]求如何转成VFP代码(求π)
代码如下(两段):
#include <stdio.h>
#include <math.h>
void main()
{
double e,b=1,d; //b:为正多边形边长
long int i; //i:正多边形边数
for(i=6;;i*=2) //正多边形边数加倍
{
e=b; //e:暂存边数为加倍前的边长
d=1.0-sqrt(1.0-b*b/4); //计算圆内接正多边形的边长
b=sqrt(b*b/4+d*d);
if(2*i*b-i*e<1e-15)
{
break; //精度达1e-15则停止计算
}
e=b; //保存本次正多边形的边长作为下一次精度控制的依据
}
printf("π=%.15lf\n",i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}
//外切法:
#include <stdio.h>
#include <math.h>
void main()
{
double e,b=2*sqrt(3)/3,d; //b:为正多边形边长
long int i; //i:正多边形边数
for(i=6;;i*=2) //正多边形边数加倍
{
e=b; //e:暂存边数为加倍前的边长
d=sqrt(1.0+b*b/4)-1; //计算圆外切正多边形的边长
b=2*(sqrt(b*b+4)-2)/b;
if(i*e-2*i*b<1e-15)
{
break; //精度达1e-15则停止计算
}
e=b; //保存本次正多边形的边长作为下一次精度控制的依据
}
printf("π=%.15lf\n",i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}
#include <stdio.h>
#include <math.h>
void main()
{
double e,b=1,d; //b:为正多边形边长
long int i; //i:正多边形边数
for(i=6;;i*=2) //正多边形边数加倍
{
e=b; //e:暂存边数为加倍前的边长
d=1.0-sqrt(1.0-b*b/4); //计算圆内接正多边形的边长
b=sqrt(b*b/4+d*d);
if(2*i*b-i*e<1e-15)
{
break; //精度达1e-15则停止计算
}
e=b; //保存本次正多边形的边长作为下一次精度控制的依据
}
printf("π=%.15lf\n",i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}
//外切法:
#include <stdio.h>
#include <math.h>
void main()
{
double e,b=2*sqrt(3)/3,d; //b:为正多边形边长
long int i; //i:正多边形边数
for(i=6;;i*=2) //正多边形边数加倍
{
e=b; //e:暂存边数为加倍前的边长
d=sqrt(1.0+b*b/4)-1; //计算圆外切正多边形的边长
b=2*(sqrt(b*b+4)-2)/b;
if(i*e-2*i*b<1e-15)
{
break; //精度达1e-15则停止计算
}
e=b; //保存本次正多边形的边长作为下一次精度控制的依据
}
printf("π=%.15lf\n",i*b); //输出π值和正多边形的边数
printf("The number of edges of required polygon:%ld\n",i);
}