Pascal. Задача 5-3
Удалить из введенной пользователем строки все пробелы.
Решение
Вариант 1. Посимвольное копирование из исходной строки в результирующую.
var
i: integer;
ins, outs: string;
begin
write('Введите строку: ');
read(ins);
outs := '';
for i := 1 to Length(ins) do
if ins[i] <> ' ' then
outs := outs + ins[i];
writeln(outs);
end.
Вариант 2. Более эффективный алгоритм с использованием функций поиска символа в строке и копирования подстроки. Ищем в исходной строке слово (т.е. непрерывную последовательность символов, отличных от пробела) и копируем в результирующую строку найденное слово функцией Copy.
var
ins, outs : string;
pos1, pos2, currentindex : integer;
begin
write('Введите строку: ');
read(ins);
currentindex := 1;
outs := '';
while currentindex <= Length(ins) do begin
pos1 := currentindex; // Начинаем искать первый символ не равный пробелу
while (ins[pos1] = ' ') AND (pos1 < Length(ins)) do
Inc(pos1);
if ins[pos1] = ' ' then break; // Если оставшиеся символы пробелы, то прекращаем
pos2 := Pos(' ', ins, pos1 + 1); // Ищем пробел после первого символа, не равного пробелу
if pos2 > 0 then
// Копируем слово в результат
outs := outs + Copy(ins, pos1, pos2 - pos1)
else begin
// Копируем оставшуюся часть исходной строки в результат
outs := outs + Copy(ins, pos1, Length(ins) - pos1 + 1);
break;
end;
currentindex := pos2;
end;
writeln(outs);
end.