Check whether a triangle is Equilateral, Isosceles, or Scalene based on its three sides.
/\ / \ 5 / \ 5 /______\ 5
All sides equal
/\ / \ 7 / \ 7 /______\ 4
Two sides equal
/\ / \ 8 / \ 6 /______\ 5
All sides different
Enter three integers as input
Print the output as "Equilateral" or "Isosceles" or "Scalene"
-10^9 <= INPUT <= 10^9
#include <iostream> using namespace std; int main() { long long a, b, c; cin >> a >> b >> c; // Check if all three sides are equal (Equilateral) if (a == b && b == c) cout << "Equilateral"; // Check if any two sides are equal (Isosceles) else if (a == b || b == c || c == a) cout << "Isosceles"; // All sides are different (Scalene) else cout << "Scalene"; return 0; }
Step-by-Step Decision Process:
a == b && b == c
a == b || b == c || c == a
Why Order Matters: Equilateral triangles also satisfy the Isosceles condition (a == b is true when all are equal), so we must check Equilateral first!
// ❌ WRONG: Equilateral (5,5,5) will output "Isosceles" if (a == b || b == c || c == a) // Checked first! cout << "Isosceles"; else if (a == b && b == c) cout << "Equilateral";
a == b && b == c
for Isosceles would miss cases like (5,5,3)a == b
misses other equal pairsint
instead of long long
for large constraintsExample | a==b | b==c | a==c | a==b&&b==c | a==b||b==c||a==c | Result -----------|------|------|------|------------|------------------|------------ (5,5,5) | T | T | T | T | T | Equilateral (5,5,3) | T | F | F | F | T | Isosceles (5,3,5) | F | F | T | F | T | Isosceles (3,5,5) | F | T | F | F | T | Isosceles (3,4,5) | F | F | F | F | F | Scalene
Key Insight: Equilateral triangles make all equality checks true, while Isosceles makes at least one true.
You can also solve this by counting how many pairs of sides are equal:
int equal_count = 0; if (a == b) equal_count++; if (b == c) equal_count++; if (a == c) equal_count++; if (equal_count == 3) cout << "Equilateral"; // All pairs equal else if (equal_count >= 1) cout << "Isosceles"; // At least one pair equal else cout << "Scalene"; // No pairs equal
Note: When all three sides are equal, all three pair comparisons (a==b, b==c, a==c) are true, giving count = 3.
Combine this with triangle validity checking for a complete solution:
long long a, b, c; cin >> a >> b >> c; // First, check if sides can form a valid triangle if ((a + b > c) && (a + c > b) && (b + c > a)) { // Then classify the triangle type if (a == b && b == c) cout << "Valid Equilateral Triangle"; else if (a == b || b == c || c == a) cout << "Valid Isosceles Triangle"; else cout << "Valid Scalene Triangle"; } else { cout << "Not a valid triangle"; }