- •Оглавление
- •Введение
- •1 Теоретическая часть
- •Постановка задачи
- •Математическая модель объекта или процесса
- •Алгоритм решения задачи
- •Блок-схема алгоритма решения задачи
- •2 Практическая часть
- •2.1 Описание объектов, свойств, методов
- •2.2 Формы и основные модули текста программы в среде Delphi
- •2.3 Результаты тестирования программного продукта
- •2.4 Графическое представление результатов
- •2.5 Анализ результатов
- •Заключение
- •Список использованных источников
2.2 Формы и основные модули текста программы в среде Delphi
Для решения поставленной задачи разработана система диалоговых окон, посредством которых достигается главная цель проекта.
Создана главная форма программы (рисунок 2.1).
Рисунок 2.1 – Главная форма программы
Основная процедура программы для решения поставленной задачи представлена ниже:
procedure TForm1.Button4Click(Sender: TObject);
var
text:string;
arr_word:array[0..1000] of integer;
arr_punkt:array[0..1000] of integer;
arr_slog:array[0..1000] of double;
arr_max:array[0..1000] of char;
start:array[0..1000] of integer;
result,k,col_w,col_p:integer;
str:string;
n,j,predl,nomer,finish,nom:integer;
buf:double;
i : LongWord;
begin
n:=0;
predl:=-1;
col_w:=-1;
col_p:=-1;
Text:=memo1.Text;
for i:=1 to length(Text) do
if (Text[i]='/')
then
n:=i;
result:=0;
memo2.Text:=memo1.Text;
for i:=1 to n do
begin
if (Text[i]=' ') then
begin
inc(result);
if ((text[i-1]='.') or (text[i-1]='?') or (text[i-1]='!') or (text[i-1]=';')) then
begin
inc(col_w);
arr_word[col_w]:=result;
start[col_w]:=i+1;
result:=0;
inc(predl);
end;
end;
end;
result:=0;
for i:=0 to n do
begin
if ((Text[i]=',') or (Text[i]=':') or(Text[i]='-') or (Text[i]='"')) then
inc(result);
if ((text[i]='.') or (text[i]='?') or (text[i]='!') or (text[i]=';')) then
begin
inc(col_p);
arr_punkt[col_p]:=result;
result:=0;
end;
end;
for i:=0 to predl do
begin
arr_slog[i]:=arr_punkt[i]+arr_word[i];
memo2.Lines.Add('¹'+inttostr(i+1)+': кол-во слов: '+inttostr(arr_word[i])+', кол-во знаков: '+inttostr(arr_punkt[i])+', сложность: '+floattostr(arr_slog[i]));
end;
buf:=0;
for i:=0 to predl do
buf:=buf+arr_slog[i];
buf:=buf/(predl+1);
memo2.Lines.Add('Средняя сложность по предложениям: '+floattostr(buf));
buf:=0;
for i:=0 to predl do
begin
if (buf<arr_slog[i]) then
begin
buf:=arr_slog[i];
nomer:=i;
end;
end;
nom:=0;
for j:=0 to predl do
begin
if(j=nomer-1) then
begin
for i:=start[j] to n do
if (text[i]<>'.') then
begin
arr_max[nom]:=text[i];
inc(nom);
end else if (text[i]='.') then break;
end;
end;
for i:=0 to nom do
str:=str+arr_max[i];
memo2.Lines.Add('Максимальная сложность предложения: '+floattostr(buf)+' = '+str);
if MessageDlg('Сохранить результаты ?',mtConfirmation, [mbYes, mbNo], 0) = mrYes then
if savedialog1.Execute then memo2.Lines.SaveToFile(savedialog1.Filename+savedialog1.Filter);
end;
2.3 Результаты тестирования программного продукта
В ходе тестирования созданного программного продукта оно работала без сбоев и точно отвечала заданным условиям. После открытия текстового документа содержащего русский текст: « Назовем, сложностью предложения -сумму слов и знаков препинания. Составить программу, определяющую максимальную сложность предложений, в, тексте на русском языке и среднюю сложность по всем предложениям. В файле результатов: должен быть исходный текст. Значение максимальной сложности и предложение, соответствующее этой сложности и значение средней сложности предложения. Потоки данных или потоки управления в схемах показываются линиями. Направление потока -слева -направо, и, сверху, вниз считается: стандартным. В случаях когда необходимо внести большую ясность в схему на линиях используются стрелки. Если поток имеет направление, отличное от стандартного, стрелки должны указывать это направление. / Это программа все равно не прочитает).» программа выдала максимальное сложное предложение до символа «/» равной значению «20», а среднее значение по всем предложениям – «12.875» . Все приведенные выше данные являются правильными.
