Программа для разбиения строки на строки - 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.
Объяснение кода листинга программы
- Программа использует единицы измерения
байт
для определения размеров строк и массива. - Ввод строк и разделителя осуществляется с помощью функции readln.
- В функции razb происходит разбиение строки на подстроки по разделителю.
- Размер массива строк m равен 50.
- В цикле while происходит поиск следующего разделителя в строке st и разделение строки на подстроки.
- Подстрока копируется в массив s с помощью функции copy.
- Длина подстроки равна длине разделителя плюс 1.
- Если строка st не пустая после удаления подстроки, то она добавляется в массив s как последняя строка.
- Функция pos возвращает позицию первого вхождения разделителя в строке st.
- Функция output выводит строки из массива s на экран.
- Цикл for используется для вывода всех строк из массива s.
- Переменная i инициализируется значением 1.
- Переменная n инициализируется значением razb(s,r,m).
- Переменная m инициализируется значением 50.
- Вывод строк из массива m осуществляется с помощью функции output.
- Значение переменной n используется для определения количества строк в массиве m.
- Переменная s инициализируется пустой строкой.
- Переменная r инициализируется пустой строкой.
- Программа выводит на экран пустую строку с помощью функции readln.
- Ввод строк и разделителя осуществляется с помощью функции readln.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д