Написать программу на паскале: удалить все слова, начинающиеся и заканчивающиеся на одну и ту же букву. (написать комментарий(что означает каждая переменная))

013Angelina139 013Angelina139    2   19.09.2019 02:40    0

Ответы
nuk5 nuk5  08.10.2020 01:17
Var s: string;  // строка текста
    i,lf: integer;  // lf - номер первого символа отдельного слова в строке
                    // i - переменная цикла, для просмотра строки
begin
  write('строка: ');  readln(s);  // считывание слова
  i:=1; lf:=1;  // i:=1; - текущий символ слова - первый
                // lf:=1;  - lf указывает на первый символ слова   
  repeat       // цикл по строке 
    if s[i]=' ' then   // если очередной символ строки - пробел, то
    begin              // начало блока операторов
      if UpperCase(s[i-1])=UpperCase(s[lf]) then  // если последний символ

текущего
                            // слова равен первому символу слова без учета регистра,

то
      begin                 // начало блока операторов 
        delete(s,lf,i-lf+1);  // удаляем слово вместе с пробелом справа
        i:=lf;                // i:=lf;  - переменная i указывает на следующее слово
      end                     // конец блока операторов  
      else lf:=i+1;           // иначе, если первый символ слова не равен
                              // последнему символу слова, устанавливаем lf на
                              // первый символ следующего слова 
    end;                      // конец блока по условию, что очередной символ - пробел

    i:=i+1;                   // переходим к следующему символу в строке
  until  >length(s);          // если номер очередного символа строки больше
длины                              // строки, то выход из цикла по строке
                              // если в последнем слове текста есть совпадения
                              // первого и последнего символа
  if s[length(s)] in ['.','?','!'] then   // если текст заканчивается одним из знаков
.?!  
     if s[lf]=s[length(s)-1] then delete(s,lf-1,length(s)-lf+1) // сравниваем с
предпоследним
                              // если равны, то удаляем последнее слово  
     else                     // иначе ничего не делаем   
  else if s[lf]=s[length(s)] then delete(s,lf-1,length(s)-lf+2);   // если последний
                              // символ не .?!, то сравниваем первый символ
последнего
                              // слова с последним символом текста, если равны,
                              // то удаляем последнее слово
  writeln('новая строка: ',s);  // выводим новую строку на экран
end.     // конец программы

строка: Это озеро около заповедника.
новая строка: Это заповедника.

строка: Около этого заповедника находится озеро.
новая строка: этого заповедника находится.

строка: озеро около заповедника
новая строка: заповедника
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика