Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/15: Рейтинг темы: голосов - 15, средняя оценка - 4.80
8 / 8 / 9
Регистрация: 23.09.2015
Сообщений: 283
1

С помощью заданных функций проверить сколько можно построить различных треугольников

27.09.2015, 10:42. Показов 2972. Ответов 10
Метки нет (Все метки)

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include <math.h>
using namespace std;
float otrezok(float x1, float y1, float x2, float y2)
{
        float result;
        result = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
        return result;
}
bool IsTriangle(double a, double b, double c)
{
        return (a < b + c) && (b < a + c) && (c < a + b);
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.09.2015, 10:42
Ответы с готовыми решениями:

Сколько треугольников можно составить из заданных таблицей чисел?
Задана таблица из N чисел. Сколько треугольников можно составить из тех чисел? Найдите треугольник...

Сколько треугольников с вершинами в данных точках можно построить.
В одномерных массивах Х и Y одинакового размера n хранятся координаты n точек на плоскости....

Даны длины отрезков. Подсчитать, сколько можно построить треугольников из этих отрезков, и напечатать площади этих треугольников
Даны длины отрезков a,b,c,d. Подсчитать, сколько можно построить треугольников из этих отрезков, и...

Определить, сколько равносторонних треугольников можно построить из элементов массива
Элементы массива X(n) представляют собой длины сторон треугольников a,b,c. Определить, сколько...

10
Эксперт PHP
3035 / 2544 / 1194
Регистрация: 14.05.2014
Сообщений: 7,126
Записей в блоге: 1
27.09.2015, 11:18 2
Bob103, в чем сложность?
0
8 / 8 / 9
Регистрация: 23.09.2015
Сообщений: 283
27.09.2015, 11:20  [ТС] 3
сложность в том,что не знаю,как использовать эти две функции в решении задачи
0
Эксперт PHP
3035 / 2544 / 1194
Регистрация: 14.05.2014
Сообщений: 7,126
Записей в блоге: 1
27.09.2015, 11:21 4
Bob103, а использовать нужно конкретно эти две функции? Спрашиваю, потому что вторая функция может некорректно отработать, если все 3 проверяемые точки находятся на одной линии.
0
8 / 8 / 9
Регистрация: 23.09.2015
Сообщений: 283
27.09.2015, 11:30  [ТС] 5
вторая функция отвечает,за существование треугольника,т.е вроде напишет или истина или ложь
0
Эксперт PHP
3035 / 2544 / 1194
Регистрация: 14.05.2014
Сообщений: 7,126
Записей в блоге: 1
27.09.2015, 11:36 6
Цитата Сообщение от Bob103 Посмотреть сообщение
вторая функция отвечает,за существование треугольника,т.е вроде напишет или истина или ложь
Я знаю, что она делает. Ответьте на вопрос, можно эту функцию чуть изменить или нет? Как я написал выше, она может некорректно отработать если точки лежат на одной прямой.
0
8 / 8 / 9
Регистрация: 23.09.2015
Сообщений: 283
27.09.2015, 11:36  [ТС] 7
А,ну можно,главное,чтобы задача была решена корректно
0
Эксперт PHP
3035 / 2544 / 1194
Регистрация: 14.05.2014
Сообщений: 7,126
Записей в блоге: 1
27.09.2015, 11:44 8
Лучший ответ Сообщение было отмечено Bob103 как решение

Решение

Bob103, в общем так, я чуть изменил функцию, и всё работает корректно. Если вернете прежний вариант функции, то результат будет неверным.
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
41
42
43
44
#include <iostream>
#include <cmath>
 
using namespace std;
 
double otrezok(double x1, double y1, double x2, double y2)
{
    double result;
    result = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
    return result;
}
 
bool IsTriangle(double a, double b, double c)
{
    double eps = 1e-3; // точность вычислений до одной тысячной
    return (b + c - a > eps) && (a + c - b > eps) && (a + b - c > eps);
}
 
int main()
{
    const int n = 4;
    double x[n], y[n], a, b, c;
    int count = 0;
    cout << "Input coords of points:" << endl;
    for (int i = 0; i < n; ++i)
    {
        cout << "Point " << i + 1 << endl;
        cout << "\tx" << i + 1 << ": ";
        cin >> x[i];
        cout << "\ty" << i + 1 << ": ";
        cin >> y[i];
    }
    for (int i = 0; i < n - 2; ++i)
        for (int j = i + 1; j < n - 1; ++j)
            for (int k = j + 1; k < n; ++k)
            {
                a = otrezok(x[i], y[i], x[j], y[j]);
                b = otrezok(x[j], y[j], x[k], y[k]);
                c = otrezok(x[i], y[i], x[k], y[k]);
                if (IsTriangle(a, b, c)) 
                    ++count;
            }
    cout << "Number of triangles: " << count << endl;
}
1
8 / 8 / 9
Регистрация: 23.09.2015
Сообщений: 283
28.09.2015, 10:29  [ТС] 9
C++
1
2
cout <<"Number of triangles: " << count << endl;
    }
в этой строчке cout:не содержит класс хранения или спецификатор типа

Добавлено через 22 часа 28 минут
У вас там ошибки вот правильный:
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
41
42
43
44
45
#include <iostream>
#include <cmath>
 
    using namespace std;
 
    double otrezok(double x1, double y1, double x2, double y2)
    {
        double result;
        result = sqrt(pow(x1 - x2, 2) + pow(y1 - y2, 2));
        return result;
    }
 
    bool IsTriangle(double a, double b, double c)
    {
        double eps = 1e-3; // точность вычислений до одной тысячной
        return (b + c - a > eps) && (a + c - b > eps) && (a + b - c > eps);
    }
 
    int main()
    {
        const int n = 4;
        double x[n], y[n], a, b, c;
        int count = 0;
        cout << "Input coords of points:" << endl;
        for (int i = 0; i < n; ++i)
        {
            cout << "Point " << i + 1 << endl;
            cout << "\tx" << i + 1 << ": ";
            cin >> x[i];
            cout << "\ty" << i + 1 << ": ";
            cin >> y[i];
        }
        for (int i = 0; i < n - 2; ++i)
            for (int j = i + 1; j < n - 1; ++j)
                for (int k = j + 1; k < n; ++k)
                {
                    a = otrezok(x[i], y[i], x[j], y[j]);
                    b = otrezok(x[j], y[j], x[k], y[k]);
                    c = otrezok(x[i], y[i], x[k], y[k]);
                    if (IsTriangle(a, b, c))
                        ++count;
                }
        cout << "Number of triangles: " << count << endl;
        system("pause");
    }
0
0 / 0 / 0
Регистрация: 22.11.2016
Сообщений: 1
29.01.2017, 15:35 10
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace ConsoleApplication6
{
    class Program
    {
        static double f(double x1, double y1, double x2, double y2)
        {
            return Math.Abs(Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2)));
        }
        static void t(double a,double b,double c)
        {
            if (a + b > c || a + c > b || c + b > a)
            {
                Console.WriteLine("mozhno postroit treugolnik");
            }
            else Console.WriteLine("nelzya!!1");
        }
        static void Main(string[] args)
        {
            Console.Write("x1=");
            double x1 = double.Parse(Console.ReadLine());
            Console.Write("y1=");
            double y1 = double.Parse(Console.ReadLine());
            Console.Write("x2=");
            double x2 = double.Parse(Console.ReadLine());
            Console.Write("y2=");
            double y2 = double.Parse(Console.ReadLine());
            Console.Write("x3=");   
            double x3 = double.Parse(Console.ReadLine());
            Console.Write("y3=");
            double y3 = double.Parse(Console.ReadLine());
            Console.Write("x4=");
            double x4 = double.Parse(Console.ReadLine());
            Console.Write("y4=");
            double y4 = double.Parse(Console.ReadLine());
            double count = 0;
            
 
            double a1 = f(x1, y1, x2, y2);
            double a2 = f(x1, y1, x3, y3);
            double a3 = f(x2, y2, x3, y3);
            double a4 = f(x1, y1, x4, y4);
            double a5 = f(x2, y2, x4, y4);
            double a6 = f(x3, y3, x4, y4);
            if ((x2 - x1) * (y3 - y1) - (x3 - x1) * (y2 - y1) != 0)
            {
                t(a1, a2, a3);
                count++;
            }
            if ((x2 - x1) * (y4 - y1) - (y2 - y1) * (x4 - x1) != 0)
            {
                t(a1, a2, a4);
                count++;
            }
            if ((x3 - x1) * (y4 - y1) - (y3 - y1) * (x4 - x1) != 0)
            {
                t(a1, a3, a4);
                count++;
            }
            if ((x3 - x2) * (y4 - y2) - (y3 - y2) * (x4 - x2) != 0)
            {
                t(a2, a3, a4);
                count++;
            }
            Console.WriteLine("count=\t" + count);
            Console.ReadKey();
        }
    }
}
0
Эксперт PHP
3035 / 2544 / 1194
Регистрация: 14.05.2014
Сообщений: 7,126
Записей в блоге: 1
29.01.2017, 21:33 11
murtazp, к чему в C++ C#?
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.01.2017, 21:33

Проверить, можно ли из заданных отрезков построить прямоугольный треугольник
Даны длины трех отрезков. Проверить, можно ли из заданных отрезков построит прямоугольный...

Сколько различных устойчивых башенок высоты можно построить
Ограничение по времени: 1 секунда Ограничение по памяти: 64 Мб Антон играет в игру &quot;Не упадёт!&quot;....

Сколько различных четырехзначных чисел, в записи которых цифры могут повторяться, можно записать с помощью цифр
Пожалуйста, помогите решить задачи... 1. Решить задачу, используя правила комбинаторики: Сколько...

Сколько можно построить различных параллелепипедов, длины ребер которых выражаются натуральными числами
Сколько можно построить различных параллелепипедов, длины ребер которых выражаются натуральными...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru