Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
0 / 0 / 2
Регистрация: 17.10.2013
Сообщений: 66
1

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

27.11.2013, 13:13. Просмотров 1666. Ответов 12
Метки нет (Все метки)


Уважаемые форумчане, не могли бы вы помочь новичку написать программу организующую разбиение заданной строки на несколько строк в соответствии с задаваемым шаблоном-разделителем.

Строка и разделитель должны вводится с клавиатуры и реализованы в виде отдельной подпрограммы с передачей параметра-строки по адресу. Само разбиение строки должно выполняться в отдельной функции и вывод результата необходимо выполнять с помощью отдельной подпрограммы.

Вот, что смог написать.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
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.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.11.2013, 13:13
Ответы с готовыми решениями:

Программа на строки: из данной строки вывести на экран только числа
Народ помогите пожалуйста написать программу на строки. Задание такое, нужно ввести любые...

Ввести с клавиатуры строку символов.Признак окончания ввода строки - нажатие клавиши 'ввод'.Программа должна определить длину введенной строки L
Помогите пожалуйста:gbye: Ввести с клавиатуры строку символов.Признак окончания ввода строки -...

Программа для удаления символов из строки
Доброго времени суток! Пожалуйста помогите с решением задачи. Напишите программу, которая...

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

12
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
27.11.2013, 13:26 2
Разделитель это обычно символ.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
uses crt;
procedure input(var st:string;var rz:char);
begin
writeln('Введите строку');
readln(st);
writeln('Введите символ, шаблон-разделитель');
readln(rz);
end;
procedure razb(st:string;rz:char);
begin
while pos(rz,st)>0 do
 begin
  writeln(copy(st,1,pos(rz,st)-1));
  delete(st,1,pos(rz,st));
 end;
writeln(st);
end;
var s:string;
    r:char;
begin
clrscr;
input(s,r);
razb(s,r);
readln;
end.
1
0 / 0 / 2
Регистрация: 17.10.2013
Сообщений: 66
27.11.2013, 13:59  [ТС] 3
А если шаблоном разделителем будет не один символ?
0
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
27.11.2013, 14:05 4
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
uses crt;
procedure input(var st:string;var rz:string);
begin
writeln('Введите строку');
readln(st);
writeln('Введите  шаблон-разделитель');
readln(rz);
end;
procedure razb(st:string;rz:string);
begin
while pos(rz,st)>0 do
 begin
  writeln(copy(st,1,pos(rz,st)-1));
  delete(st,1,pos(rz,st)+length(rz)-1);
 end;
writeln(st);
end;
var s,r:string;
begin
clrscr;
input(s,r);
razb(s,r);
readln;
end.
1
0 / 0 / 2
Регистрация: 17.10.2013
Сообщений: 66
28.11.2013, 10:59  [ТС] 5
Puporev, Спасибо огромное) А не могли бы вы подсказать как вывод сделать в виде отдельной процедуры?
0
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
28.11.2013, 12:14 6
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
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;
procedure razb(st:string;rz:string;var s:mas;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
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);
razb(s,r,m,n);
output(m,n);
readln;
end.
1
0 / 0 / 2
Регистрация: 17.10.2013
Сообщений: 66
29.11.2013, 12:20  [ТС] 7
Спасибо огромное)))

Добавлено через 14 часов 26 минут
Возник вопрос, можно ли процедуру разбиения заменить функцией? если да, то как?
0
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
29.11.2013, 12:25 8
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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
0 / 0 / 2
Регистрация: 17.10.2013
Сообщений: 66
29.11.2013, 13:11  [ТС] 9
как оказалось все просто) Puporev, спасибо Огромное!
0
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 4
24.12.2013, 23:43 10
Puporev, не могли бы вы поправить вашу программу, с учетом того что пользователь может вводить строку из одинаковых символов, и шаблон разделитель точно такой же символ.
0
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
25.12.2013, 07:01 11
Строку ааааааааааааа разделить по шаблону аа.И как это интересно?
0
0 / 0 / 0
Регистрация: 29.10.2013
Сообщений: 4
25.12.2013, 07:22 12
Наверно не так выразился. Сейчас программа в этом случае переводит курсор на количество возможных делений вниз(возможно), необходимо что бы это не происходило, или выводилось сообщение что такое деление не возможно.
0
Модератор
62946 / 46958 / 32362
Регистрация: 18.05.2008
Сообщений: 113,784
25.12.2013, 07:25 13
Вы меня извините, но это не ваша тема и я не понимаю что Вам нужно. Создайте свою тему и подробно опишите задание и проблему. Здесь больше не пишите, все удалю.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.12.2013, 07:25

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Для каждой строки вывести количество символов равное сумме элементов строки
дан целочисленный двумерный массив значения элементов которого лежат в интервале.Вычеслить суммы...

Для заданной строки s заменить все вхождения строки substr1 на подстроку substr2
Разработать программу, которая для заданной строки s заменяет все вхождения от строки substr1 на...

Для каждой строки матрицы определить число элементов, больших первого элемента этой строки
Для каждой строки матрицы определить число элементов, больших первого элемента этой строки. ...

Слить две строки, вставив символы одной строки между символами другой строки
Строка a из n символов лексикографически меньше строки b из n символов, если существует такой...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.