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

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

Leave a Comment

99 − = 90