Is this a triangle?-- 7 Kyu

原题

http://www.codewars.com/kata/is-this-a-triangle/train/cpp

题目

Is this a triangle?
implement a method that accepts 3 integer values a, b, c. The method should return true if a triangle can be built with the sides of given length and false in any other case.
(In this case, all triangles must have surface greater than 0 to be accepted).

分析

三边构成三角形条件:任意两边之和大于第三边,任意两边之差小于第三边。
注意:int之和可能溢出

参考答案

namespace Triangle
{
  bool isTriangle(int a, int b, int c)
  {
    long la(a),lb(b),lc(c);
    return a>0 and b>0 and c>0 and
           la-lblc and la+lc>lb and lb+lc>la;      
  }
};

说明

本问题非常简单,但是要注意参数的特殊情况。

  1. 负值和0值的情况,需要把这两种情况排除。
  2. 参数是整型极大值的情况,两个整型极大值会溢出。所以要把intlong

其它

可以使用如下方式避免特殊情况。

bool isTriangle(int a, int b, int c){
    return a-b

你可能感兴趣的:(Is this a triangle?-- 7 Kyu)