#include <iostream>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "Russian_Russia.1251");
const int sz = 4;
float a[sz];
for (int n = 0; n < sz; n++)
{
cout << " Введите " << n + 1 << "-й отрезок: ";
cin >> a[n];
}
float temp;
for (int n = 1; n < sz; n++)
{
for (int m = 0; m < sz - n; m++)
{
if (a[m] < a[m + 1])
{
temp = a[m];
a[m] = a[m + 1];
a[m + 1] = temp;
}
}
}
cout << endl;
if (a[0] == a[1] && a[2] == a[3])
{
if (a[1] == a[2]) cout << " Возможен квадрат! ";
else cout << " Возможен прямоугольник! ";
}
else if (a[0] >= a[1] + a[2] + a[3]) cout << "\a Четырёхугольник не существует!! ";
else cout << " Прямоугольник не возможен! ";
cin.get(); cin.get();
return 0;
}
Другие языки программирования и технологии
Помогите написать программу на С++: Заданы отрезки a,b,c,d. Проверить, могут ли они служить сторонами прямоугольника
if (a == b && c == d || a == c && b == d || a == d && b == c) {
printf("Могут");
}
else
{
printf("Не могут");
}
printf("Могут");
}
else
{
printf("Не могут");
}
Программа выше не вполне верна: потому что прямоугольник не обязан быть параллелен сторонам.
Не вполне понятно, что такое "заданы отрезки", поэтому пусть будет "заданы точки x_A, y_A, ..x_D, y_D". Для параллелограмма достаточно проверить, что вектор от A к B и от D к C совпадают (если точки должны идти в порядке ABCD):
if ((x_B - x_A) == (x_C - x_D) && (y_B - y_A) == (y_C - y_D))
{ тогда могут }
else
{ тогда не могут }
Если нужен прямоугольник, то надо заодно проверить, собственно, прямой угол между AB и BC:
scalar = (x_B - x_A)*(x_B - x_C) + (y_B - y_A)*(y_B - y_C)
if ((то же условие) && scalar == 0)
{ тогда могут }
else
{ снова нет }
Наконец, если вершины идут в случайном порядке, то надо проверить те же вещи для вершин в порядке ABDC и ACBD - это все возможные случаи.
Не вполне понятно, что такое "заданы отрезки", поэтому пусть будет "заданы точки x_A, y_A, ..x_D, y_D". Для параллелограмма достаточно проверить, что вектор от A к B и от D к C совпадают (если точки должны идти в порядке ABCD):
if ((x_B - x_A) == (x_C - x_D) && (y_B - y_A) == (y_C - y_D))
{ тогда могут }
else
{ тогда не могут }
Если нужен прямоугольник, то надо заодно проверить, собственно, прямой угол между AB и BC:
scalar = (x_B - x_A)*(x_B - x_C) + (y_B - y_A)*(y_B - y_C)
if ((то же условие) && scalar == 0)
{ тогда могут }
else
{ снова нет }
Наконец, если вершины идут в случайном порядке, то надо проверить те же вещи для вершин в порядке ABDC и ACBD - это все возможные случаи.
Похожие вопросы
- Вопросик по Pascal. Есть переменные A,B,C,D. Как сделать так, чтобы при вводе A выводилось цифра 1, B - 2, C-3, D-4?
- Помогите написать на ассемблере програму для вычисления виражения y=(c-(d/2)+33 )/(2*a*a-1). c=5,d=6,a=3.
- срочно помогите написать программу на ассемблере вычисляющую R. R=x2+y2, где x=a+b-c, y=b*c-a. a,b,c вводятся с клавы
- помогите составить таблицы истиности -А -> (B + C); (A B) * C; -A + -B + C; - (A + B) * C ; A * B _+ C; A B
- {(a,b), (c,b), (c,a)} - является транзитивным или нет?
- помогите решить задачу!...Даны целые числа a, b, c, являющиеся сторонами некоторого треугольника.Проверить истинность вы
- dev c++. помогите плз сделать задачу найти наибольшую высоту треугольника из сторонами a,b,c
- Найти трехзначные числа a, b, c, все цифры которых различны и удовлетворяют уравнению a^2 – b^2 – c^2 = a – b – c.
- Может ли кирпич, имеющий форму прямоугольного параллепипеда с ребрами a,b,c, пройти через круглое отверстие радиуса R?
- Помогите написать программу по C++