Программа поиска кратчайшего пути в лабиринте

Автор работы: Пользователь скрыл имя, 12 Января 2013 в 19:31, курсовая работа

Краткое описание

Полное название разработки ”Поиск кратчайшего пути”. Данная разработка предназначена для использования в учебных заведениях. Она выполняет нахождение кратчайшего пути между входом в лабиринт и его выходом. Также возможно использование для самопроверки решения, принятого человеком.

Содержание

1 Техническое задание ……………………………………………………….8
1.1 Введение ……………………………………………………………..8
1.2 Основания для разработки ………………………………………….8
1.3 Функциональное и эксплуатационное назначение изделия ……...8
1.4 Методические ограничения ………………………………………...9
1.4.1 Стандарты …………………………………………………...9
1.4.2 Программная совместимость ……………………………... 9
1.4.3 Требования к составу и параметрам технических
средств …………………………………………………………….10
1.4.4 Входные данные ……………………………………………10
1.4.5 Выходные данные …………………………………………..10
1.4.6 Безопасность и секретность ………………………………..10
1.4.7 Мобильность ………………………………………………..10
1.5 Стадии и этапы разработки ………………………………………..11
1.6 Технико-экономические показатели разработки ………………...11
2 Пояснительная записка ………………………………………………………12
2.1 Функциональные и эксплуатационные характеристики ………...12
2.2 Удобство эксплуатации …………………………………………….12
2.3 Описание программы ……………………………………………….12
2.3.1 Функциональное описание ………………………………….13
2.3.2 Форма программы в проекте ……………………………14-15
2.3.3 Описание среды программирования для реализации
практических частей курсовой работы …………………….16
2.3.4 Интерфейс программного продукта ……………………17-20
Приложение: текст программы с комментариями, блок-схемы основных алгоритмов, список литературы

Вложенные файлы: 1 файл

курсач.docx

— 305.03 Кб (Скачать файл)

{

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

        MakeNullPole();

        CreatePole(Image1);

        ShowPole(Image1);

        Form1->Top = -900;

        oo->Resume();

 

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Image1MouseDown(TObject *Sender,

      TMouseButton Button, TShiftState Shift, int X, int Y)

{

        int x;

        int y;

        if(F_2){

                x = (X/40+1)*40-40;

                y = (Y/40+1)*40-40;

 

                if(!CreateLine(x,y,Image1)){

                        ShowMessage("Error");

                }

        }

 

        if(F_3){

                x = (X/40+1)*40-40;

                y = (Y/40+1)*40-40;

                int i;

                int j;

                i = x/40;

                j = y/40;

                if(Pole[i][j].value==1){

                        Image1->Canvas->Brush->Color = clBlack;

                        Image1->Canvas->Rectangle((i+1)*40-40,(j+1)*40-40,(i+1)*40,(j+1)*40);

                        Start = Pole[i][j].v;

                        F_3 = false;

                        createStrelka(Image1);

                }

        }

 

        if(F_4){

                x = (X/40+1)*40-40;

                y = (Y/40+1)*40-40;

                int i;

                int j;

                i = x/40;

                j = y/40;

                if(Pole[i][j].value==1){

                        Image1->Canvas->Brush->Color = clBlack;

                        Image1->Canvas->Rectangle((i+1)*40-40,(j+1)*40-40,(i+1)*40,(j+1)*40);

                        End = Pole[i][j].v;

                        F_4 = false;

                        createStrelka(Image1);

                }

        }

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)

{

        F_2 = !F_2;

        F_1 = false;

        for(int i=0; i<razmPolya; i++){

                for(int j=0; j<razmPolya; j++){

                        if(Pole[i][j].value == 5){

                                Pole[i][j].value = 0;

                        }

                }

        }

        Button2->Enabled = false;

        Image1->Canvas->Pen->Color = clBlack;

        ShowPole(Image1);

}

//---------------------------------------------------------------------------

 

//---------------------------------------------------------------------------

void __fastcall TForm1::Button4Click(TObject *Sender)

{

        Deicstr(Start-1,End-1,Image1);

        //ShowPole(Image1);

        createStrelka(Image1);

       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button5Click(TObject *Sender)

{

        if(Start <0){

                F_3 = !F_3;

                Button5->Enabled = false;

        }else{

 

        }

        F_2 = F_1 =false;

       

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)

{

        MakeNullPole();

        for(int i=0; i<100; i++){

                Deic[i].sum = 9999;

                Deic[i].value = 0;

                Deic[i].visible = true;

                Deic[i].prev = -1;

        }

        for(int i=0; i<100; i++){

                for(int j=0; j<100; j++){

                        mas[i][j] = 0;

                }

        }

        N_1 = -1;

        vN = 0;

        F_1 = F_2 = F_3 = F_4 =false;

        Start = End = -1;

        Button7->Enabled = true;

        Button5->Enabled = true;

        Button2->Enabled = true;

        Image1->Canvas->Pen->Color = clBlack;

        Image1->Canvas->Pen->Width = 1;

        ShowPole(Image1);

}

//---------------------------------------------------------------------------

 

void __fastcall TForm1::Button7Click(TObject *Sender)

{

        if(End <0){

                F_4 = !F_4;

                Button7->Enabled = false;

        }else{

 

        }

        F_1 = F_2 = F_3 = 0;

       

}

//-------------------------------------------------------------------------

void __fastcall TForm1::N1Click(TObject *Sender)

{

        ShellExecute(NULL,"open","spravka.txt",NULL,NULL,SW_SHOWNORMAL);       

}

//---------------------------------------------------------------------------

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Блок-схема  алгоритма Дейкстры

 

 

 

  Список литературы

  1. А. Я. Архангельский «С++ Builder 6»
  2. М.И. Динман «С++.Освой на примерах»
  3. Г. Шилдт «Самоучитель С++»
  4. Б. Страуструп «Язык программирования C++» (Спец. издание)
  5. У. Топп, У. Форд  «Структуры данных в С++»
  6. Т. Павловская «C/C++. Программирование на языке высокого уровня»
  7. В. Липский «Комбинаторика для программистов»
  8. Г. Иванова «Технология программирования»

 


Информация о работе Программа поиска кратчайшего пути в лабиринте