Форум программистов, компьютерный форум, киберфорум
Наши страницы

Pascal ABC

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
#1

Преобразовать все идущие подряд пробелы в один - Pascal ABC

10.12.2011, 23:04. Просмотров 2729. Ответов 5
Метки нет (Все метки)

Считывайте по одному символу, и со второго шага проверяйте, не равен ли элемент пробелу, если да, то проверьте, не равен ли элемент предыдущему,
если равен то не записывайте очередной элемент в массив, который будем выводить, не забудьте записать первый символ.
Дана строка, Вам требуется преобразовать все идущие подряд пробелы в один.
Формат входных данных

Длина строки не превосходит 1000.
Формат выходных данных

Выведите измененную строку.
Пример входных и выходных данных
Входные данные Выходные данные
␣d␣hky␣k ␣d␣hky␣k
␣␣tnbnv␣␣l ␣tnbnv␣l
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.12.2011, 23:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Преобразовать все идущие подряд пробелы в один (Pascal ABC):

В заданной строке заменить подряд идущие пробелы на один пробел - Pascal ABC
Написать программу: В заданной строке заменить подряд идущие пробелы на один пробел

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

В массиве A=(a1, а2, ..., аn) удалить все подряд идущие отрицательные элементы, идущие вслед за минимальным элементом массива. - Pascal
Помогите написать на паскале программу для: В массиве A=(a1, а2, ..., аn) удалить все подряд идущие отрицательные элементы, идущие вслед...

Удалить из строки все подряд идущие одинаковые символы - Pascal
Удалить из строки все подряд идущие одинаковые символы(КУмир/Паскаль)

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

Преобразовать последовательность s1, s2, ... sn, уничтожив в ней все запятые, идущие перед первой точкой - Pascal
Дано натуральное число n и символы s1, s2, ... sn, среди которых есть хотя бы одна точка. Преобразовать последовательность s1, s2, ... sn,...

5
Puporev
Модератор
54037 / 41670 / 14750
Регистрация: 18.05.2008
Сообщений: 97,986
11.12.2011, 12:00 #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
uses crt;
var s:array[1..1000] of char;
    a,b:char;
    n,i:integer;
begin
writeln('Введите символы строки в том числе последовательности пробелов');
writeln('окончание ввода Enter или 1000 символов');
n:=1;
repeat
a:=readkey; //читаем код первого символа, он не Enter
until a<>#13;
write(a);/выводим
s[1]:=a; //пишем в массив
repeat  //вводим остальные
b:=readkey;
if b<>#13 then write(b);
if not(b in [#13,' '])or((b=' ')and(a<>' ')) then
//если не Enter и не пробел или пробел, но перед ним не пробел
 begin
  n:=n+1; //считаем
  s[n]:=b;//в массив
 end;
a:=b; //запоминаем, будет предыдущим
if b=#13 then writeln;
until (b=#13)or(n=1000);
writeln;
for i:=1 to n do
write(s[i]);
end.
1
wazler
2 / 2 / 0
Регистрация: 04.12.2011
Сообщений: 119
12.12.2011, 21:08  [ТС] #3
Pascal
1
2
3
4
5
6
7
8
9
    var i:integer;
    s,s1:string;
    begin
    readln(s);
    for i:= 1 to length(s)do
    if (s[i]=' ') and (s[i+1]=' ') then
    s1:=s1+'' else s1:=s1+s[i];
    writeln(s1);
    end.
при вводе задачи на сайт пишут Частичное решение.

найдите пжл ошибку
0
KirIlI
1 / 1 / 0
Регистрация: 15.12.2013
Сообщений: 6
27.03.2014, 13:43 #4
wazler, используй ansistring
0
derevyashka
1 / 1 / 0
Регистрация: 17.09.2015
Сообщений: 112
21.11.2016, 20:52 #5
Подскажите, пожалуйста, а как сделать такую же программу только с нулями. То есть, все подряд идущие нули заменить одним?
0
Puporev
Модератор
54037 / 41670 / 14750
Регистрация: 18.05.2008
Сообщений: 97,986
21.11.2016, 20:55 #6
Если задача такая же, то просто везде замените ' ' на '0'.
0
21.11.2016, 20:55
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.11.2016, 20:55
Привет! Вот еще темы с ответами:

Удалить подряд идущие одинаковые буквы - Pascal
помогите,пожалуйста, с составлением программы: Оставить в данном слове из каждого набора одинаковых букв, идущих подряд, только одну букву

Удалить подряд идущие одинаковые символы - Pascal ABC
var i: integer; s: string; procedure DS(s:string; i:integer); begin i:=1; repeat

Удалить из массива первую группу нулей идущие подряд - Pascal ABC
Удалить из массива первую группу нулей идущие подряд. Если нет нулей то выдать сообщение об ошибки.

Удалить из заданной символьной строки подряд идущие одинаковые символы - Pascal ABC
Задание: Написать программу, которая удаляет из заданной символьной строки подряд идущие одинаковые символы. var ...


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

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

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