Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.12.2008, 16:55   #1
Abakan
Новичок
Джуниор
 
Регистрация: 28.12.2008
Сообщений: 1
По умолчанию Задача с периметром многоугольника

Задача состояла в том ,чтобы составить программу считающую периметр фигуры образованной вершинами находящимеся в интервале 1<N<10, при этом координаты вершин заложены в массивы Х и У .
Идея решения мне видется в том ,что отрезки сравниваются каждый с каждым на пересечение, находя точку пересечения, и проверяя её на принадлежность многоугольнику пут1м построения из неё лучей и нахожения углов между лучами, сумма которых должна дать либо 0 либо 360
Но у меня проблема возникла на боее раннем этапе,я н знаю как точно прописать подсчёт отрезков, у меня если точек больше двух то, считает отрезок только между первыми двумя
Прошу помочь в этом моменте
Код:
#include <stdio.h>
#include <math.h>
int main(void)
{ 
int x[9],y[9];
int k,N,R,t,detx,dety,*ptr,*ptt;
ptr=x;
ptt=y; 
float l[8];
printf("Vvedite kolichestvo vershin ot 1 do 10:\n",N);
scanf("%d",&N);
R=N-1; 
for(k=0;k<N;k++)
{ 
printf("x[%d]=",k);
scanf("%d",&x[k]);
printf("y[%d]=",k);
scanf("%d",&y[k]);
} 
printf("Vvedeniii vershiny takie -:\n");
for(k=0;k<N;k++)
{
printf("x[%d]=%d\n",k,x[k]);
printf("y[%d]=%d\n",k,y[k]);
}
for(k=0;k<N;k++)
{
detx=(*ptr+1)-(*ptr);
dety=(*ptt+1)-(*ptt);
}
printf("detx=%d\n",detx);
printf("dety=%d\n",dety);
for(t=0;t<R;t++)
{ 
l[t]=sqrt((detx*detx)+(dety*dety));
}
for(t=0;t<R;t++)
{
printf("l[%d]=%f\n",t,l[t]);
}
getchar();
getchar();
return 0;
}
Модератор: тег CODE

Последний раз редактировалось MaTBeu; 29.12.2008 в 20:34.
Abakan вне форума Ответить с цитированием
Старый 02.01.2009, 19:06   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Алгоритм:
Попеременно ищем расстояние между каждой из двух точек, пока не дойдем до конца. А потом находим расстояние между первой и последней точками. Суммируем. Вот и периметр.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Построчный алгоритм заполнения многоугольника с затравкой (Билдер С++) SKA_zo4nik Помощь студентам 8 28.03.2011 20:15
Необходимо определить периметр многоугольника, заданного координатами вершин Андрю)(@ Паскаль, Turbo Pascal, PascalABC.NET 6 23.12.2008 12:30
Рисование многоугольника (собственный класс) MaTBeu Общие вопросы C/C++ 1 08.12.2007 14:53