Решение задачи о коммивояжере

Автор: Пользователь скрыл имя, 12 Апреля 2013 в 10:34, курсовая работа

Описание работы

Задача о коммивояжере состоит в том, чтобы объехать заданные города по одному разу в таком порядке, чтобы пройденное расстояние было минимальным.
Такая задача актуальна во многих областях, таких как автомобильные, судовые и железнодорожные перевозки, расчет авиационных линий, конвейерное производство.

Содержание

Введение3
Постановка задачи4
Метод решения5
Язык программирования7
Описание алгоритма8
Описание основных структур данных12
Описание интерфейса с пользователем14
Заключение16
Литература17
Текст программы18

Работа содержит 1 файл

Решение задачи о коммивояжере.doc

— 162.50 Кб (Скачать)

t_edit[i][j].SetReadOnly ();

}

else

{

t_edit[i][j].Create (WS_CHILD|WS_VISIBLE | WS_TABSTOP | WS_DLGFRAME,

CRect(j*w+x0,i*h+y0,(j+1)*w-1+x0,(i+1)*h-1+y0),this,100);//count++);

 

t_edit[i][j].SetFont (&myFont);

t_edit[i][j].SetLimitText(4);

}

}

}

 

CStdioFile f1;

f1.Open("table.ini",CFile::modeRead);

  for ( i=0; i < 29; i++)

{

CString s1;

f1.ReadString(s1);

int j=i+1;

int k=0;

while (j<29 && k < s1.GetLength())

{CString s2;

while (s1[k] == ' ') k++;

while (s1[k] != ' ')

{   s2 += s1[k];    k++;}

t_edit[i][j].SetWindowText(s2);

j++;

}

}

 

Proverka();

return TRUE;  // return TRUE unless you set the focus to a control

// EXCEPTION: OCX Property Pages should return FALSE

}

 

void CSetting::OnOK()

{

Proverka();

CStdioFile f1;

f1.Open("table.ini",CFile::modeCreate | CFile::modeWrite);

for (int i=0; i < 29; i++)

{

parent->tableAllCity[i][i]=0;

CString s1;

for (int j=i+1; j < 29; j++)

{

CString s2;

t_edit[i][j].GetWindowText(s2);

parent->tableAllCity[j][i]=parent->tableAllCity[i][j]=atoi(s2);

 

s1 += s2+" ";

} s1 += "\n";

f1.WriteString(s1);

}

MessageBox("Введённые  параметры проверены на ошибки  и сохранены.");

CDialog::OnCancel ();

}

 

void CSetting::Proverka()

{

  for (int i=0; i < 29; i++)

{

for (int j=i+1; j < 29; j++)

{

CString s1;

t_edit[i][j].GetWindowText(s1);

if (!s1.IsEmpty())

{

for (int k=0; k < s1.GetLength(); k++)

if (s1[k]<'0' || s1[k]>'9') {s1.Delete(k,1);k--;}

if (s1.IsEmpty()) s1='0';

 

}

else s1='0';

t_edit[i][j].SetWindowText(s1);

}

}

}


Информация о работе Решение задачи о коммивояжере