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

uses crt;
var s,s1,s2,s3:string;
    i,j,k:byte;
    c:char;
begin
clrscr;
writeln('Введите 1 предложение:');
readln(s);
s:=' '+s;//добавим пробел в начало для удобства
i:=1;
s2:='';//новая строка
while i<=length(s) do//пока не конец строки
if (s[i]<>' ')and(s[i-1]=' ') then//если не пробел, а перед пробел
 begin
  j:=i;
  s1:='';//новое слово
  while(j<=length(s))and(s[j]<>' ') do//пока не конец и не пробел
   begin
    s1:=s1+s[j];//составляем слово
    j:=j+1;
   end;
  c:=s1[1];//запомним первую букву
  s3:=copy(s1,2,length(s1)-1);//возьмем слово без первой буквы
  for k:=length(s3)downto 1 do//пройдем с конца
  if s3[k]=c then delete(s3,k,1);//удалим все равные первой
  s2:=s2+s1[1]+s3;//в новую строку первая буква и остатки слова
  i:=i+length(s1);//перешагнем через слово(для этого мы не меняли его длину)
 end
else//если пробел
 begin
  s2:=s2+s[i];//пишем
  i:=i+1;//и вперед
 end;
delete(s2,1,1);//удалим первый пробел
write(s2);
readln
end.

Leave a Comment

19 − = 16