Форум программистов, компьютерный форум, киберфорум
Free Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/11: Рейтинг темы: голосов - 11, средняя оценка - 5.00
69 / 69 / 35
Регистрация: 06.07.2016
Сообщений: 415
1

Удалить все лишние пробелы, оставив по одному между словами

01.10.2016, 21:49. Просмотров 2232. Ответов 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
Program TryingToUseString;
var string1 : string;
counter,positionOfspace,counter1,falsepos,mono: integer;
space : char;
begin
    writeln('Input a string : ');
    readln(string1);
    space:=' ';
    positionOfspace:=1;
    while (positionOfspace<=length(string1))  do
        begin
                  falsepos:=positionOfspace;
                  mono:=0;
                  while (string1[falsepos]=space) do
                     begin
                        inc(mono);
                        inc(falsepos);
                     end;
           
           delete(string1,positionOfspace+1,mono-1);
           inc(positionOfspace);
        end;
   write(string1);
 
end.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.10.2016, 21:49
Ответы с готовыми решениями:

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

Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами
Удалить пробелы, стоящие между первым вторым словами, а также между двумя последними словами, на...

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

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

8
Модератор
62930 / 46950 / 32354
Регистрация: 18.05.2008
Сообщений: 113,763
02.10.2016, 00:00 2
Pascal
1
2
While pos('  ',s)>0 do//в апострофах по 2 пробела
delete(s,pos('  ',1));
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
30867 / 20189 / 7874
Регистрация: 22.10.2011
Сообщений: 35,049
Записей в блоге: 6
02.10.2016, 11:36 3
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Я просто оставлю это здесь:
Pascal
1
2
3
4
5
6
7
uses strutils;
var s : string;
begin
  write('s = '); readln(s);
  s := DelSpace1(s); // вот это - уже готовая функция, заменяющая несколько пробелов на один
  writeln(s);
end.
1
69 / 69 / 35
Регистрация: 06.07.2016
Сообщений: 415
02.10.2016, 12:32  [ТС] 4
Цитата Сообщение от volvo Посмотреть сообщение
uses strutils
До этого я еще не дошел. Спасибо.
Цитата Сообщение от Puporev Посмотреть сообщение
delete(s,pos(' *',1))
Как в данном случае сработает
Pascal
1
delete
? Он же должен принять 3 параметра? (Строка,из которой он удаляет что-то, место, с которого он удаляет и , соответственно, количество удаляемых символов.) И
Pascal
1
 s
- это же строка, с которой мы работаем?
0
Модератор
62930 / 46950 / 32354
Регистрация: 18.05.2008
Сообщений: 113,763
02.10.2016, 12:35 5
А у меня сколько параметров?
Pascal
1
delete(s,pos('  ',1));
s-строка из которой удаляем, pos(' ',1)-позиция первого вхождения 2х пробелов, 1-количество удаляемых символов.
1
69 / 69 / 35
Регистрация: 06.07.2016
Сообщений: 415
02.10.2016, 12:55  [ТС] 6
Цитата Сообщение от Puporev Посмотреть сообщение
А у меня сколько параметров?
Разве не так должно быть
Pascal
1
delete(string1,pos('  ',string1),1);
?
Первоначальный вариант у меня не срабатывает.
0
Модератор
62930 / 46950 / 32354
Регистрация: 18.05.2008
Сообщений: 113,763
02.10.2016, 13:00 7
Да, я неправильно указал параметры в функции pos, а не в процедуре delete.
1
69 / 69 / 35
Регистрация: 06.07.2016
Сообщений: 415
02.10.2016, 13:05  [ТС] 8
Puporev , спасибо, ваши 2 строчки в любом случае заменяют мои 14.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5698 / 3413 / 2430
Регистрация: 22.11.2013
Сообщений: 9,571
Записей в блоге: 1
02.10.2016, 15:14 9
Pascal
1
2
  for j:=Length(s)-1 downto 1 do
    if (s[j]=' ') and (s[j+1]=' ') then Delete(s,j,1);
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
02.10.2016, 15:14

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

Удалить лишние пробелы
1)Дана строка-предложение, содержащая избыточные пробелы. Преобразовать ее так, чтобы между словами...

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

Как удалить лишние пробелы
суть вот в чем.. пишу текст, некоторые слова с большим пробелом. и при выводе он его тоже выводит....

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


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

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

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