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

вывод падежа слов
Один из вариантов решения. Смотрим на предлог перед проверяемым словом и сравниваем с базой предлогов по падежам

Код:
var padez:array[1..7,1..11] of string; 
s:string; 
i,j:integer; 
s1:string; 
s2:string;
b:integer;
f:integer;
flag:boolean;
slovo:array[0..65535] of integer;
a:integer;

begin
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;

for I := 0 to a do
  begin
   s1:=copy(s,slovo[i]+1,slovo[i+1]-1);
   s2:=copy(s,slovo[i-1]+1,slovo[i]-1);

   flag:=false;
   for f := 2 to 7 do
   for b := 2 to 11 do if padez[f,b]=s2 then begin flag:=true; break; end;

   if flag=true then writeln('Падеж слова '+s1+' '+padez[f,1]) else writeln('Падеж слова '+s1+' '+padez[1,1]);
  end;
end;