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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.12.2010, 01:18   #1
kochet-kov
Пользователь
 
Регистрация: 17.12.2010
Сообщений: 19
Печаль Многоугольник без самопересечения С++

необходимо задать многоугольник без самопересечения , координатами его вершин и точку А вне этого многоугольника.

мне подсказали,что нужно использовать алгоритм Джарвисаhttp://ru.wikipedia.org/wiki/%D0%90%...B8%D1%81%D0%B0

но у меня не получается его реализовать
, смог найти только самую левую нижнюю точку
помогите пожалуйста с остальным алгоритмом
Код:
#include <stdafx.h>
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <stdlib.h>
#include <time.h>

//структура точка
struct Point {
  int x, y;
};





int main()
{
	
	Point *Points;
   Point *A;
	double *sDist, min;
	int N = 0, i, j, R1 = 0, R2 = 0, index = 0;
	bool flag = true;
	char ch;
	
	printf("Vvedite kol-vo tochek na ploskosti ");
	scanf("%d", &N);

	Points = new Point[N];
	sDist = new double[N];
      A=new Point[1];
	//Цикл пока не будет нажата y или n
	do {
		printf("Zadat elementi sluchaino?(y/n) ");
		scanf("%c", &ch);
		ch = getch(); printf("%c\n", ch);
	
	}while((ch != 'y')&&(ch != 'n'));

	//Если была нажата y
	if (ch == 'y'){
	srand((int)time(NULL));
	printf("Vvedite predel generacii dla tochek  ");
	scanf("%d %d", &R1, &R2); 

		for (i = 0; i < N; i++) {
          Points[i].x = rand() % (R2 - R1) + R1;
          Points[i].y = rand() % (R2 - R1) + R1;
          printf("Tochka %d: (%d, %d)\n", i+1, Points[i].x, Points[i].y );
        }
          A[1].x = rand() % (R2 - R1) + R1;
          A[1].y = rand() % (R2 - R1) + R1;
	printf("Tochka A: (%d, %d)\n", A[1].x, A[1].y );
	}
	else { //Если была нажата n
	printf("Zadaite koordinati tochkami\n ");

        for (i = 0; i < N; i++) {
			printf("Tochka %d ", i+1);
		  scanf("%d %d", &Points[i].x, &Points[i].y);
        }
	printf("Tochka A ");
		  scanf("%d %d", &A[1].x, &A[1].y);
	}


	//найдем самую левую из самых нижних
	 
    int base = 0;
    for (int i=1;i<N;i++)
    {
	        if (Points[i].y < Points[base].y)
	            base = i;
	        else 
	            if (Points[i].y == Points[base].y &&
	                Points[i].x <  Points[base].x)
	                base = i;
    }


printf("samaya levaya iz samix niznih Tochka: (%d, %d)\n",  Points[ base].x,  Points[ base].y );
   


	getch();

	return 0;
}
kochet-kov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамический многоугольник. alex_8 Общие вопросы C/C++ 1 01.12.2010 17:55
Динамический многоугольник(ООП). Конструкторы. alex_8 Помощь студентам 0 30.11.2010 21:53
Звёздчатый многоугольник Alex_FF Помощь студентам 0 30.12.2009 01:24
Си - Решение задачи про многоугольник и точку andreas Помощь студентам 1 27.05.2008 19:29