-
square 未初始化为 0。
而且查找该区域的算法似乎存在问题。 您找到的只是由所有三个相邻顶点组成的三角形面积之和。
我认为正确的算法应该首先在多边形中找到一个点,然后把这个点作为顶点,依次与多边形的每一边形成n个三角形,并找到这n个三角形的面积之和。
另一种算法是始终将多边形的第一个顶点作为三角形的顶点,然后取多边形的第一个顶点、第三个顶点和多边形的第四个顶点,。。n-1,n 个顶点,将多边形总共分为 n-2 个三角形。 这样你的算法就把。
for(i=0;isquare+=s(a[i],b[i],a[i+1],b[i+1],a[i+2],b[i+2]);
更改为 for(i=0; isquare+=s(a[0],b[0],a[i+1],b[i+1],a[i+2],b[i+2]);
就是这样。
-
我帮你更改了以下位置,并用注释标记了它们。
#include
#include
double len(int x1,int y1,int x2,int y2)
double s(int x1,int y1,int x2,int y2,int x3,int y3)
int main()
-
由于存在多个重载函数而导致语法错误的函数之一。
l=sqrt((x1-x2)^2+(y1-y2)^2);
我使用了 double 类型参数的 sqrt 函数,基于上面的 l 类型为 double 的事实,并将其更改为以下内容。
l=sqrt((double)((x1-x2)^2+(y1-y2)^2));
语法很好。
-
1、是有点异或,不是正方形。
2、你要找的区域很简单,就要用递归,只能找到3-5个边,6个边及以上会漏掉中间的剩余部分。
3. 建议将点定义为结构。
-
你总是给我发错误的提示吗?
-
留下电子邮件地址并将其发送给您 MFC 版本。
-
这是因为您添加的步长是,如果您添加 yes,您可以正常退出循环。
为什么步长不好,因为双精度、浮点等浮点数都是二进制浮点数。
它的值大于值的一小部分,这是准确的,因为 large 和 one 的值是一个整数,它是通过将 2 0 2 1 2 2 的幂相加得到的。
小于 1 的部分不一定是,它们仍然是由 2 的幂累积的,从 2 -1 2 -2 2 -3,即 1 2、1 4、1 8 这样累积,因此对于一些十进制十进制数,它不能精确地表示,只能近似地表示。
例如,不能使用负数 2 来表示此数字。
二的负数是 1 2, 1 4, 1 8
大约等于 51 256 = 1 256 + 25 128 = 1 256 + 1 128 + 3 16 = 1 256 + 1 128 + 1 16 + 1 8=
0 1) +0 1 2) +0 (1 4) +1 (1 8) +1 (1 16) +0 (1 32) +0 (1 64) +1 1 128) +1 1 256) = 这是二进制十进制表示形式。
可以看出,只要小数的值不能降为二负的整数倍(这种情况很多),那么二进制表示的小数就只能近似了。
既然是近似值,你自然不可能积累出你想要得到的确切值,也无法判断我!= 10 基本上会失败,除非你加一个精确的浮点数,例如,或类似的东西,其中整步数刚好足以匹配你的判断--- 10。
因此,这种判断一般基于 i < = 10。
-
浮点数之间的精度存在差异,因此它与 10 确实不同。
-
这是一个棘手的问题。 实际上,在实际操作过程或编写程序时,我们要求浮点数有一定的精度,而且大多数情况下,我们会以文件的形式存储到*10n的幂来存储和删除小数位。 让我们进入正题。
任何数据都以二进制(0 或 1)顺序存储在内存中,每个 1 或 0 称为 1 位,而在 x86 CPU 上,字节为 8 位。 例如,如果一个 16 位(2 字节)短 int 变量的值为 1000,则其二进制表达式为:00000011 11101000。
由于Intel CPU的架构,它是以相反的字节顺序存储的,所以应该是这样的:11101000 00000011,这是内存中固定数字1000的结构。
目前,C C++ 编译器标准遵循 IEEE 开发的浮点符号来执行浮点运算和双精度运算。 这种结构是一种科学记数法,由符号、指数和尾数表示,以 2 为基数——即浮点数表示为尾数乘以 2 的指数幂。 具体规格如下:
符号、姿态、尾数、长度。
float 1 8 23 32
double 1 11 52 64
暂定号码 1 15 64 80
由于 C 编译器的默认浮点数是 double,因此下面是一个 double 示例:
共 64 位,相当于 8 个字节。 从最高到最低,他们都是第一名
最高数字 63 为符号位,1 表示数字为负数,0 表示正数;
62-52位,共11位为指数位;
51-0 位,总共 52 位是尾数数字。
根据 IEEE 浮点表示法,以下会将双精度类型的浮点数转换为十六进制**。
处理整数部分和小数部分:整数部分直接为十六进制:960e。 小数的处理:
实际上,它永远不会结束! 这称为浮点精度问题。 因此,在添加第一个整数部分之前,计算 53 位就足够了(隐藏位技术:最高位的 1 不写入内存)。
如果您有足够的耐心并手动数到 53 位数字,那么原因应该是:
科学记数法是:将 2 乘以 15 次方。 指数是15!
那么我们来看一下步码,总共有11位,可以表示范围是-1024 1023。 因为指数可以为负数,为了方便计算,先加1023,其中15+1023=1038。 二进制表示为:
符号位:正 - 0 ! 求和在一起(不要是尾数二进制文件的最高位之一):
以反向字节顺序存储的十六进制数为:
55 55 55 55 cd c1 e2 40
-
浮动数字并不难,但要记住它们真的不容易。
一般来说,浮点数的表示有几个要点:
1.归一化(让浮点数表示结果唯一),因为100 10 2=*10 3,所以第一步是统一归一化,确定“顺序”和“尾数”(尾数介于两者之间,即二进制之间)。
2.“序号”一般用“移码”表示,而“尾数”一般用“原始码补码”表示,“数字字符”用浮点数的正二号表示。
3.浮点数的形式:“符号位”、“顺序”、“尾数”。
浮点数的表示是基于不同的标准,表示方法也不同,你原来的问题没有解释清楚用什么格式来表示,所以我就用最常用的格式来理解。
其实在以上两点上,计算机中的“符号数表示”有四种:原始代码、补码、反向代码、移码,这些都是基本知识,大家可以自己看一下这四种表示,自然会理解“顺序符号、数字符号”的作用,相当于“符号位”。
下面简单说一下,然后大家可以详细看一下:
小数点前面可以有“符号位”,对应于原来的“顺序”和“数字”)。
原码:表示+2-2),表示'前面的1等价于符号位,表示该数字为负数,即“符号位为0”表示正数,1表示负数)。
补码:最常见的是补码表示,这意味着“0”是正数,1是负数。 以及原始法典的法律)。
反向代码是最简单的:正数不变,负数可以对每个位“否定”,即相反的数字)。
以上三种表示法不处理正数,但移码表示法不处理正数。
移码:,而。
移码稍微复杂一些,它的表达式是:移码二阶码位数 True value(true value:指原来的“符号数”,注意在计算中加入正号和次号)。
n= :顺序是“正 100”,尾数是“负”,所以整个浮点数是负数,所以第一个数字是“1”。
订货号为“10 0100”。
所以,它应该表示为:1(符号位)100100(订单代码的移码表示)11010100
-
它由四部分组成,尾数编号的符号位、尾数编号的符号位和订单代码的符号位。
首先存储订单的符号位 - ,然后是订单 1,然后是尾数的符号位 - ,然后是尾数 .
-
这个问题在《计算机作文原理》一书中,建议提问者阅读该书来解决。
-
非常感谢! 通过你的。
我对细节了解得更多。 只是现在在两个例子中,因为56是正数,所以原来的码和补码是一样的,但是是负数,原来的码和补码是不一样的,我看到答案中的尾数不是补码,而是原码11111001101, 我认为如果补码应该是00000110011或10000110011,那么这一点还没有被理解,如果第一位不是1位隐藏位怎么办?答案是否0x9bcd正确,如果是,尾数是原始代码吗?
希望能再次给出答案,谢谢!
你痴迷于我“、”我爱上你的那一天“、”星星“、”因为我想念“、”甚至不确定“、”我不知道“、”好吧,笑“,纯粹的**包括”你准备好战斗了吗“、”怎么办“、”去看你“、”你被我迷住了“、”因为我想念“、”因为我想念“(吉他版)我不知道“、”人生之战“、”好吧,笑“、”对与错“、”悲伤的决定”。 里面的演员们还演唱了《如果我走了》《偶然遇见的她》《算了吧》《幸运》《朝向明天》《别哭》《好笑了》。