Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
21
Добавлен:
01.05.2014
Размер:
2.49 Кб
Скачать
// AlgDialog.cpp : implementation file
//

#include "stdafx.h"
#include "Diameter.h"
#include "AlgDialog.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CAlgDialog dialog


CAlgDialog::CAlgDialog(CWnd* pParent /*=NULL*/)
	: CDialog(CAlgDialog::IDD, pParent)
{
	//{{AFX_DATA_INIT(CAlgDialog)
	mEdit = _T("");
	//}}AFX_DATA_INIT
	mEdit ="           Алгоритм нахождения диаметра множества\r\n\r\n";
	mEdit+="1. Диаметр множества равен диаметру его выпуклой оболочки,\r\n";
	mEdit+="   поэтому сначала для множества находится выпуклая оболочка\r\n";
	mEdit+="   (мы используем метод Джарвиса).\r\n\r\n";
	mEdit+="2. Сначала находятся две крайние по оси абсцисс точки выпуклой\r\n";
	mEdit+="   оболочки. Если есть несколько левых точек, то среди них\r\n";
	mEdit+="   берется точка с максимальной ординатой. Если есть несколько\r\n";
	mEdit+="   правых точек, то среди них берется точка с минимальной\r\n";
	mEdit+="   ординатой. Эти точки выбираются в качестве текущих (P и Q).\r\n\r\n";
	mEdit+="3. Повторяется последовательность действий, приведенная ниже,\r\n";
	mEdit+="   пока точка Q не окажется самой левой, а точка P - самой\r\n";
	mEdit+="   правой.\r\n";
	mEdit+="    - в качестве \"претендента\" на роль диаметра рассматривается\r\n";
	mEdit+="      пара [P,Q]\r\n";
	mEdit+="    - рассматриваются углы наклона прямых:\r\n";
	mEdit+="      <P,next(P)> и <next(Q),Q>\r\n";
	mEdit+="        next(A) - следующая после A по часовой стрелке вершина\r\n";
	mEdit+="        выпуклой оболочки\r\n";
	mEdit+="    - если угол1<угла2, то P=next(P)\r\n";
	mEdit+="    - если угол1>угла2, то Q=next(Q)\r\n";
	mEdit+="    - если угол1=углу2, то:\r\n";
	mEdit+="      1) в качестве \"претендентов\" на роль диаметра рассматриваются\r\n";
	mEdit+="         пары: [next(P),Q] и [P,next(Q)]\r\n";
	mEdit+="      2) P=next(P)   и   Q=next(Q)\r\n\r\n";

}


void CAlgDialog::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAlgDialog)
	DDX_Text(pDX, IDC_EDIT1, mEdit);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CAlgDialog, CDialog)
	//{{AFX_MSG_MAP(CAlgDialog)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CAlgDialog message handlers
Соседние файлы в папке src