Консультация # 200359: Здравствуйте! Прошу помощи в следующем вопросе: Дано слово EDIT. Задавать количество подряд стоящих букв в другой EDIT. Определить порядковые номера первой пары и последней пары одинаковых соседних символов, и какие это символы. Если таких символов нет, то должно быть напечатано соответствующее сообщение. Если подряд стоит более двух одинаковых сим...
Здравствуйте! Прошу помощи в следующем вопросе: Дано слово EDIT. Задавать количество подряд стоящих букв в другой EDIT. Определить порядковые номера первой пары и последней пары одинаковых соседних символов, и какие это символы. Если таких символов нет, то должно быть напечатано соответствующее сообщение. Если подряд стоит более двух одинаковых символов, то такие символы не считать за пару. Delphi Оконное (с формой), строковые величины.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls;
type
{ TForm1 }
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
procedure Edit1KeyPress(Sender: TObject; var Key: char);
procedure FormCreate(Sender: TObject);
private
function Check(a:string):string;
public
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
function TForm1.Check(a:string):string;
var
b,c,d,e:integer;
begin
c:=0;d:=0;e:=0;a:=a+#2;
for b:=1 to length(a)-1 do
if a[b]=a[b+1]then
if a[b]<>a[b+2] then
begin
inc(e);
if c=0 then c:=b else d:=b;
end
else a[b+2]:=#1;
case e of
0:Check:='not found couple';
1:Check:='only one couple, positions:='+IntToStr(c)+','+IntToStr(c+1)+' '+a[c]+a[c+1];
else Check:=IntToStr(e)+' couples, first:='+IntToStr(c)+','+IntToStr(c+1)+' '+a[c]+a[c+1]+
' last:='+IntToStr(d)+','+IntToStr(d+1)+' '+a[d]+a[d+1];
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char);
begin
if Key=#13 then
begin
Edit1.ReadOnly:=True;
Label1.Caption:=Check(Edit1.Text);
Label1.Show;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Hide;
end;
end.
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались.
Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора -
для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение.
Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал,
который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом.
Заходите - у нас интересно!