Показать сообщение отдельно
  #2  
Старый 16.02.2011, 10:03
Аватар для friz
friz friz вне форума
Местный
 
Регистрация: 04.04.2008
Адрес: Минск
Сообщения: 596
Версия Delphi: 2007 & JAVA EE
Репутация: 10670
По умолчанию

Как я понимаю, программа должна выделить слова из предложения, и проверить есть ли слова которые читаются одинокого слева направо и справа налево?
вот примерчик:
на форме, edit1, memo1, button1
в эдит вводим строку, в мемо отображаются нужные слова
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
TDelim=set of Char;
TArrayOfString=Array of String;

  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function fcToParts(sString:String;tdDelim:TDelim):TArrayOfString ;  //функция разбора строки на слова
var iCounter,iBegin:Integer;
begin
if length(sString)>0 then
begin
include(tdDelim,#0);
iBegin:=1;
SetLength(Result,0);
For iCounter:=1 to Length(sString)+1 do
  begin
   if (sString[iCounter] in tdDelim) then
    begin
     SetLength(Result,Length(Result)+1);
     Result[Length(Result)-1]:=Copy(sString,iBegin,iCounter-iBegin);
     iBegin:=iCounter+1;
    end;
end;
end;
end;


procedure TForm1.Button1Click(Sender: TObject);
var
StrArr:TArrayOfString;
i,k,z:integer;
s:string;
zard :TDelim;
t:char;
begin
zard:=[' ',',','.'];  //разделители
t:=edit1.Text[length(edit1.Text)]; //последний символ строки
if not (t in zard) then edit1.Text:=Edit1.Text+' '; // если последний символ не разделитель то добавляем пробел
StrArr:=fcToParts(edit1.Text,[' ',',','.']);
for i:=1 to Length(StrArr) do
  begin
  s:='';
     for k:=length(StrArr[i]) downto 1 do
        begin
          s:=s+StrArr[i][k]; //переворачиваем слово
        end;
  if StrArr[i]=s then memo1.Lines.Add(StrArr[i]);  // проверяем равенство, если ок то выводим в мемо
  end;

end;

end.
__________________
Последний раз редактировалось Admin, Сегодня в 10:32.
Ответить с цитированием