01.04.2021, 21:02
|
Прохожий
|
|
Регистрация: 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;
|