Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 确定三角形的类型_Sql_Sql Server_Sql Server 2012 - Fatal编程技术网

Sql 确定三角形的类型

Sql 确定三角形的类型,sql,sql-server,sql-server-2012,Sql,Sql Server,Sql Server 2012,我正在尝试下面的黑客等级三角形类型,根据3条边,必须确定三角形是等边三角形、等腰三角形、斯凯伦三角形还是非三角形 我不确定为什么下面的代码没有通过测试用例。不幸的是,我无法下载测试用例来了解它为什么不工作 SELECT CASE WHEN A = B AND B = C AND A = C THEN 'Equilateral' WHEN (A = B AND B != C AND A != C) OR (B = C AND A != B AND A != C) O

我正在尝试下面的黑客等级三角形类型,根据3条边,必须确定三角形是等边三角形、等腰三角形、斯凯伦三角形还是非三角形

我不确定为什么下面的代码没有通过测试用例。不幸的是,我无法下载测试用例来了解它为什么不工作

SELECT CASE WHEN A = B AND B = C AND A = C THEN 'Equilateral' 
            WHEN (A = B AND B != C AND A != C)  OR (B = C AND A != B AND A != C)  OR (A = C AND A != B AND B != C) THEN 'Isosceles' 
            WHEN ((A + B) < C) OR ((B + C) < A) OR ((C + A) < B) THEN 'Not a triangle' 
            ELSE 'Scalene'  END 
FROM Triangles
选择A=B、B=C和A=C时的情况,然后选择“等边”
当(A=B和B!=C和A!=C)或(B=C和A!=B和A!=C)或(A=C和A!=B和B!=C)时,则“等腰”
当((A+B)
试试这个:

SELECT CASE WHEN A + B > C AND A+C>B AND B+C>A THEN 
   CASE WHEN A = B AND B = C THEN 'Equilateral' 
        WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
        WHEN A != B OR B != C OR A != C THEN 'Scalene' 
   END 
   ELSE 'Not A Triangle' END FROM TRIANGLES;
“不等边三角形”的条件在原始查询中不包括以下条件:第1面+第2面尝试以下操作:

SELECT CASE WHEN A + B > C AND A+C>B AND B+C>A THEN 
   CASE WHEN A = B AND B = C THEN 'Equilateral' 
        WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
        WHEN A != B OR B != C OR A != C THEN 'Scalene' 
   END 
   ELSE 'Not A Triangle' END FROM TRIANGLES;

“不等边三角形”的条件在原始查询中不包括以下条件:第1面+第2面尝试以下操作:

SELECT 
    CASE 
        WHEN A + B > C AND A + C > B AND B + C > A THEN 
            CASE 
                WHEN A = B AND B = C THEN 'Equilateral' 
                WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
                ELSE 'Scalene' END 
        ELSE 'Not A Triangle' END 
    FROM TRIANGLES

当三角形为三角形时,仅测试三角形的类型。

尝试以下方法:

SELECT 
    CASE 
        WHEN A + B > C AND A + C > B AND B + C > A THEN 
            CASE 
                WHEN A = B AND B = C THEN 'Equilateral' 
                WHEN A = B OR B = C OR A = C THEN 'Isosceles' 
                ELSE 'Scalene' END 
        ELSE 'Not A Triangle' END 
    FROM TRIANGLES

当三角形为三角形时,仅测试三角形的类型。

我将其更改为“非三角形”,但它仍然给出错误。
((a+B)
应为
((a+B)进行更改后,测试用例仍会出错您的问题是,您的代码将返回
等腰线
,例如
A=5b=5c=20
,但它实际上不是三角形。下面的任何一个答案都会帮您解决。谢谢。错过了该用例。我将其更改为“非三角形”,但它仍然给出了一个错误。
((A+B)
应该是
((A+B)在进行更改后,测试用例仍然会出错您的问题是您的代码将返回
Isosceles
,例如
A=5b=5c=20
,而这实际上不是一个三角形。下面的任何一个答案都会帮您解决。谢谢。错过了那个用例。我从另一篇文章中看到了这个答案。但我不明白为什么de I Write不起作用。因为,在声明它为三角形之前,您并没有检查它是否是三角形Scalene@JonathanVanDam实际上,他在称之为“等腰”之前并没有检查它是否是三角形。谢谢@Nick我在这一点上说错了。我在另一篇帖子中看到了这个答案。但我不明白为什么我写了这个代码e不起作用。因为,在声明它为三角形之前,你并没有检查它是否是三角形Scalene@JonathanVanDam事实上,他在称之为“等腰”之前并没有检查它是否是三角形。