Дан текст состоящий из слов написаных латинскими буквами и разделённый пробелами. текст кончается точкой. Нужно напечатать те слова текста, которые имеют нечётный номер и в которых нет ни одной повторяющейся буквы — Pascal(Паскаль)

uses crt;
const ds=[' ','.','A'..'Z','a'..'z'];
var s,s1:string;
    c:char;
    m:set of char;
    n,i,j,k,p,q:byte;
begin
clrscr;
writeln('Введите текст из слов, записанных латинскми буквами,');
writeln('разделенных пробелами, в конце точка');
s:='';
repeat
c:=readkey;
if c in ds then
 begin
  write(c);
  s:=s+c;
 end;
if c=#46 then writeln;
until c=#46;
delete(s,length(s),1);
writeln('Слова с нечетными номерами, состоящие только из разных букв:');
i:=1;
n:=0;
k:=0;
while i<=length(s) do
if((i=1)or(s[i-1]=' '))and(s[i]<>' ') then
 begin
  n:=n+1;
  s1:='';
  j:=i;
  while(s[j]<>' ')and(j<=length(s)) do
   begin
    s1:=s1+s[j];
    j:=j+1;
   end;
  if odd(n) then
   begin
    m:=[];q:=0;
    for p:=1 to length(s1) do
    if not (s1[p] in m) then
     begin
      q:=q+1;
      m:=m+[s1[p]];
     end;
    if q=length(s1)then
     begin
      k:=1;
      write(s1,' ');
     end;
   end;
  i:=i+length(s1);
 end
else i:=i+1;
if k=0 then write('Таких слов нет!');
readln
end.

Leave a Comment

45 − 36 =