0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 6
1

Если после знака препинания более одного пробела, то лишние пробелы удалить

20.04.2011, 19:23. Показов 1295. Ответов 2
Метки нет (Все метки)

разобрать модуль, содержащий функции для обработки строковых данных:
- если перед знаками препинания есть пробелы, то их удалить;
- если после знаков препинания нет пробела, то его добавить;
- если после знака препинания более одного пробела, то лишние пробелы удалить.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
20.04.2011, 19:23
Ответы с готовыми решениями:

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

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

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

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

2
Почетный модератор
64275 / 47574 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
21.04.2011, 09:52 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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
unit stroka;
interface
const rz=['.',',','?','!',';',':'];
function UdPrd(s:string):string;
function UdPsl(s:string):string;
function Dob(s:string):string;
implementation
function UdPrd(s:string):string;
var i:byte;
begin
i:=2;
while i<=length(s) do
if(s[i] in rz)and(s[i-1]=' ') then
while s[i-1]=' ' do
 begin
  delete(s,i-1,1);
  i:=i-1;
 end
else i:=i+1;
UdPrd:=s;
end;
function UdPsl(s:string):string;
var i:byte;
begin
i:=2;
while i<length(s) do
if (s[i]=' ')and(s[i-1] in rz)and(s[i+1]=' ') then
while s[i+1]=' ' do
delete(s,i+1,1)
else i:=i+1;
UdPsl:=s;
end;
function Dob(s:string):string;
var i:byte;
begin
for i:=length(s)-1 downto 1 do
if(s[i] in rz)and (s[i+1]<>' ') then
insert(' ',s,i+1);
Dob:=s;
end;
end.
Программа для проверки модуля.
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
uses crt,stroka;
var s:string;
begin
clrscr;
writeln('Введите предложение с лишними пробелами перед знаками препинания:');
readln(s);
s:=UdPrd(s);
writeln(s);
writeln('Введите предложение без пробелов после знаков препинания:');
readln(s);
s:=Dob(s);
writeln(s);
writeln('Введите предложение с лишними пробелами после знаков препинания:');
readln(s);
s:=UdPsl(s);
writeln(s);
readln
end.
1
0 / 0 / 0
Регистрация: 20.04.2011
Сообщений: 6
22.04.2011, 12:24  [ТС] 3
Puporev, спасибо)))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.04.2011, 12:24
Помогаю со студенческими работами здесь

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

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

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

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru