Программа для разбиения строки на строки - Free Pascal

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

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

Уважаемые, не могли бы вы помочь новичку написать программу организующую разбиение заданной строки на несколько строк в соответствии с задаваемым шаблоном-разделителем. Строка и разделитель должны вводится с клавиатуры и реализованы в виде отдельной подпрограммы с передачей параметра-строки по адресу. Само разбиение строки должно выполняться в отдельной функции и вывод результата необходимо выполнять с помощью отдельной подпрограммы. Вот, что смог написать.
uses crt;
 var s1,s2,s3:string;
 
  procedure input(var st,sh:string);
   begin
   writeln('Введите строку');
   readln(st);
   writeln('Введите шаблон-разделитель');
   readln(sh);
  end;
 
  function razb();
 
  procedure output(var vst1,vst2:string);
   begin
   writeln('Результат деления:');
   writeln(vst1,' ',vst2);
   end;
 
begin
 clrscr;
  input(s1,s2);
 
  output(razb(s1,s2));
  readln;
 end.

Решение задачи: «Программа для разбиения строки на строки»

textual
Листинг программы
uses crt;
type mas=array[1..50] of string;
procedure input(var st:string;var rz:string);
begin
writeln('Введите строку');
readln(st);
writeln('Введите  шаблон-разделитель');
readln(rz);
end;
function razb(st:string;rz:string;var s:mas):byte;
var n:byte;
begin
n:=0;
while pos(rz,st)>0 do
 begin
  n:=n+1;
  s[n]:=copy(st,1,pos(rz,st)-1);
  delete(st,1,pos(rz,st)+length(rz)-1);
 end;
if st<>'' then
 begin
  n:=n+1;
  s[n]:=st
 end;
razb:=n
end;
procedure output(s:mas;n:byte);
var i:byte;
begin
for i:=1 to n do
writeln(s[i])
end;
var s,r:string;
    m:mas;
    n:byte;
begin
clrscr;
input(s,r);
n:=razb(s,r,m);
output(m,n);
readln
end.

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

  1. Программа использует единицы измерения байт для определения размеров строк и массива.
  2. Ввод строк и разделителя осуществляется с помощью функции readln.
  3. В функции razb происходит разбиение строки на подстроки по разделителю.
  4. Размер массива строк m равен 50.
  5. В цикле while происходит поиск следующего разделителя в строке st и разделение строки на подстроки.
  6. Подстрока копируется в массив s с помощью функции copy.
  7. Длина подстроки равна длине разделителя плюс 1.
  8. Если строка st не пустая после удаления подстроки, то она добавляется в массив s как последняя строка.
  9. Функция pos возвращает позицию первого вхождения разделителя в строке st.
  10. Функция output выводит строки из массива s на экран.
  11. Цикл for используется для вывода всех строк из массива s.
  12. Переменная i инициализируется значением 1.
  13. Переменная n инициализируется значением razb(s,r,m).
  14. Переменная m инициализируется значением 50.
  15. Вывод строк из массива m осуществляется с помощью функции output.
  16. Значение переменной n используется для определения количества строк в массиве m.
  17. Переменная s инициализируется пустой строкой.
  18. Переменная r инициализируется пустой строкой.
  19. Программа выводит на экран пустую строку с помощью функции readln.
  20. Ввод строк и разделителя осуществляется с помощью функции readln.

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


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

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

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