Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

помогите плиз очень срочно

Никита Мясников Знаток (446), закрыт 5 лет назад
Помогите с программой, пожалуйста!

Даны натуральное число n, действительные числа x1, y1, x2, y2,...xn, yn.
Найти площадь n-угольника произвольной конфигурации, вершины которого при некотором последовательном обходе имеют координаты (x1, y1), (x2, y2),...(xn, yn).
Реализовать проверку корректности исходных данных в подпрограмме.
Дополнен 5 лет назад
#include
#include
int main ()
{
float x, y = [20];
int n, i;
printf ("\n VVedite kol-vo uglov mnogo-ka \n");
scanf ("%d", &n);
for (i=1; i<=n; i++)
{
printf ("\n Vvedite koordinaty N", i);
printf ("x[i]=");
scanf (x[i]);
printf ("y[i]=");
scanf (y[i]);
}
x[n+1]=x[1];
y[n+1]=y1;
}
min=y[1];
for (i=2; i<=n; i++)
if (min>y[i])
min=y[i];
for (i=1; i<=n+1; i++)

(Проверка)

for(i=1;i 0)
{
printf("ERROR: mnogougolnik nevypuklyj\n");
return -1;
}
}
Лучший ответ
Остальные ответы
Агата Плекус Ученик (5) 5 лет назад
Вас просят помочь, а не оскорблять.
Михаил Бакунин Мыслитель (5144) 5 лет назад
396
Роман ProtocolМыслитель (8562) 5 лет назад
Почему именно это число?
Михаил Бакунин Мыслитель (5144) Просто ЛЕНЬ. Мысли о другом. Хотел сказать"Думай Сам"
супер миксер Профи (693) 5 лет назад
Продаю велик, трехкалёсник, в сарайке звоните маме
Лимон МедленонГуру (4365) 5 лет назад
с мотором? а стекла тонированные?
супер миксер Профи (693) колёса только накачать
Соколов Максим Мастер (1754) 5 лет назад
Гуглите "Нахождение площади простого многоугольника" и "Пересечение двух отрезков". Практикуйтесь в написании программ (много некорректных конструкций в фрагменте кода, который вы привели), для чего могу посоветовать сайт acmp.ru.

Программу я написал, можете ориентироваться на этот код.

На оптимальность решения не претендую, сделал решение в лоб, некоторые места развёрнуты для простоты отладки.
На самом деле задача непростая, учитывая специфику работы с вещественными числами, а так же необходимостью знать геометрические алгоритмы.
На pastebin разместил с тестами.
Если что, пишите.

Ссылки на код (не знаю, где удобнее):
pastebin.com/JptQSpLY
ideone.com/Vm5KRd

p.s. system - это нужно только для платформы windows.
И в заголовке вопроса лучше кратко указать что нужно, на каком языке программирования и по какой теме - так вероятность того, что на вопрос ответят как вы хотите выше и, скорее всего, будет более «срочно».
Соколов МаксимМастер (1754) 5 лет назад
#include < stdio.h >
#include < stdlib.h >
#include < math.h >

// Укажите здесь максимально возможное число вершин n-угольника
#define MAX_N (1000)
// Укажите здесь точность сравнения для вещественных чисел
#define EPS (10e-7)

double x[MAX_N];
double y[MAX_N];

typedef struct
{
double x1, y1;
double x2, y2;
} line_t;

//
Miku HatsuneМудрец (11188) 5 лет назад
Если это не станет лучшим ответом - уйду с сервиса, потому что иначе на нем находиться смысла нет.
Соколов Максим Мастер (1754) С глубочайшей солидарностью...
Я Здесь и Сейчас Высший разум (136637) 5 лет назад
Eric GhosteУченик (142) 5 лет назад
Прекрасный ответ, что не имеет смысла. Это всё же вопросы, на которые нужно отвечать, а не отчитывать человека который его задал...
Я Здесь и Сейчас Высший разум (136637) дав правильный ответ на вопрос по домашнему зданию вы провоцируете задающего идти по легкому пути списывания, вместо того, чтобы развивать свой мозг, если вы пороетесь в моих ответах, то увидите, что я отвечаю по существу, когда человек реально не может разобраться в задаче, тогда я объясняю КАК решать, но не даю готовое решение
Павел Цупик Ученик (136) 5 лет назад
Python - я рекомендую для математических вычислений апробировать его консоль.... у тебя же, если не ошибаюсь, код на языке С?
фёдоровичПрофи (978) 5 лет назад
Разкодируйте лучше ваш питон обратно, это прошлый век. И давайте лучше переходить на консоль node.js.. Привязка tensorflow к ноде есть!!! https://js.tensorflow.org/faq/
фёдорович Профи (978) 5 лет назад
Если у вас многоугольник выпуклый - то очень легко.
Найдите среднее арифметическое всех координат - некий центр - точку M(mx,my). Она будет лежать внутри.

переберите все n координат:

в теле цикла рассмотрите треугольник ABC образованный тройкой точек
A(mx,my), B(x[i % n],y[i % n]), C(x[(i+1)%n],y[(i+1)%n])

гуглте формулу герона: https://ru.wikipedia.org/wiki/Формула_Герона
в теле цикла находите длины сторон AB, BC, AC и полупериметр, и по формуле герона находите площадь, которую суммируете в переменную-аккумулятор площади.

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