#include<iostream>
#include<array>
#include<cmath>
const double pi { std::atan(1) * 4 };
const double rad2deg (const double rad) { return ((int) (100000.0 * rad * 180 / pi)) / 100000.0; }
const double deg2rad (const double deg) { return ((int) (100000.0 * deg * pi / 180)) / 100000.0; }
class point {
public:
int x;
int y;
point (int _x=0, int _y=0): x{_x}, y{_y} {}
point (const point& p): x{p.x}, y{p.y} {}
point (point&& p): x{std::move(p.x)}, y{std::move(p.y)} {}
point& operator= (const point& p) {x=p.x, y=p.y; return *this;}
point& operator= (point&& p) {x =std::move(p.x), y=std::move(p.y); return *this;}
~point() {}
};
double distance (const point& a, const point& b) {
int x = a.x - b.x;
int y = a.y - b.y;
return std::sqrt ((x*x) + (y*y));
};
class triangle {
public:
using triangle_t = std::array<point, 3>;
triangle_t vertex;
enum angle_t {A, B, C};
enum side_t {a, b, c};
triangle (const point&, const point&, const point&);
triangle (const triangle_t&);
double angle_rad (const angle_t) const;
double angle (const angle_t) const;
double side (const side_t) const;
bool is_equilateral () const;
bool is_isosceles () const;
bool is_right_isosceles () const;
bool is_acute_isosceles () const;
bool is_obtuse_isosceles () const;
};
triangle::triangle (const point& A, const point& B, const point& C)
{
vertex[0] = A;
vertex[1] = B;
vertex[2] = C;
}
triangle::triangle (const triangle_t& v)
{
vertex = v;
}
double triangle::side(const side_t _side) const {
switch (_side)
{
case a:
return distance (vertex[b], vertex[c]);
case b:
return distance (vertex[a], vertex[c]);
case c:
default:
return distance (vertex[a], vertex[b]);
}
}
double triangle::angle_rad(const angle_t _angle) const {
const double a = side(triangle::a);
const double b = side(triangle::b);
const double c = side(triangle::c);
switch (_angle)
{
case A:
return std::acos (((b*b) + (c*c) - (a*a))/(2*b*c));
case B:
return std::acos (((a*a) + (c*c) - (b*b))/(2*a*c));
case C:
default:
return std::acos (((a*a) + (b*b) - (c*c))/(2*a*b));
}
}
double triangle::angle(const angle_t _angle) const {
return rad2deg (angle_rad(_angle));
}
bool triangle::is_equilateral () const {
return
side(a)==side(b) && side(b) == side(c);
}
bool triangle::is_isosceles () const {
return
!is_equilateral() && (
side(a)==side(b)
side(a)==side(c)
side(b)==side(c));
}
bool triangle::is_right_isosceles () const {
return
is_isosceles() && (
angle(triangle::A)==90.0
angle(triangle::B)==90.0
angle(triangle::C)==90.0);
}
bool triangle::is_obtuse_isosceles () const {
return
(90.0<angle(triangle::A) && side(b)==side(c))
(90.0<angle(triangle::B) && side(a)==side(c))
(90.0<angle(triangle::C) && side(a)==side(b));
}
bool triangle::is_acute_isosceles () const {
return
!is_equilateral() && (
(angle(triangle::A)<90.0 && side(b)==side(c))
(angle(triangle::B)<90.0 && side(a)==side(c))
(angle(triangle::C)<90.0 && side(a)==side(b)));
}
std::ostream& operator<< (std::ostream& os, const triangle& t)
{
return os
<< "Side a\t\t\t= " << t.side(triangle::a) << std::endl
<< "Side b\t\t\t= " << t.side(triangle::b) << std::endl
<< "Side c\t\t\t= " << t.side(triangle::c) << std::endl
<< "Angle A\t\t\t= " << t.angle(triangle::A) << " degrees" << std::endl
<< "Angle B\t\t\t= " << t.angle(triangle::B) << " degrees" << std::endl
<< "Angle C\t\t\t= " << t.angle(triangle::C) << " degrees" << std::endl
<< "Is equilateral\t\t= " << (t.is_equilateral() ? "yes" : "no") << std::endl
<< "Is isosceles\t\t= " << (t.is_isosceles() ? "yes" : "no") << std::endl
<< "Is right isosceles\t= " << (t.is_right_isosceles() ? "yes" : "no") << std::endl
<< "Is obtuse isosceles\t= " << (t.is_obtuse_isosceles() ? "yes" : "no") << std::endl
<< "Is acute isosceles\t= " << (t.is_acute_isosceles() ? "yes" : "no") << std::endl;
}
int main()
{
triangle t {{0,0},{6,6},{6,0}};
std::cout << t << std::endl;
t.vertex[triangle::B]=point{3,6};
std::cout << t << std::endl;
}
An isosceles triangle will have equal sides and 2 equal angles of 45 degrees plus a 90 degree angle.
If you mean "isosceles" triangle, the perimeter is the sum of twice the known side plus the base.
A triangle that has 2 equal sides is an isosceles triangle
If it is an equilateral triangle then it will have 3 equal angles If it is an isosceles triangle then it will have 2 equal angles plus another different size angle
3, 5, 5 does not make a right angle triangle but they can make an isosceles triangle Correct. Try 3,4,5. That will be a right triangle. 3x3 plus 4x4 = 5x5
* ** *** **** simply use dis... { int x,y; for(x=1;x<=4;x++) { for(y=1;y<=x;y++) printf("*"); printf("\n"); } }
In the equilateral triangle, all the sides are the same length and all the angles are the same size (congruent). Since the sum of the angles of a triangle is always 180 degrees, we can figure out the measure of the angles of an equilateral triangle.Another Answer:-An isosceles triangle has 2 equal base angles plus another angle and the 3 interior angles add up to 180 degrees.
i dn't know. haha
Acute triangle has all angles less than 90 degrees.Right-triangle has one 90 degrees angle.Obtuse triangle has one angle more than 90 degrees.Additional Information:-Isosceles triangle has 2 equal angles plus another angle and they add up to 180 degreesEquilateral triangle has 3 equal interior 60 degree angles
If you mean vertices of (-1, 4) (2, 7) and (1, 5) then it is an isosceles triangle with a perimeter of square root of 18 plus square root of 5 plus square root of 5 which is about 8.715 rounded to three decimal places.
24
two isosceles triangles with common line