С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25

По заданным точкам двух треугольников определить подобны ли они

02.11.2014, 22:21. Показов 4616. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, господа.Возникла проблема с этой задачей
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.11.2014, 22:21
Ответы с готовыми решениями:

Вводятся длины сторон двух треугольников. Определить, являются ли они подобными
Помогите решить! Вводятся длины сторон двух треугольников. Определить, являются ли они подобными.

Вычислить площади двух треугольников, и определить, какой из треугольников имеет большую площадь
Два треугольника заданные координатами своих вершин a, b, c. Вычислить площади треугольников, используя формулы Герона, и определить, какой...

Написать программу для построения двух кривых по заданным точкам
Доброго времени суток! У меня такая задачка Написать программу, для построения двух кривых по заданным точкам. Точки задаются в...

29
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 22:43
И в чем же проблема? В математике, в С++ или вообще "дайте все и сразу"?
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 22:50  [ТС]
Ну по идее нельзя же измерить углы в с++,так что подобие нужно будет определять по пропорциональностям сторон в этом треугольнике.Длину стороны мы можем измерить,отняв начало от конца,а далее у меня ступор
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 22:53
Не верьте - в С++ можно все И через углы, и через стороны. Хотите через стороны - начинайте с кода вычисления их длин.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 23:08  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
using namespace std;
 
int main()
{
    int A1, A2, B1, B2, C1, C2, D1, D2, E1, E2, F1, F2, a, b, c, d, e, f;
    cout << " Vuvedete koordinati A, B, C " ;
    cin << A1 << A2 << B1 << B2 << C1 << C2;
    cout << " Vuvedete koordinati D, E, F " ;
    cin << D1 << D2 << E1 << E2 << F1 << F2;
    a = sqrt(pow(B1 - A1, 2) + pow(B2 - A2, 2));
    b = sqrt(pow(C1 - B1, 2) + pow(C2 - B2, 2));
    c = sqrt(pow(C1 - A1, 2) + pow(C2 - A2, 2));
Длину вычислил,подскажите пожалуйста,что дальше?
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:12
Хорошо. Теперь у вас есть 3 длины сторон одного треугольника и 3 другого. Как предположить, какая сторона первого какой стороне второго соответствует?
1
 Аватар для D_in_practice
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
02.11.2014, 23:12
Лучший ответ Сообщение было отмечено Foody как решение

Решение

Важен порядок ввода точек
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main(){
    
    double x[2][3];
    double y[2][3];
    
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 3; ++j){
            cout << "x[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> x[i][j];
            cout << "y[" << i + 1 << "][" << j + 1 << "] = ";
            cin >> y[i][j];
        }
        
    double a[2][3];
    
    for (int i = 0; i < 2; ++i)
        for (int j = 0; j < 3; ++j){
            double dx = x[i][(j % 3)] - x[i][(j + 1) % 3];
            double dy = y[i][(j % 3)] - y[i][(j + 1) % 3];
            a[i][j] = sqrt (dx * dx + dy * dy);
        }
    
    double k = a[0][0] / a[1][0];
    int b = 0;
    const double eps = 0.000001;
    for (int i = 1; i < 3; ++i)
        if (a[0][i] / a[1][i] - k < eps)
            ++b;
            
    if (b == 2)
        cout << "Òðåóãîëüíèêè ïîäîáíû!" << endl;
}
1
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:13
Foody, Только для скурта и пова нужен мат, и длины сторон могут быть не целые.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 23:16  [ТС]
изменил int на double, добавил cmath.По идее меньшая - наименьшей,большая - наибольшей
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:18
Да вы все знаете, оказывается А что ж тогда ждете от форума - давайте полный код.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 23:22  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double A1, A2, B1, B2, C1, C2, D1, D2, E1, E2, F1, F2, a, b, c, d, e, f;
    cout << " Vuvedete koordinati A, B, C " ;
    cin << A1 << A2 << B1 << B2 << C1 << C2;
    cout << " Vuvedete koordinati D, E, F " ;
    cin << D1 << D2 << E1 << E2 << F1 << F2;
    a = sqrt(pow(B1 - A1, 2) + pow(B2 - A2, 2));
    b = sqrt(pow(C1 - B1, 2) + pow(C2 - B2, 2));
    c = sqrt(pow(C1 - A1, 2) + pow(C2 - A2, 2));
    d = sqrt(pow(E1 - D1, 2) + pow(E2 - D2, 2));
    e = sqrt(pow(F1 - E1, 2) + pow(F2 - C2, 2));
    f = sqrt(pow(F1 - D1, 2) + pow(F2 - D2, 2));
    if (a / d == b / e == c / f)
    {
        cout << " Treugolniki podobni " ;
    }
    return 0;
}
Слишком просто как-то все,уверен что неверно
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:25
Правильно уверены. Я вот не знаю всех этих современных стандартов С и С++ и не могу предположить, как компилятор воспримет
C++
1
if (a / d == b / e == c / f)
, поэтому просто такое не пишу. А еще, слово равно, оно такое строгое..... Вот как вы считаете, например, пи = 3.13926 или нет?
1
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 23:27  [ТС]
warning C4805: ==: небезопасное смешение типа 'bool' и типа 'double' в операции
Вот что мне пишет компилятор. Пи - число бесконечное
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:29
Ну и давайте, исправляйте ваш код с учетом этих открытий, не надо тривиальщину сюда писать
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
02.11.2014, 23:36  [ТС]
К сожалению мне это совсем ничего не открыло,я все также никак не могу понять что же мне надо исправить

Добавлено через 3 минуты
Не могли бы вы разъяснить на что мне исправить,мои мысли в тупике
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
02.11.2014, 23:42
1. синтаксис в условии проверки
2. проверку на точное равенство
3. вы что-то говорили о большей и меньшей сторонах, но эти ваши мысли не нашли отражение в коде.
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
03.11.2014, 00:01  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double A1, A2, B1, B2, C1, C2, D1, D2, E1, E2, F1, F2, a, b, c, d, e, f,;
    int min1, min2, max1, max2,
    cout << " Vuvedete koordinati A, B, C " ;
    cin >> A1 >> A2 >> B1 >> B2 >> C1 >> C2;
    cout << " Vuvedete koordinati D, E, F " ;
    cin >> D1 >> D2 >> E1 >> E2 >> F1 >> F2;
    a = sqrt(pow(B1 - A1, 2) + pow(B2 - A2, 2));
    b = sqrt(pow(C1 - B1, 2) + pow(C2 - B2, 2));
    c = sqrt(pow(C1 - A1, 2) + pow(C2 - A2, 2));
    d = sqrt(pow(E1 - D1, 2) + pow(E2 - D2, 2));
    e = sqrt(pow(F1 - E1, 2) + pow(F2 - C2, 2));
    f = sqrt(pow(F1 - D1, 2) + pow(F2 - D2, 2));
    max1 = 0;
    min1 = 0;
    if (a < b && a < c) min1 = a;
    else (b < a && b < c) min1 = b;
    else min1 = c ;
    if (a > b && a > c) max1 = a;
    else (b > a && b > c) max1 = b;
    else max1 = c;
    if  (d < e && d < f) min2 = d;
    else (e < d && e < f) min2 = e;
    else min2 = f;
    if ( d > e && d > f ) max2 = d;
    else ( e > d && e > f) max2 = e;
    else max2 = f;
 
    
    return 0;
}
Синтаксис в условии проверки заменить на меньше или равно?

Добавлено через 2 минуты
Понимаете,у меня час до конца сдачи остался,боюсь не успеть
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
03.11.2014, 00:10
Уже ближе к истине, хотя логику максимумов/минимумов не проверял.
У вас как в голливудском экшене - час до сдачи: успеть все! Тогда поторопитесь, у вас мало времени (С) "Достучаться до небес"
0
0 / 0 / 0
Регистрация: 02.11.2014
Сообщений: 25
03.11.2014, 00:22  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <iostream>
#include <cmath>
using namespace std;
 
int main()
{
    double A1, A2, B1, B2, C1, C2, D1, D2, E1, E2, F1, F2, a, b, c, d, e, f, min1, min2, max1, max2;
    cout << " Vuvedete koordinati A, B, C " ;
    cin >> A1 >> A2 >> B1 >> B2 >> C1 >> C2;
    cout << " Vuvedete koordinati D, E, F " ;
    cin >> D1 >> D2 >> E1 >> E2 >> F1 >> F2;
    a = sqrt(pow(B1 - A1, 2) + pow(B2 - A2, 2));
    b = sqrt(pow(C1 - B1, 2) + pow(C2 - B2, 2));
    c = sqrt(pow(C1 - A1, 2) + pow(C2 - A2, 2));
    d = sqrt(pow(E1 - D1, 2) + pow(E2 - D2, 2));
    e = sqrt(pow(F1 - E1, 2) + pow(F2 - C2, 2));
    f = sqrt(pow(F1 - D1, 2) + pow(F2 - D2, 2));
    max1 = 0;
    min1 = 0;
    if (a < b && a < c) min1 = a;
    if  (b < a && b < c) min1 = b;
    else min1 = c ;
    if (a > b && a > c) max1 = a;
    if  (b > a && b > c) max1 = b;
    else max1 = c;
    if  (d < e && d < f) min2 = d;
    if  (e < d && e < f) min2 = e;
    else min2 = f;
    if ( d > e && d > f ) max2 = d;
    if  ( e > d && e > f) max2 = e;
    else max2 = f;
    if ( min1 / min2 == max1 / max2)
    cout << " True ";
    else
    cout << " False " ;
 
 
    
    return 0;
}
Все же где-то у меня ошибка.Должно выдавать тру,а выдает фолс...
0
4949 / 2289 / 287
Регистрация: 01.03.2013
Сообщений: 5,989
Записей в блоге: 32
03.11.2014, 00:26
Выведите на экран значения min1 / min2 и max1 / max2, посмотрите на них глазами. И да, вы только 2 пары сторон решили сравнивать, вам этого достаточно?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.11.2014, 00:26
Помогаю со студенческими работами здесь

По заданным катетам двух прямоугольных треугольников проверить их подобие
написать программу которая по заданным катетам двух прямоугольных треугольников проверяет их подобие.в случае подобие или не подобие...

По заданным сторонам двух треугольников проверить их на равновеликость (равенство площадей)
Написать программу, которая по заданным сторонам двух треугольников проверяет их на равновеликость (равенство площадей). Заранее спасибо

Определить, можно ли по заданным точкам построить прямоугольник
Похожая тема была, но там ничего не ответили. Проблема еще в том, что если глупый пользователь вместе цифр вводит буквы и/или...

По заданным числам определить, дружественны ли они
Назовем два числа дружными, если они состоят из одинаковых множеств цифр (вне зависимости от их количества) . По заданным числам...

Определить, какой из треугольников, построенных по заданным вершинам, имеет наибольшую площадь
Сегодня в институте дали задание по дисциплине &quot;Информатика и программирование&quot; но к нашему же сожалению мы не прошли ту тему на...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru