
Л7_инф_2015 / Пример_работы_со_строками
.docДополнительный материал к лекции №5.
Задача 1. Удалить из строки все лишние пробелы между словами, кроме одного.
Рис. 1 Алгоритм удаления лишних пробелов
program projstring;
{$APPTYPE CONSOLE}
uses
SysUtils;
var s:string[20];
k,i:integer;
ch:char;
begin
repeat
Writeln('Enter String');
readln(s);
s:=trim(s);
k:=length(s);
i:=1;
while i<=k do
begin
if s[i]=' ' then
while s[i+1]=' ' do
begin
delete(s,i+1,1);
k:=k-1;
end;
i:=i+1;
end;
writeln('new string =',s);
writeln('Continue?');
readln(ch);
until ch='n';
end.
Результат работы программы со строкой:
Рис. 2
Проанализируйте результаты и объясните результат обработки первой строки.
Пример решения задачи со строками в визуальной среде.
Задача 2. Получить инверсную строку.
Рис. 3 Алгоритм инверсии строки
unit Unit1_revers_string;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
s=string[60];
var
Form1: TForm1;
s1:s;
implementation
{$R *.dfm}
Procedure Revers(var ss:s;n:integer);
var t:char;
begin
if n>length(ss) div 2 then
-
a
b
c
d
e
f
g
h
i
j
begin
-
j
b
c
d
e
f
g
h
i
a
t:=ss[n];
ss[n]:=ss[length(ss)-n+1]
;
ss[length(ss)-n+1]:=t;
Revers(ss,n-1);
end;
end;// Метод инвертирования строки
procedure TForm1.Button1Click(Sender: TObject);
begin
s1:=edit1.text;
end; // Ввод строки из окна
procedure TForm1.Button2Click(Sender: TObject);
var t:char;
r:integer;
begin
r:=length(s1);
revers(s1,r);
Edit2.Text :=s1;
end; // Событие, обеспечивающее вызов метода преобразования строки
procedure TForm1.Button3Click(Sender: TObject);
begin
close;
end;
end.
Рис. 4 Результат инвертирования строки