Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Строковый тип данных.doc
Скачиваний:
28
Добавлен:
12.04.2015
Размер:
1 Мб
Скачать

I-го слова в строке символов.

Входные параметры:

sst  очередное слово;

s1  входная строка символов;

i  номер слова в строке;

dl  количество слов в строке;

a  двумерный массив, содержащий информацию о структуре строки;

Выходные параметры:

m  количество повторений очередного (i-го) слова в строке символов.

Схема алгоритма проверки повторения очередного слова строки среди слов, расположенных перед ним (Prov1) приведена на рис. 5.

Рис.5. Схема алгоритма Prov1  проверки повторения очередного слова строки среди слов, расположенных перед ним.

Входные параметры:

sst  очередной слово;

s1  входная строка символов;

n  количество слов в строке, расположенных перед проверяемым;

a  двумерный массив, содержащий информацию о структуре строки;

Выходные параметры:

f  логическая переменная  признак повторения очередного слова (при f = false).

Дополнительные переменные:

j  номер слова в строке при проверке;

ss  j-ое слово в сроке при проверке.

Схема алгоритма проверки повторения очередного слова строки среди слов, расположенных после него (Prov2) приведена на рис. 6.

Рис. 6. Схема алгоритма Prov2  проверки повторения очередного слова строки среди слов, расположенных после него.

Входныепараметры:

sst  очередное проверяемое слово;

s1  входная строка символов;

i1  номер слова, расположенного после проверяемого;

i2  количество слов в строке;

a  двумерный массив, содержащий информацию о структуре строки;

Выходные параметры:

m1  количество повторений очередного слова в строке символов.

Дополнительные переменные:

j  номер слова в строке при проверке;

ss  j-тое слово в сроке при проверке.

    1. Текст программы

program Project_str;

uses

Forms,

Unit_str in 'Unit_str.pas' {Form1};

{$R *.res}

begin

Application.Initialize;

Application.CreateForm(TForm1, Form1);

Application.Run;

end.

unit Unit_str;

Interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,

Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Edit1: TEdit; // поле для ввода исходной строки

Label2: TLabel;

Edit2: TEdit; // поле для ввода сформированной строки

Button1: TButton; // кнопка выполнения

Button2: TButton; // кнопка очистки

Memo1: TMemo;

Label3: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

Implementation

{$R *.dfm}

type Tst r =array[1..15,1..2] of integer;

var s1,s2:string;

procedure Strukt(s1:string;l:integer; var a:tstr; var k:integer);

var c,i:integer;

begin

k:=0;

c:=0;

for i:=1 to l do

if (s1[i]=' ') or (s1[i]=',')

then

begin

if c>0 then

begin

k:=k+1;

a[k,1]:=i-c;

a[k,2]:=c;

c:=0;

end;

end

else c:=c+1;

end;

function Prov1(sst,s1:string;n:integer;a:tstr):boolean;

var j:integer;

ss:string;

begin

Result:= true;

for j:=1 to n do

begin

ss:=copy(s1,a[j,1],a[j,2]);

if ss=sst then

result:=false;

end;

end;

function Prov2 (sst,s1:string;i1,i2:integer;a:tstr):integer;

var j,m1:integer;

ss:string;

begin

m1:=1;

for j:=i1 to i2 do

begin

ss:=copy(s1,a[j,1],a[j,2]);

if ss=sst then

m1:=m1+1;

end;

result:=m1;

end;

function Schet (sst,s1:string;i:integer;a:tstr;k:integer):integer;

var f1:boolean;

m:integer;

begin

m:=1;

f1:=prov1(sst,s1,i-1,a);

if f1 then

m:=prov2(sst,s1,i+1,k,a);

Result:=m;

end;

procedure TForm1.Button1Click(Sender: TObject);

var a:tstr;

ss1,sst:string;

m,i,l,dl:integer;

begin

s1:=edit1.Text;

s1:=s1+' ';

l:=length(S1);

if l>1 then

begin

struсt(s1,l,a,dl);

if dl>1 then

begin

ss1:=copy(s1,a[1,1],a[1,2]);

s2:='';

for i:=2 to dl do

begin

sst:=copy(s1,a[i,1],a[i,2]);

if ss1<>sst then

begin

m:=Schet(sst,s1,i,a,dl);

if m>2 then

s2:=s2+sst+' ';

end;

end;

if length(s2)>0 then

edit2.Text:=s2

else ShowMessage('Выходная строка пустая');

end

else ShowMessage('Слов нет');

end

else ShowMessage('Входная строка пустая');

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

edit1.Clear;

edit2.Clear;

edit1.SetFocus;

end;

end.

    1. Результаты работы программы

  1. Порядок выполнения работы

  1. Получить задание.

  2. Разработать алгоритм и представить его в виде схемы.

  3. Разработать интерфейс программы.

  4. Написать программу.

  5. Отладить программу.

  1. Содержание отчёта

  1. Титульный лист.

  2. Задание.

  3. Схема алгоритма.

  4. Текст программы.

  5. Результаты выполнения программы.

Приложение