Преобразовать все идущие подряд пробелы в один - Pascal ABC
Формулировка задачи:
Считывайте по одному символу, и со второго шага проверяйте, не равен ли элемент пробелу, если да, то проверьте, не равен ли элемент предыдущему,
если равен то не записывайте очередной элемент в массив, который будем выводить, не забудьте записать первый символ.
Дана строка, Вам требуется преобразовать все идущие подряд пробелы в один.
Формат входных данных
Длина строки не превосходит 1000.
Формат выходных данных
Выведите измененную строку.
Пример входных и выходных данных
Входные данные Выходные данные
␣d␣hky␣k ␣d␣hky␣k
␣␣tnbnv␣␣l ␣tnbnv␣l
Решение задачи: «Преобразовать все идущие подряд пробелы в один»
textual
Листинг программы
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.
Объяснение кода листинга программы
- Ввод данных:
- Пользователю предлагается ввести символы строки, включая пробелы.
- Ввод продолжается до тех пор, пока не будет введен символ #13 (Enter) или не будет достигнут лимит в 1000 символов.
- Введенные символы сохраняются в переменной
s.
- Обработка символов:
- Символ, введенный пользователем, сохраняется в переменной
a. - Если введенный символ не равен #13, он выводится на экран.
- Если введенный символ равен #13, выводится символ #13.
- Если введенный символ является пробелом и предыдущий символ не является пробелом, то этот символ также сохраняется в массиве
s. - Переменная
aобновляется, чтобы содержать последний введенный символ. - Если введенный символ равен #13, переменная
aобновляется, чтобы содержать символ #13.
- Символ, введенный пользователем, сохраняется в переменной
- Вывод данных:
- Выводятся все символы из массива
s, начиная с первого символа и до конца массива.
- Выводятся все символы из массива