| Стоит Windows 8 Pro, Visual Studio 2010 Express Edition . |
Опубликован: 17.08.2010 | Доступ: свободный | Студентов: 1001 / 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