Найти последнее вхождение некоторой подстроки в строке - Turbo Pascal

Узнай цену своей работы

Формулировка задачи:

пожалуйста помогите. дан текст из нескольких строк. предлагается: 1) найти последнее вхождение некоторой подстроки в строке (подстрока и номер строки, в которой осуществляется поиск, вводятся пользователем и являются параметрами функции). 2)удалить из строки определенное количество завершающих символов (номер строки, количество символов вводятся пользователем)

Решение задачи: «Найти последнее вхождение некоторой подстроки в строке»

textual
Листинг программы
Type
  MyString = String;
  mas = Array [1..30] of MyString;
Var
  st: mas;
  i,n,nom,kl: Byte;
  sub: MyString;
{---------}
Function LastPos(substr: MyString; num: Integer): Byte;
var s, space: MyString;
    k: Byte;
begin
  k:=0;
  space:='';
  s:=st[num];
  While Pos(substr,s)<>0 do
  begin
    k:=Pos(substr,s);
    For i:=1 to Length(substr) do
    space:=space+#0;
    Delete(s,Pos(substr,s),Length(Copy(s,Pos(substr,s),Length(substr))));
    s:=space+s;
    space:='';
  end;
  LastPos:=k;
end;
{---------}
Function DeleteSymbols(num: Integer; kol: Byte): MyString;
var s: MyString;
begin
  If kol<=Length(st[num]) Then
  begin
    s:=st[num];
    Delete(s,Length(s)-kol+1,kol);
  end;
  DeleteSymbols:=s;
end;
{---------}
BEGIN
Writeln('Введите кол-во строк: ');
Readln(n);
Writeln('Введите ',n,' строк:');
For i:=1 to n do
Readln(st[i]);
Writeln('Введите подстроку и номер строки: ');
Readln(sub,nom);
If LastPos(sub,nom)=0 Then
Writeln('Такой подстроки нет')
Else
Writeln('Позиция последней подстроки = ',LastPos(sub,nom));
Writeln('Введите номер строки и количество завершающих символов, кот. необходимо удалить: ');
Readln(nom,kl);
Writeln('Полученная строка: ',DeleteSymbols(nom,kl));
Readln
END.

Объяснение кода листинга программы

  1. В функции LastPos объявлены переменные s, space и k. Переменная s инициализируется значением st[num], где num - это параметр функции. Переменная space инициализируется пустой строкой. Переменная k инициализируется значением позиции первого вхождения подстроки в строке s.
  2. В цикле While происходит следующее:
    • k обновляется с новым значением, полученным от функции Pos. Это значение - позиция первого вхождения подстроки в строке s.
    • Затем происходит цикл For, который проходит по каждому символу подстроки substr.
    • Для каждого символа подстроки, переменная space обновляется путем добавления символа подстроки к текущему значению переменной space.
    • Затем происходит удаление подстроки из строки s с помощью функции Delete. Эта функция удаляет подстроку из строки s, начиная с позиции pos, и длиной len.
    • После завершения цикла For, переменная space обновляется с новым значением, полученным от функции Pos. Это значение - позиция последнего вхождения подстроки в строке s.
    • Наконец, функция LastPos возвращает значение k.
  3. В функции DeleteSymbols объявлены переменные s и kol. Переменная s инициализируется значением st[num], где num - это параметр функции. Переменная kol инициализируется значением, введенным пользователем.
  4. Если kol меньше или равно длине строки s, то выполняется следующий код:
    • Строка s обновляется путем удаления kol символов из начала строки. Это делается с помощью функции Delete.
    • Затем переменная s обновляется с новым значением, полученным от функции Pos. Это значение - позиция начала строки после удаления kol символов.
    • Функция DeleteSymbols возвращает обновленную строку s.
  5. В основной программе:
    • Выводится запрос на ввод количества строк.
    • Запрашивается количество строк и сохраняется в переменной n.
    • Для каждой строки в массиве st выполняется:
      • Выводится запрос на ввод подстроки и номера строки.
      • Вызывается функция LastPos с подстрокой и номером строки в качестве параметров. Результат функции выводится на экран.
      • Вызывается функция DeleteSymbols с номером строки и количеством завершающих символов, которые нужно удалить, в качестве параметров. Результат функции выводится на экран.
    • Программа завершается с помощью функции Readln.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5
Похожие ответы