Добавление пробелов в строку

Задача: 

Добавить в строку пробелы после знаков препинания, если они там отсутствуют.

Алгоритм решения задачи: 
  1. Извлечь очередной символ из строки.
  2. Если он является знаком препинания, а после него нет пробела, то скопировать часть строки до этого символа включительно, добавить пробел и скопировать оставшуюся часть строки.
Программа на языке Паскаль: 

var
    s: string;
    c: char;
    i: byte;
begin
    write('String: ');
    readln(s);
    i := 1;
    repeat
        c := s[i];
        if ((c='.')or(c=',')or(c='!')or(c='?')) and (s[i+1]<>' ') then
            s := copy(s,1,i) + ' ' + copy(s,i+1,length(s)-i);
        i := i + 1;
    until (i >= length(s));
    writeln('String: ',s);
readln
end.

Комментарии

А что вводить после запуска

А что вводить после запуска программы?

строку

Строку =_=

молю о помощи!

А как сделать такую программу без массива? Очень нужно, зависит годовая оценка, а нам сказали каждую строчку то боя снять!(
И конкретно что ввести после запуска программы?
Молю о помощи!

А здесь и нет массива.

А здесь и нет массива.

Вот.

const
  znaki = [',', '.', ':', ';', '!', '?'];
 
var
  s: string;
  i: integer;
 
begin
  readln(s);
 
  i := 1;
  while i < length(s) do
  begin
    if (s[i] in znaki) and ((s[i + 1]) <> ' ') then
      begin insert(' ', s, i+1);end;
    inc(i); write(s[i]);
  end;
end.

А Где вы видели тут массив? в

А Где вы видели тут массив?
в поле строки вводите строку со знаками препинания с пробелами после них и без пробелов. тоесть проверяйте выполнение условия задачи (если есть пробелы после знак преп то не выполнять действий иначе добавить пробел)

А как допустим вставить

А как допустим вставить пробел перед знаком препинания????

ну и...допустим 15 символов

ну и...
допустим 15 символов в строке...
аб.в.о.аб.в.а.о
находим первую точку, ставим пробел...длина строки стала 16..
находим вторую ставим пробел..длина строки 17.. и т.д.
но цикл прокручивается только 15 раз..поэтому знаки которые стоят после 15 символа не будут проверяться...

это если писать цикс с

это если писать цикс с постусловием. Используйте repeat или while

var str: String; i:

var
  str: String;
  i: Byte;
  begin
  write('str=');
  readln(str);
  for i:=1 to length(str) do
    case str[i] of
    '.',',','!','?',':':
    if str[i+1] <> ' ' then
      insert(' ',str,i+1);
    end;
  write(str);
  end.

спасибо

спасибо, второй вариант подошел