Даны произвольные числа a,b,c. выяснить существует ли треугольник с такими длинами сторон. если треугольник существует, то определить является ли он равносторонним ил каким-либо иным. написать программу в с++ нужно
Ну, нужно сравнить A+B и C стороны. Если A+B<=C(для каждой стороны), то треугольник не существует. Если A=B=C - равносторонний. Если A=B или A=C или B=C - равнобедренный. псевдокод bool Triangle(int &a, int &b, int &c) { return ((a + b > c) && (b + c > a) && (c + a > b)); } ... int Type(int a, int b, int c) { if(a == b == c) { return 0; } else { if(a==b || c == b || a == c) { return 1; } return 2; } } int main() { ... if(Triangle(a, b, c)) { cout<<(Type(a, b, c) == 0) ? "равносторонний" : (Type(a, b, c) == 1) ? "равнобедренный" : "разносторонний"; } else { cout<<"Это не треугольник"; } ... return 0; }
Если х1,у1 - координаты одного конца 1-го отрезка, х2,у2 - координаты его второго конца, то уравнение прямой, на которой этот отрезок лежит, такое: у=у1+(у2-у1)(х-х1)/(х2-х1). Для второго отрезка (х3,у3) и (х4,у4), прямая у=у3+(у4-у3)(х-х3)/(х4-х3). Абсцисса точки пересечения (х,у) этих прямых находится из равенства
у1+(у2-у1)(х-х1)/(х2-х1)=у3+(у4-у3)(х-х3)/(х4-х3). Это х надо выразить в виде формулы до написания программы, чтобы х вычислялось в программе по этой формуле.
Схема программы: 1) проверка параллельности отрезков. Если "да", то выход и ответ "не существует". 2) проверка выполнения двух двойных неравенств: x1 <= x <= x2, x2 <= x <= x4. Если оба неравенства "истина", то ответ "существует", иначе "не существует"
Обратите внимание, что х1 должно быть меньше чем х2, и х3 меньше чем х4.
Если х1,у1 - координаты одного конца 1-го отрезка, х2,у2 - координаты его второго конца, то уравнение прямой, на которой этот отрезок лежит, такое: у=у1+(у2-у1)(х-х1)/(х2-х1). Для второго отрезка (х3,у3) и (х4,у4), прямая у=у3+(у4-у3)(х-х3)/(х4-х3). Абсцисса точки пересечения (х,у) этих прямых находится из равенства
у1+(у2-у1)(х-х1)/(х2-х1)=у3+(у4-у3)(х-х3)/(х4-х3). Это х надо выразить в виде формулы до написания программы, чтобы х вычислялось в программе по этой формуле.
Схема программы: 1) проверка параллельности отрезков. Если "да", то выход и ответ "не существует". 2) проверка выполнения двух двойных неравенств: x1 <= x <= x2, x2 <= x <= x4. Если оба неравенства "истина", то ответ "существует", иначе "не существует"
Обратите внимание, что х1 должно быть меньше чем х2, и х3 меньше чем х4.
псевдокод
bool Triangle(int &a, int &b, int &c)
{
return ((a + b > c) && (b + c > a) && (c + a > b));
}
...
int Type(int a, int b, int c)
{
if(a == b == c) {
return 0;
} else {
if(a==b || c == b || a == c) {
return 1;
}
return 2;
}
}
int main()
{
...
if(Triangle(a, b, c)) {
cout<<(Type(a, b, c) == 0) ? "равносторонний" : (Type(a, b, c) == 1) ? "равнобедренный" : "разносторонний";
} else {
cout<<"Это не треугольник";
}
...
return 0;
}