cos功能使我零
Cos function giving me zero
我是编程的完整初学者,我得到了以下任务:
编写一个C 程序,该程序使用一系列刻有常规多边形的序列计算一对π的估计值。在不超过30个步骤后停止,或者当限制和铭文多边形的周围差异小于ε=10⁻⁻⁵的公差时。您的输出应具有三个列,对于侧面数,刻有多边形的周长和限制多边形的周长。对于最后两列,在小数点后显示14位数字。
好吧,我决定使用cos的法律来找到多边形的侧面的长度,但是当我测试程序时,我意识到了这一行:a = cos(360/ngon(;一直给我一个零作为输出,这也使其他所有内容也为零,我不确定有什么问题,请提供帮助。P.S.抱歉,如果该程序看起来真的很草率,我对此真的很糟糕。
#include "stdafx.h"
#include <iostream>
#include <iomanip>
#include <fstream>
#define _USE_MATH_DEFINES
#include <math.h>
#include <cmath>
using namespace std;
int main()
{
char zzz;
int ngon = 3, a, ak;
double insngon = 0.0;
double cirngon = 0.0;
cout << "Number of Sides" << "ttt" << "Perimeter of insribed region" << "ttt" << "Perimeneter of circumscribed polygon" << "tt" << "n";
while (ngon <= 30)
{
a = cos(360 / ngon);
ak = pow(.5, 2) + pow(.5, 2) - 2 * .5*.5*a;
insngon = (ak*ngon);
cirngon = (ak / (sqrt(1 - pow(ak, 2))));
cout << fixed << setprecision(14) << ngon << " " << insngon << " " << cirngon << endl;
ngon++;
if (cirngon - insngon <= pow(10.0, -15));
cin >> zzz;
return 0;
}
cout << "nEnter any character and space to end ";
cin >> zzz;
return 0;
}
一个问题是您声明了整数,但是您在cos
的呼叫中使用它们:
int ngon = 3, a, ak;
//...
a = cos(360 / ngon);
由于a
是一个整数,因此cos
的返回值(double
类型(将被截断。另外,由于ngon
是一个整数,因此360 / ngon
也将截断。
修复程序是使a
A double
,然后由ngon
除以360.0
,以防止截断:
int ngon = 3, ak;
double a;
//...
a = cos(360.0 / ngon);
在评论中指出的另一个问题是,三角函数在C 中使用弧度作为参数,而不是学位。您需要将论点更改为弧度的等效价值。
另一个问题是您使用pow
来计算恒定值。无需引入不必要的函数调用来计算常数值。只需定义常数并使用它们即可。
例如:
const double HALF_SQUARED = 0.25
const double EPSILON_VALUE = 10.0e-15;
然后使用HALF_SQUARED
和EPSILON_VALUE
,而不是对pow
的调用。
另外, pow
本身就是浮点功能,因此可以产生不准确的结果,而不是该问题所讨论的。因此,pow(ak, 2)
应简单地替换为ak * ak
。
使用 float a;
(或double a(代替int a。
在这里,a的返回类型是int并计算
a = cos(360/ngon)
相当于cos(120(的结果为0.8141的a = cos(120(,并且是整数类型" a",只能存储整数零件。因此," A"将为0并丢弃浮动值。还使用double ak;
代替int ak;
。因为这里使用了POW功能,该功能具有返回类型的'double'
- 在执行其他功能的同时播放动画(LED矩阵和Arduino/ESP8266)
- 多态性和功能结合
- 带内存和隔离功能的SQLite
- 在CMakeLists.txt的安装功能中使用.cmake文件有什么用
- 类模板的成员功能的定义在单独的TU中完全专业化
- 有没有一种方法可以创建一个带有哈希表的数据库,该哈希表具有恒定时间查找功能
- 如何在C++中获得"静态纯虚拟"功能?
- 两个文件使用彼此的功能-如何解决
- 我应该实现右值推送功能吗?我应该使用std::move吗
- QML按钮点击功能执行顺序
- 无法理解此 return 语句的功能,没有它就会发生运行时错误
- 有没有可能有一个只有ADL才能找到的非好友功能
- 功能样式转换从 'int' 到 'ItemType' 的匹配转换
- 文件系统:复制功能的速度秘诀是什么
- 在用于格式4的arm模拟器中实现功能时的一个问题
- 如何在Directwrite中获得给定字体的可用OpenType功能
- 对可变参数使用声明.如何选择正确的功能
- 询问在设计我的手臂模拟器功能表示格式1
- 功能原型的目的
- cos功能使我零