70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
1

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

01.10.2016, 21:49. Показов 3850. Ответов 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
Почетный модератор
64272 / 47571 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.10.2016, 00:00 2
Pascal
1
2
While pos('  ',s)>0 do//в апострофах по 2 пробела
delete(s,pos('  ',1));
1
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32451 / 20945 / 8105
Регистрация: 22.10.2011
Сообщений: 36,213
Записей в блоге: 7
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
70 / 70 / 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
Почетный модератор
64272 / 47571 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.10.2016, 12:35 5
А у меня сколько параметров?
Pascal
1
delete(s,pos('  ',1));
s-строка из которой удаляем, pos(' ',1)-позиция первого вхождения 2х пробелов, 1-количество удаляемых символов.
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
02.10.2016, 12:55  [ТС] 6
Цитата Сообщение от Puporev Посмотреть сообщение
А у меня сколько параметров?
Разве не так должно быть
Pascal
1
delete(string1,pos('  ',string1),1);
?
Первоначальный вариант у меня не срабатывает.
0
Почетный модератор
64272 / 47571 / 32739
Регистрация: 18.05.2008
Сообщений: 115,182
02.10.2016, 13:00 7
Да, я неправильно указал параметры в функции pos, а не в процедуре delete.
1
70 / 70 / 35
Регистрация: 06.07.2016
Сообщений: 415
02.10.2016, 13:05  [ТС] 8
Puporev , спасибо, ваши 2 строчки в любом случае заменяют мои 14.
0
Модератор
Эксперт Pascal/DelphiЭксперт NIX
7502 / 4370 / 2776
Регистрация: 22.11.2013
Сообщений: 12,506
Записей в блоге: 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
Copyright ©2000 - 2023, CyberForum.ru