Входная и выходная информация, Протокол контрольного примера - Исследование и программная реализация алгоритмов теории графов
На вход программе подается строка, каждый символ которой ходе работы программы станет элементом алфавита. Положение символа в строке определяет его положение в алфавите. Повторение символа в алфавите не допускаются. программирование delphi двоичный
Также задается целое число (hв тексте задания) - длина слова в словаре. Ограничение на длину слова - 99 символов.
Далее на вход подаются непосредственно слова. При наборе слова необходимо использовать только те символы, которые содержатся в заданном алфавите.
Выходная информация программы представляет собой список добавленных пользователем слов, упорядоченных по правилам составления стандартных словарей.
На рисунке 1 представлен внешний вид программы.
Рисунок 1 - Снимок экрана программы
2. 2 Текстпрограммы
Unit Unit1;
Interface
Uses
Winapi. Windows, Winapi. Messages, System. SysUtils, System. Variants,
System. Classes, Vcl. Graphics, Vcl. Controls, Vcl. Forms, Vcl. Dialogs,
Vcl. StdCtrls, Vcl. ComCtrls;
Type
TForm1 = class(TForm)
ListBox1: TListBox;
Edit1: TEdit;
Button1: TButton;
GroupBox1: TGroupBox;
GroupBox2: TGroupBox;
Memo1: TMemo;
Button2: TButton;
Label1: TLabel;
Label3: TLabel;
Edit2: TEdit;
Label2: TLabel;
Procedure Button1Click(Sender: TObject);
Procedure Button2Click(Sender: TObject);
Private
Type
NumArr = array [1..64] of Integer;
TreePointer = ^tree;
Tree = record
Word: NumArr;
Left, right: TreePointer;
End;
FunctionSTree(root, r: TreePointer; Word: NumArr): TreePointer;
ProcedureInOrder(root: TreePointer);
FunctionPosInABC(C: Char; ABC: string): Integer;
Function Str2Num(Str: string; ABC: string): NumArr;
Function Num2Str(Arr: NumArr; ABC: string): string;
FunctionIsSmaller(Arr1, Arr2: NumArr): Boolean;
FunctionIsNotNil(Arr: NumArr): Boolean;
ProcedureGrowTree(root: TreePointer; FirstWord: NumArr);
FunctionReSymb(Str: string): Boolean;
Public
{ Public declarations }
End;
Var
Form1: TForm1;
Alphabet: string;
H: Integer;
Implementation
{$R *.dfm}
{Возвращает True, если в строке есть повторяющиеся символы}
Function TForm1.ReSymb(Str: string): Boolean;
Var
I, J: Integer;
Begin
Result := False;
For I := 1 to Length(Str)-1 do
For J := I+1 to Length(Str) do
IfStr[I] = Str[J] then
Begin
Result := True;
Exit;
End;
End;
Procedure TForm1.Button2Click(Sender: TObject);
Var
I: Integer;
Begin
If Button2.Tag = 0 then
Begin
Button2.Caption := 'Сохранить';
Memo1.Enabled := True;
Edit2.Enabled := True;
Edit1.Enabled := False;
ListBox1.Enabled := False;
Button1.Enabled := False;
LIstBox1.Clear;
Button2.Tag := 1;
End
Else
Begin
Alphabet := '';
For i := 1 to Length(Memo1.Lines. Text) do
If Memo1.Lines. Text[i] <> ' ' then
Alphabet := Alphabet + Memo1.Lines. Text[i];
If Alphabet = '' then
MessageBox(0, 'Алфавитпуст', 'Ошибка', 0)
Else
IfReSymb(Alphabet) then
MessageBox(0, 'Алфавитсодержитповторяющиесясимволы', 'Ошибка', 0)
Else
IfStrToInt(Edit2.Text) > 0 then
Begin
Button2.Caption := 'Редактировать';
Memo1.Enabled := False;
Edit2.Enabled := False;
Button2.Tag := 0;
Edit1.Enabled := True;
ListBox1.Enabled := True;
Button1.Enabled := True;
H := StrToInt(Edit2.Text);
Edit1.MaxLength := h;
End
Else
MessageBox(0, 'Длина слова не может быть равной 0', 'Ошибка', 0);
End;
End;
{Трансформация строки в массив позиций алфавита}
Function TForm1.Str2Num(Str: string; ABC: string): NumArr;
Var
I: Integer;
Begin
For I := 1 to h do
Result[I] := PosInABC(Str[i], ABC);
End;
{Трансформация массива позиций алфавита в строку}
Function TForm1.Num2Str(Arr: NumArr; ABC: string): string;
Var
I: Integer;
Begin
Result := '';
For I := 1 to h do
Result := Result + ABC[Arr[I]];
End;
{Возвращает True, если в Arr нет нулей}
Function TForm1.IsNotNil(Arr: NumArr): Boolean;
Var
I: Integer;
Begin
I := 1;
While (I < h) and (Arr[i] <> 0) do
Inc(I);
IfArr[i] = 0 then
Result := False
Else
Result := True;
End;
{Возвращает True, если Arr1 < Arr2}
Function TForm1.IsSmaller(Arr1, Arr2: NumArr): Boolean;
Var
I: Integer;
Begin
I := 1;
While (i < h) and (Arr1[I] = Arr2[I]) do
Inc(I);
If Arr1[I] > Arr2[I] then
Result := False
Else
Result := True;
End;
{Возврат позиции символа в алфавите. 0 еслиотсутствует}
Function TForm1.PosInABC(C: Char; ABC: string): Integer;
Var
I: Integer;
Begin
Result := 0;
I := 1;
While (i < Length(ABC)) and (C <> ABC[i]) do
Inc(i);
If C = ABC[i] then
Result :=i;
End;
{Восстановление списка из дерева}
Procedure TForm1.InOrder(root: TreePointer);
Begin
If root <> nil then
Begin
InOrder(root^.left);
ListBox1.Items. Add(Num2Str(root^.Word, Alphabet));
InOrder(root^.right);
End;
End;
{Добавлениеэлемента в дерево}
Function TForm1.STree(root, r: TreePointer; Word: NumArr): TreePointer;
Begin
If r = nil then
Begin
New(r);
R^.left := nil;
R^.right := nil;
R^.Word := Word;
IfIsSmaller(Word, root^.Word) then
Root^.left := r
Else
Root^.right := r;
STree := r;
End
Else
Begin
IfIsSmaller(Word, r^.Word) then
STree :=STree(r, r^.left, Word)
Else
STree :=STree(r, r^.right, Word);
End;
End;
{Выращиваниедерева}
Procedure TForm1.GrowTree(root: TreePointer; FirstWord: NumArr);
Var
Dummy: TreePointer;
I: Integer;
Word: NumArr;
Begin
Root^.left := nil;
Root^.right := nil;
Root^.Word := FirstWord;
For i := 0 to ListBox1.Items. Count-1 do
Begin
Word := Str2Num(ListBox1.Items. Strings[i], Alphabet);
Dummy := STree(root, root, Word);
End;
End;
Procedure TForm1.Button1Click(Sender: TObject);
Var
I: Integer;
FirstW: NumArr;
Rt: TreePointer;
Begin
If Length(Edit1.Text) = h then
Begin
FirstW := Str2Num(Edit1.Text, Alphabet);
IfIsNotNil(FirstW) then
Begin
New(rt);
GrowTree(rt, FirstW);
{Составление списка по дереву}
ListBox1.Clear;
InOrder(rt);
Edit1.Text := '';
End
Else
MessageBox(0, 'Некоторые символы не совпадают с алфавитом', 'Ошибка', 0);
End
Else
MessageBox(0, PChar('Длина слова должна быть равна '+Edit2.Text),
'Ошибка', 0);
End;
End.
Протокол контрольного примера
Алфавит: "abcdefghijklmnopqrstuvwxyz";
Длина слов в словаре: 4;
В таблице 1 представлен процесс добавления слов.
Таблица 1 - Добавление слов в словарь
Добавляемое слово |
Boom |
Head |
Here |
Boot |
Anna |
Body |
Состояние словаря |
Boom |
Boom Head |
Boom Head Here |
Boom Boot Head Here |
Anna Boom Boot Head Here |
Anna Body Boom Boot Head Here |
На рисунке 2 представлен снимок экрана при прохождении контрольного примера.
Рисунок 2 - Контрольный пример
Похожие статьи
-
Формулировка задания: Составьте программу подсчета числа тех гласных букв в слове X, что не используются в написании слова Z. Описание входных/выходных и...
-
Если x - это произвольная вершина в двоичном дереве поиска, а вершина y находится в левом поддереве вершины x, то y. key<= x. key. Если x - это...
-
Цель данной работы - реализовать добавление слова в словарь на основе заданного алфавита на языке программирования высокого уровня. Основной задачей...
-
Анализ предметной области Автоматизированный учет занесенных данных анкет производиться на основе документа (анкета), составленной...
-
Алгоритмом работы программы является пошаговое описание каждой функции программы. При запуске информационной базы откроется окно авторизации, которое...
-
Наш интернет-магазин реализуем с использованием языка гипертекстовой разметки html, языка программирования php и СУБД MySQL. Главная часть...
-
Первая программа - движение слева направо Просмотрите код Unit1.pas для нашего примера: Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants,...
-
На данный момент существует множество аналогов данного приложения, можно выделить такие как стандартный проводник Windows и Total Commander. Заказчику...
-
Описание входной и выходной информации "Учет продаж футбольной атрибутики и спортивных товаров". Входная информация задачи: 1. Условно постоянная...
-
Модуль функционирует на персональном компьютере под управлением операционной системы версии Microsoft Windows 7 и выше с поддержкой всех соглашений,...
-
Служащим библиотеки во время работы приходится обрабатывать разнообразную информацию. К основной информации относятся: 1. Введение книжного фонда,...
-
Алгоритм для обновления дан на рис.6. Для каждого предмета е в t отыскивается Hashi. Если е найдено хэше кластера, то увеличиваем на 1 его sup в Btreei....
-
Примеры операторов вызова процедур - Структурирование программы
T; {нет списка фактических параметров Summa(x, y,z); {x, y,z - фактические параметры; x: integer; у, z; real} a(z); {z - фактический параметр, z:d} При...
-
Шифрование данных симметричным алгоритмом
Лабораторная работа Шифрование данных симметричным алгоритмом Цель работы: получить навыки по использованию симметричных криптографических алгоритмов для...
-
Файл-модуль unit1.pas Unit Unit1; Interface Uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, XPMan,...
-
Формулировка задания: Составьте программу, выделяющую из множества целых чисел 1..30: A) множество чисел, делящихся без остатка или на 7 или на 4; B)...
-
Для разработки программного обеспечения использован язык Java. Разработка проводилась в среде Eclipse Ganymede 3.2. В качестве СУБД для тестирования...
-
Рис. 9 Пример B+ дерева, связывающего ключи 1-7 с данными d1-d7. Связи (выделены красным) позволяют быстро обходить дерево в порядке возрастания ключей....
-
Базовый интерфейс двоичного дерева поиска состоит из трех операций: - FIND(K) -- поиск узла, в котором хранится пара (key, value) с key = K. - INSERT(K,...
-
При тестировании корректности работы алгоритма будем опираться на экспериментальные данные работы алгоритма с предварительно сгенерированными базами...
-
Инструментальное программное обеспечение -- это программное обеспечение, предназначенное для использования в ходе проектирования, разработки и...
-
Множество D с двумя заданными на нем операциями (плюс) и (умножение) называется диоидом, если выполнены следующие аксиомы: § Ассоциативность. §...
-
Поворот точки относительно центра на заданный угол: X = o. X + (p. X-o. X) * cos(angle) - (p. Y-o. Y) * sin(angle) Y = o. Y + (p. X-o. X) * sin(angle) +...
-
Тема: позиційні системи числення (ПСЧ), переведення чисел з десяткової системи числення до довільної ПСЧ та переведення з довільної ПСЧ до десяткової...
-
Назначение и условия применения программы Назначение программной системы - реализация задач допускового проектирования. Компонент обеспечивает...
-
Для того, чтобы использовать симметричные алгоритмы шифрования, необходимо безопасно обменяться ключами. Протокол Диффи - Хеллмана позволяет двум и более...
-
Кластеризация (или кластерный анализ) -- это задача разбиения множества объектов на группы, называемые кластерами. Внутри каждой группы должны оказаться...
-
Понятие Data Mining Средства Data Mining включают в себя очень широкий класс различных технологий и инструментов. Средства Data Mining на рынке...
-
В наше время все большее количество компаний, стремясь к повышению эффективности и прибыльности бизнеса пользуются цифровыми (автоматизированными)...
-
Формулировка задачи : Главной задачей является разработка базы данных "Отдел кадров", которая включает в себя таблицы: "Список", "Личные данные",...
-
Расчет затрат, связанных с организацией рабочих мест для исполнителей проекта, проводится на основе требований СНИПа (санитарные нормы и правила) и...
-
В работе возникает необходимость выбора предметной области, в которой будет тестироваться каскадный классификатор. Главными вопросами на данном этапе...
-
Стек технологий При выборе стека технологий основное внимание уделялось следующим факторам, в порядке убывания значимости: § Кроссплатформенность; §...
-
Отклонения и допуски трубной цилиндрической резьбы Трубная цилиндрическая резьба (ГОСТ 6357-73) имеет треугольный профиль с закругленными вершинами и...
-
Уровни программного обеспечения. - Основы теории информации
1. Базовый уровень - самый низкий уровень ПО представляет базовое ПО. Оно отвечает за взаимодействие с базовыми аппаратными средствами. Как правило,...
-
В данной работе была затронута актуальная, интенсивно развивающаяся область методов анализа данных. Был рассмотрен новый подход к кластеризации. В рамках...
-
Разработка алгоритмов работы системы Основной алгоритм работы системы Основной алгоритм работы АРМ Заместитель директора по учебной работе Алгоритм...
-
В данном дипломном проекте необходимо создать программу, которой смогут пользоваться менеджеры салона красоты. Для удобства пользования программой...
-
Так как разработанное ранее приложение LargeItem выводит в выходном файле "большие предметы", то используя специальный аналитический инструмент возможно...
-
Реализация визуализации анимации алгоритма - Визуализация графа цитирования
При работе алгоритма расположения вершин графа необходимо анимировать изменения графа в режиме реального времени. Для этого используется специальная...
Входная и выходная информация, Протокол контрольного примера - Исследование и программная реализация алгоритмов теории графов