Показать сообщение отдельно
  #7  
Старый 01.04.2021, 21:02
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 41
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Одно из решений задачи номер пять.

Код:
var perevod:array[1..65535,1..2] of string; //наш переводчик (в первом столбце английское слово, во втором русское)
s:string; //ваша строка которую проверяем
i,j:integer; //для цикла
s1:string; //слово из предложения
b:integer; //для цикла проверки слова на наличие в переводчике
f:integer; //позиция совпадения нашего слова и в словаре

slovo:array[0..65535] of integer; //позиции пробелов для определения слов
a:integer; //кол-во слов

sss:string; //итоговая строка
begin
//вводим строку любым известным способом
sss:='';
s:=' '+s; // для того что бы посчитало первое слово
s:=s+' '; //для того чтобы посчитало последнее слово
a:=0;
for I := 1 to length(s) do if (s[i]=' ')and(s[i+1]<>' ') then begin slovo[a]:=i; a:=a+1; end;//позиция пробела и кол-во слов в предложении

//теперь в переменной "A" занесено кол-во слов в предложении
//в массиве slovo занесены позиции пробелов по которым мы ищем слова

for I := 0 to a do
  begin
   s1:=copy(s,slovo[i]+1,slovo[i+1]-1); //сейчас сюда скопировано слово из предложения

   //далее проверяем есть ли данное слово в переводчике
   f:=0; //позиция совпадения слова в словаре
   for b := 1 to 65535 do if perevod[b,1]=s1 then begin f:=b; break; end; //если слово есть в словаре то выходим из цикла

   //в переменной F записана позиция для перевода слова
   //показывает что данное слово есть в словаре
   if f>0 then sss:=sss+' '+perevod[f,2] else sss:=sss+' '+s1;
   //если слово найдено в словаре то пишем его перевод, если не найдено то пишем оригинальное не переведённое слово
  end;

writeln(sss); //переведённая строка
end;