Стоит Windows 8 Pro, Visual Studio 2010 Express Edition . |
Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 1000 / 59 | Оценка: 4.11 / 3.89 | Длительность: 29:38:00
Тема: Программирование
Специальности: Программист, Архитектор программного обеспечения
Теги:
Самостоятельная работа 12:
Методы сортировки
Аннотация: Реализация в IDE C++Builder 6. Файл точки входа приложения Sort.cpp. Файл объявления интерфейса пользователя - USort.h. Файл реализации интерфейса пользователя - USort.cpp. Файл объявления методов сортировки - Metods.h. Файл реализации методов сортировки - Metods.cpp. Заголовочный файл UAbout.h. Файл реализации UAbout.cpp. Главное окно. Окно About.
Реализация в IDE C++Builder 6
Файлы к данной лабораторной работе, Вы можете скачать здесь.
Целью лабораторной работы является изучение и практическая реализация наиболее популярных методов сортировки
В задание на выполнение входит самостоятельное построение демонстрационного приложения для моделирования работы методов сортировки в IDE C++Builder 6.0.
Файл точки входа приложения Sort.cpp
Файл точки входа Sort.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop USEFORM("USort.cpp", MainForm); USEFORM("UAbout.cpp", AboutBox); //--------------------------------------------------------------------------- WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) { try { Application->Initialize(); Application->CreateForm(__classid(TMainForm), &MainForm); Application->CreateForm(__classid(TAboutBox), &AboutBox); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } return 0; } //---------------------------------------------------------------------------
Файл объявления интерфейса пользователя - USort.h
Файл объявления главной формы USort.h //--------------------------------------------------------------------------- #ifndef USortH #define USortH //--------------------------------------------------------------------------- #include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ExtCtrls.hpp> #include <Menus.hpp> //--------------------------------------------------------------------------- const MAX_COUNT = 10; //--------------------------------------------------------------------------- class TMainForm : public TForm { __published: // IDE-managed Components TMemo *Memo1; TButton *SortBtn; TRadioGroup *RadioGroup; TMemo *Memo2; TButton *CleanLeftBtn; TButton *CleanRightBtn; TLabel *TitleNonSortLbl; TLabel *TitleSortLbl; TButton *ExitBtn; TPopupMenu *PopupMenu; TMenuItem *About; void __fastcall Memo1KeyPress(TObject *Sender, char &Key); void __fastcall Memo1Change(TObject *Sender); void __fastcall ExitBtnClick(TObject *Sender); void __fastcall CleanLeftBtnClick(TObject *Sender); void __fastcall CleanRightBtnClick(TObject *Sender); void __fastcall SortBtnClick(TObject *Sender); void __fastcall AboutClick(TObject *Sender); private: // User declarations public: // User declarations __fastcall TMainForm(TComponent* Owner); }; //--------------------------------------------------------------------------- extern PACKAGE TMainForm *MainForm; //--------------------------------------------------------------------------- #endif
Файл реализации интерфейса пользователя - USort.cpp
Файл реализации интерфейса пользователя USort.cpp //--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "USort.h" #include "Metods.h" #include "UAbout.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TMainForm *MainForm; //--------------------------------------------------------------------------- __fastcall TMainForm::TMainForm(TComponent* Owner) : TForm(Owner) { for(int i=MAX_COUNT; i>=0; i--){ AnsiString symbol = IntToStr(i); Memo1->Lines->Add(""); Memo1->Lines->Strings[MAX_COUNT-i] = symbol; // Memo->Lines->Insert(i, symbol); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::Memo1KeyPress(TObject *Sender, char &Key) { Set<char, '0', '9'> Digit;// Фильтр для цифр Digit << '0' << '1' << '2' << '3' << '4' << '5' << '6' << '7' << '8' << '9'; if( !Digit.Contains( Key ) && Key != VK_BACK && Key != VK_RETURN ) { Key = 0; Beep(); } } //--------------------------------------------------------------------------- void __fastcall TMainForm::Memo1Change(TObject *Sender) { if(Memo1->Lines->Strings[Memo1->Lines->Count-1].IsEmpty()) Memo1->Lines->Delete(Memo1->Lines->Count-1); } //--------------------------------------------------------------------------- void __fastcall TMainForm::ExitBtnClick(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::CleanLeftBtnClick(TObject *Sender) { Memo1->Clear(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::CleanRightBtnClick(TObject *Sender) { Memo2->Clear(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::SortBtnClick(TObject *Sender) { enum{SIMPLE, BIN, SHELL, SELECT, BUBBLE, MEMORY, SHAKER, QUICK}; const n = Memo1->Lines->Count; if(n < 2){ ShowMessage("Нечего сортировать"); return; } int *a = new int[n]; for(int i = 0; i<n; i++) a[i] = StrToInt(Memo1->Lines->Strings[i]); int choice = RadioGroup->ItemIndex; switch(choice){ case SIMPLE: simplySort(n, a); break; case BIN: binSort(n, a); break; case SHELL: shellSort(n, a); break; case SELECT: selectSort(n, a); break; case BUBBLE: bubbleSort(n, a); break; case MEMORY: memorySort(n, a); break; case SHAKER: shakerSort(n, a); break; case QUICK: quickSort(n, a); break; default: ShowMessage("Неизвестный метод сортировки"); return; } Memo2->Clear(); for(int i = 0; i<n; i++) Memo2->Lines->Insert(i, IntToStr(a[i])); delete [] a; } //--------------------------------------------------------------------------- void __fastcall TMainForm::AboutClick(TObject *Sender) { AboutBox->ShowModal(); } //---------------------------------------------------------------------------
Файл объявления методов сортировки - Metods.h
Файл объявления методов сортировки Metods.h //--------------------------------------------------------------------------- #ifndef MetodsH #define MetodsH //--------------------------------------------------------------------------- void simplySort(int, int []); void binSort(int m, int b[]); void shellSort(int n, int a[]); void selectSort(int, int *); void bubbleSort(int n, int a[]); void memorySort(int n, int a[]); void shakerSort(int n, int a[]); void quickSort(int n, int a[]); #endif