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

uses crt;

const
  ds = [' ', 'а' .. 'п', 'р' .. 'я', 'ё']; { допустимые символы }

var
  s: string;
  i, k: byte;

begin
  clrscr;
  repeat
    k := 0;
    writeln('Введите строку из слов, записанных строчными русскими буквами, разделенных пробелами:');
    readln(s);
    for i := 1 to length(s) do
      if not(s[i] in ds) then
        k := 1;
    if k = 1 then
      writeln('Введены недопустимые символы, повторите ввод.');
  until k = 0;
  while pos('  ', s) > 0 do { удалим лишние пробелы, в апострофах 2 пробела }
    delete(s, pos('  ', s), 1); { 1 удаляем }
  if s[1] = ' ' then
    delete(s, 1, 1); { удалим пробел в начале }
  { заменяем первые буквы слов на прописные }
  for i := 1 to length(s) do
    if (i = 1) or ((s[i] <> ' ') and (s[i - 1] = ' ')) then
    begin
      if s[i] in ['а' .. 'п'] then
        s[i] := chr(ord(s[i]) - 32)
      else if s[i] in ['р' .. 'я'] then
        s[i] := chr(ord(s[i]) - 80)
      else if s[i] = 'ё' then
        s[i] := 'Ё';
    end;
  write(s);
  readln

end.

Leave a Comment

+ 66 = 67