Microsoft

  www.microsoft.com
  www.microsoft.com

Interview Question

Software Development Engineer In Test (SDET) Interview Redmond, WA

Given a triangle, determine if its a scalene, equilateral

  , isosceles or neither... required knowledge of triangle properties, I learnt these properties about two decades ago so ofcourse I was fuzzy on the details, completely unexpected
Answer

Interview Answer

4 Answers

0

testing use of ==, got a feeling he wanted to use bit level comparisons to compare sides lengths

Interview Candidate on 19/02/2013
0

If the sides are all integers, then compare the length^2 instead of length to avoid the floating comparison;

If the sides are floating numbers, then we need to set an epsilon to test.

You'd better ask the interviewer about this. Asking this will definitely gives the interviewer better impression.... I believe :-)

Peter on 21/07/2013
0

BTW, if you are given the sides instead of points, the condition to make an triangle is:

a+b > c && b+c > a && c+a > b

Peter on 21/07/2013
1

/* Q: Given a, b, c, determine if it can be the 3 sides of triangles, if yes
      determine if it's equilateral, isosceles, or scalene. */

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

// Use this in real world
typedef enum
{
    NONE = 0,
    EQUILATERAL = 1,
    ISOCELES = 2,
    SCALENE = 3
} TriangleType;

double Epsilon = 1.0E-6;

string GetTriangleType(double a, double b, double c)
{
    if (a+b > c && b+c > a && c+a > b)
    {
        bool ab = (fabs(a-b) < Epsilon);
        bool bc = (fabs(b-c) < Epsilon);
        bool ca = (fabs(c-a) < Epsilon);

        if (ab && bc && ca)
            return "Equilateral";

        if (ab || bc || ca)
            return "Isoceles";

        return "Scalene";
    }
    else
    {
        return "None";
    }
}

int main()
{
    cout << GetTriangleType(3, 3, 3) << endl;
    cout << GetTriangleType(3, 3, 5) << endl;
    cout << GetTriangleType(3, 4, 5) << endl;
    cout << GetTriangleType(3, 4, 7) << endl;

    return 0;
}
/* Output:
Equilateral
Isoceles
Scalene
None
 */

Peter on 21/07/2013

Add Answers or Comments

To comment on this Question, Sign In with Facebook or Sign Up