标题:求解,这个怎么破??
只看楼主
chen1086
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-2-4
结帖率:0
已结贴  问题点数:20 回复次数:5 
求解,这个怎么破??
用c语言编程,输入四个数,判断这四个数据能否组成四边形和正方形,能了输出1,不能输出0,不能用if,switch等条件以及&&, ||, !, <, <=, ==, >=, >等逻辑语言,难点是三边和等于第四边也算是四边形,这个应该怎么办?
搜索更多相关主题的帖子: c语言编程 怎么办 四边形 正方形 
2013-02-04 06:49
chen1086
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-2-4
得分:0 
我现在知道带逻辑命令和if的怎么写,问题是不带的怎么办??
2013-02-04 06:52
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:5 
c语言 内嵌汇编来实现

我行我乐
我的博客:
http://blog.yuccn. net
2013-02-04 09:53
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:5 
以下是引用yuccn在2013-2-4 09:53:31的发言:

c语言 内嵌汇编来实现

DO IT YOURSELF !
2013-02-04 11:02
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:5 
内嵌汇编其实是投机取巧利用题面描述的漏洞玩文字游戏了,也失去了这题的意义。

正统的方法其实非常简单。

四条线段能否构成四边形的充要条件是任意三条线段的和要大于等于(他题目要求等于的)另一条边。这个结论估计大家都知道,它很重要,但不是关键,关键是下一条结论。

如果四条线段不能构成四边形,那么四条线段中有且只有一条线段大于其它三条线段的和。谁都会觉得这是句废话,但它却是构造楼主要求算法的关键。

设四条线段的边长分别为a b c d,另外三边的和与该边的差设为A B C D。即

A = -a + b + c + d
B = a - b + c + d
C = a + b - c + d
D = a + b + c - d

由上面的结论可知,如果能构成四边形,则A B C D都大于等于0;

如果不能构成四边形,则A B C D中必有且只有一个为负数,另外三个必然都大于0(不存在等于0的情况,可以用反证法证明)。

所以可以通过判断A B C D中有没有负数来判断能不能构成四边形。

演示一下吧
程序代码:
int judge(int a, int b, int c, int d)
{
    int e;
    e = -a + b + c + d;
    e *= a - b + c + d;
    e *= a + b - c + d;
    e *= a + b + c - d;
    return (~e >> (sizeof(int) * 8 - 1)) & 1;
}

重剑无锋,大巧不工
2013-02-04 12:10
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
得分:5 
学习勒

仰望星空...........不忘初心!
2013-02-04 14:03



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-398166-1-1.html




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

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