Написать программку на Паскале: Удалить все слова, начинающиеся и кончающиеся на

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

Задать свой вопрос
1 ответ
Var s: string;  // строчка текста
    i,lf: integer;  // lf - номер первого символа отдельного слова в строке
                    // i - переменная цикла, для просмотра строчки
begin
  write('строчка: ');  readln(s);  // считывание слова
  i:=1; lf:=1;  // i:=1; - текущий знак слова - 1-ый
                // lf:=1;  - lf показывает на 1-ый знак слова   
  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 на
                              // 1-ый знак последующего слова 
    end;                      // конец блока по условию, что очередной знак - пробел

    i:=i+1;                   // перебегаем к последующему символу в строке
  until  gt;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.     // конец программы

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

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

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

Вадим
В строке "until >length(s); // если номер еще одного символа строчки больше " просит выражение.
Тамара Словестная
В строке "if s[i] = ' ' then" ошибка времени исполненья: Индекс находился вне границ массива
Алиса
Приведите пример входной строчки, где ошибка времени исполненья.
Валерка
В строке "until >length(s)", природно, обязано быть until i>length(s);
Ксения Анисинкова
Вы желали комментарии, Вы их получили, сейчас убирайте их все.
Дарина Вадченко
Заработало! Спасибо огромное!
Вадим Сумбатьянц
Пожалуйста.
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт