Pascal. Задача 5-10

Записать в массив слова из введенной пользователем строки с не более, чем десятью словами. Вывести массив вместе с номерами слов

Примечание: Между словами может быть более одного пробела.

Решение

var
  s :string;
  i, p, cnt : integer;
  A : array[1..10] of string;
begin
  write('Введите текст: ');
  read(s);
  cnt := 0;
  i := 1;
  while i <= Length(s) do begin
    // Пропускаем подряд идущие пробелы
    while (i < Length(s)) AND (s[i] = ' ') do Inc(i);
    // Ищем позицию пробела, ограничивающего слово справа
    p := Pos(' ', s, i + 1); 
    if p > 0 then begin
      // Копируем слово в элемент массива
      Inc(cnt);
      A[cnt] := Copy(s, i, p - i);
      i := p + 1;
      end
    else if i <= Length(s) then begin
      // последнее слово строки в элемент массива
        if s[i] <> ' ' then begin
          Inc(cnt);
          A[cnt] := Copy(s, i, Length(s) - i + 1);
        end;
        break;
      end;
  end;
  for i := 1 to cnt do writeln(i, ': ', A[i]);
end.