Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
1

Четырехугольники и функция

17.11.2014, 14:53. Показов 1557. Ответов 20
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Пусть дано N произвольных четырехугольников, заданных координатами своих вершин. Найдите четырехугольник с максимальной площадью. Используйте функцию для вычисления площади четырехугольника.
Выполнение программы через функцию.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.11.2014, 14:53
Ответы с готовыми решениями:

Четырехугольники
Четырехугольник ABCD задан координатами своих вершин на плоскости: A(Xa,Ya),B(Xb,Yb),C(Xc,Yc) , ...

Четырехугольники
Четырехугольник ABCD задан координатами своих вершин на плоскости: A(Xa,Ya),B(Xb,Yb),C(Xc,Yc) ,...

Четырехугольники
Здравствуйте! Прошу помочь мне с решением задачи... Неправильно выводится ответ. По идеи...

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

20
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.11.2014, 14:59 2
C++
1
2
3
4
double RectangleSqare(double x1,double y1,double x2,double y2)
{
     return (x2-x1)*(x2-x1)*(y2-y1)*(y2-y1);
}
0
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
17.11.2014, 15:00  [ТС] 3
zss, извини, но я не понимаю, это не функция, и переменные называются по страшному
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.11.2014, 15:04 4
понтуног, что значит это не функция, и чем Вас напугали х1, х2, у1, у2? У меня впечатление складывается, что Вы вообще не понимаете ничего в С++.
0
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
17.11.2014, 15:09  [ТС] 5
Kerry_Jr, RectangleSqare - что это

Добавлено через 33 секунды
Я понимаю легкие задачи, циклы и т.д, но сложные конструкции мне не доступны

Добавлено через 3 минуты
zss, double x1,double y1,double x2,double y2 - это координаты одного четырехугольника, я так понял?
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.11.2014, 15:13 6
понтуног, ну тогда смотрите
double - тип значения, возвращаемого функцией
RectangleSquare - название функции (если перевести получается "площадь прямоугольника")
double x1, double x2, double y1, double y2 - параметры, которые функция принимает для вычислений
return - оператор, который осуществляет выход из функции и возвращает значение (если таковое указано). В данном случае этот оператор возвращает значение выражения (x2-x1)*(x2-x1)*(y2-y1)*(y2-y1). Вроде ничего сложного, если знаешь, как работают функции.
0
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
17.11.2014, 18:44  [ТС] 7
Kerry_Jr,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
using namespace std;
double S4(double x1,double y1,double x2,double y2,double s)
{
     return s=(x2-x1)*(x2-x1)*(y2-y1)*(y2-y1);
}
 
int main() {
    int n,i;
    double x1,y1,x2,y2,s;
    cin>>n;
    for (i=0;i<n;i++)
    cin>>x1>>y1>>x2>>y2;
    S4(x1,y1,x2,y2);
    cout<<s;
 
 
 
 
 
    return 0;
}
Вот что я сделал, но это не верно помоги
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.11.2014, 19:20 8
Почему Вам понятно, что надо писать double y=sin(x)
но непонятно, что надо писать s=S4(x1,y1,x2,y2)
??????????????????????????????????????????????
0
Эксперт PHP
3106 / 2591 / 1219
Регистрация: 14.05.2014
Сообщений: 7,236
Записей в блоге: 1
17.11.2014, 19:32 9
понтуног,
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
#include <iostream>
#include <cmath>
 
double RectangleSquare(double x1, double y1, double x2, double y2)
{
    return abs(x2 - x1) * abs(y2 - y1);
}
 
void InputRectangle(double& x1, double& y1, double& x2, double& y2, int i)
{
    std::cout << "Введите координаты точек " << i + 1 << " прямоугольника:" << std::endl;
    std::cout << "\tx1: "; (std::cin >> x1).get();
    std::cout << "\ty1: "; (std::cin >> y1).get();
    std::cout << "\tx2: "; (std::cin >> x2).get();
    std::cout << "\ty2: "; (std::cin >> y2).get();
}
 
int main()
{
    setlocale(LC_ALL, "");
    double x1, y1, x2, y2, max = 0, square;
    int n, k;
    std::cout << "Введите N: ";
    std::cin >> n;
    for (int i = 0; i < n; ++i)
    {
        InputRectangle(x1, y1, x2, y2, i);
        square = RectangleSquare(x1, y1, x2, y2);
        if (square > max) 
        {
            max = square;
            k = i;
        }
    }
    std::cout << "Прямоугольник №" << k + 1 << " имеет максимальную площадь: " << max << std::endl;
    
    return 0;
}
Добавлено через 55 секунд
Цитата Сообщение от zss Посмотреть сообщение
return (x2-x1)*(x2-x1)*(y2-y1)*(y2-y1);
тут площадь в квадрате получается)))
0
Модератор
Эксперт С++
13507 / 10757 / 6412
Регистрация: 18.12.2011
Сообщений: 28,712
17.11.2014, 19:42 10
Да, забыл.
сделайте либо
C++
1
return sqrt((x2-x1)*(x2-x1)*(y2-y1)*(y2-y1));
либо
C++
1
return fabs((x2-x1)*(y2-y1));
0
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
17.11.2014, 22:42  [ТС] 11
zss,
Цитата Сообщение от zss Посмотреть сообщение
sqrt((x2-x1)*(x2-x1)*(y2-y1)*(y2-y1));
Формула вычисления стороны, а потом это возводится в квадрат и становится площадью
0
343 / 343 / 331
Регистрация: 02.10.2014
Сообщений: 666
17.11.2014, 23:17 12
В условии не сказано что четырехугольник прямоугольный.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
struct D_Point{
    double x;
    double y;
};
 
//Если направление обхода против часовой стрелки, выдаст отрицательное значение
double s_n(D_Point a[], int n){
    //площадь n - угольника
    double sum = 0;
    for (int i = 0; i < n; ++i){
        double det = a[i % n].x * a[(i + 1) % n].y 
                      - a[(i + 1) % n].x * a[i % n].y;
        sum += det;
    }
    return sum / 2;
}
По одним и тем же точкам можно построить несколько четырехугольников, подробнее тут:
Разработать функцию для определения и расчёта площади пятиугольника. По координатным точкам. (х1,у1) и т.д
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
17.11.2014, 23:21 13
Цитата Сообщение от D_in_practice Посмотреть сообщение
В условии не сказано что четырехугольник прямоугольный.
Вот именно. В условии ясно сказано - произвольный четырехугольник. При чем здесь площадь прямоугольника, да еще и осеориентированного, которую тут все пытаются вычислить, мне в упор не ясно.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.11.2014, 23:28 14
D_in_practice, там и не сказано, что четырехугольник выпуклый. и еще я формулы не догоняю.(
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
17.11.2014, 23:31 15
Цитата Сообщение от SlavaSSU Посмотреть сообщение
там и не сказано, что четырехугольник выпуклый
Формула, использованная D_in_practice, работает для любого многоугольника, независимо от выпуклости.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.11.2014, 23:32 16
TheCalligrapher, поясни формулу
0
0 / 0 / 1
Регистрация: 24.12.2013
Сообщений: 118
17.11.2014, 23:37  [ТС] 17
TheCalligrapher, что я вообще не одупляю какую формулу юзать

Добавлено через 1 минуту
http://ideone.com/KRYDX8
Тут моя программа подкорректируйте ее как надо, только что-бы я понял какие переменные для чего, спасибо!
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
17.11.2014, 23:44 18
Цитата Сообщение от SlavaSSU Посмотреть сообщение
TheCalligrapher, поясни формулу
http://en.wikipedia.org/wiki/Shoelace_formula
https://ru.wikipedia.org/wiki/... 0%B8%D0%BA

Геометрический смысл формулы прост, но писать трактат с рисунками мне сейчас недосуг.

Каждый член суммы (деленный на 2) - это площадь треугольника OAB, где O - начало координат, а A и B - очередные две соседние точки границы многоугольника. Однако это "хитрая" площадь со знаком: она положительна для треугольников, "заметаемых" в одном направлении (против часовой стрелки), и отрицательна для треугольников, "заметаемых" в другом направлении (по часовой стрелке). Когда это все складывается в одну сумму, все замечательно сходится так, что остается именно площадь многоугольника.

На картинке это хорошо видно, но рисовать недосуг, а готовая не находится.
0
221 / 166 / 47
Регистрация: 17.07.2012
Сообщений: 587
17.11.2014, 23:45 19
TheCalligrapher, а вон оно че. не знал что там все так хорошо скорректируется, если векторки из начала координат проводить. до этого проводил всегда из 1 вершины.
0
Вездепух
Эксперт CЭксперт С++
11695 / 6374 / 1724
Регистрация: 18.10.2014
Сообщений: 16,068
17.11.2014, 23:48 20
Цитата Сообщение от SlavaSSU Посмотреть сообщение
не знал что там все так хорошо скорректируется, если векторки из начала координат проводить
Векторки можно откуда угодно проводить - оно все все равно всегда будет аккуратно "корректироваться".

Но понятно, что лучше проводить из вершины или из некоего "центра" многоугольника - это уменьшает значения координат вектора и тем самым помогает избежать переполнения при умножении.
0
17.11.2014, 23:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.11.2014, 23:48
Помогаю со студенческими работами здесь

Четырехугольники и точки
Ребят, помогите решить одну задачу. Я уже весь изменявшая. Более того, меня заставили писать на...

Четырехугольники и точки
Здравствуйте, мне задачку задали, я всю голову обломал, но не могу придумать решение. Идеи есть, но...

QBasic рисует выпуклые четырехугольники
Здесь я хочу предложить вам программу, которая рисует несколько (не более пяти) выпуклых...

Задача на теорему Вариньона, четырёхугольники
Помогите с задачей пожалуйста, долго сижу, но не могу допереть никак. Диагонали BD и AC...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru