Перевести код из С в Pascal

  • Автор темы DoctorChe
  • Дата начала
D

DoctorChe

Гость
#1
Здравствуйте!
Помогите пожалуйста перевести перевести код из С в Паскаль. В С никак не шарю...
Заранее спасибо.
C++:
/* В заданном предложении найти пару слов, из которых одно 

является обращением другого */ 

#include <stdio.h> 

#include <string.h> 

#define R ".,;:'\"()!?" /* символы - разделители */ 

main() 

{ 

char s[100],c[100],*p[50],*q; 

int i=0,j,k,n,fl=0; 

puts("\nВведите предложение"); 

gets(s); /* ввод предложения */ 

q=strtok(s,R); 

while(q) /* разбиваем предложение на слова */ 

{ 

p[i++]=q; 

q=strtok(NULL,R); 

} 

for(j=0;j<i;j++) /* перебираем слова */ 

for(k=j+1;k<i;k++) 

{ 

if(!fl) /* проверка флага */ 

{ 

for(n=0;n<strlen(p[k]);n++) /* переворачиваем слово */ 

{ 

c[n]=*(p[k]+(strlen(p[k])-n-1)); 

} 

c[n]='\0'; 

if(!strcmp(c,p[j])) /* если слова одинаковы, то выводим */ 

{ 

puts("Ответ:"); 

puts(p[j]); 

puts(p[k]); 

fl=1; /* устанавливаем флаг */ 

} 

} 

} 

if(!fl) puts("\nНет таких слов"); 

}
 
D

DoctorChe

Гость
#2
Добрые люди помогли. Есть код на Delphi.
Но по заданию необходимо на Паскале сделать. И потом еще задания по программе выполнять.
Можете поправить пожалуйста на Паскаль. Очень надо.
Код:
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.