Объяснение:
Задание 1
program bukva;
const R=[' ','.',',',';',':','?','!','-']; // разделители
var
s,bukv:string;
i,kol,len:integer;
procedure UpCaseRus(var s:string);
{русские в верхний регистр}
var i:integer;
begin
for i:=1 to length(s) do
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;
begin
readln(s);
readln(bukv);
UpCaseRus(s);
UpCaseRus(bukv);
For i:=length(s) downto 2 do
if ((s[i] in R) and (s[i-1] in R)) then delete(s,i,1);
len:=length(s);
kol:=0;
for i:=len downto 1 do
begin
if s[i] in R then
if s[i+1]=bukv then kol:=kol+1;
end;
if s[1]=bukv then kol:=kol+1;
writeln('Слов на букву '+bukv+' ',kol);
readln;
end.
Задание 2
const r=[' ','.',',',';',':','?','!','-'];
var
s:string;
i,kol,d:integer;
begin
readln(s);
len:=length(s);
kol:=0; d:=0;
For i:=length(s) downto 2 do
if ((s[i] in r) and (s[i-1] in r)) then delete(s,i,1);
for i:=1 to length(s) do
begin
if s[i] in r then kol:=kol+1
else if (s[i] in ['0'..'9']) then d:=d+1;
end;
writeln('Слов всего ',kol+1);
writeln('Цифр в тексте ',d);
readln;
end.
Первый условно назовем "я - компьютер". Вы превращаетесь в Исполнителя и с железной тупостью выполняете алгоритм - инструкцию за инструкцией, каждый раз выписывая на бумаге результат. Если у Вас много времени и Вы, как и компьютер, не делаете ошибок, то рано или поздно нужный результат будет получен.
Второй назовем "я - человек". Вы напрягаете свой мозг и определяете, что именно делает алгоритм, после чего проводите нужные вычисления. В этом варианте обычно к результату приходят быстрее.
Попробуем второй путь.
Вначале полагаем, что s=0, n=12.
Далее следует цикл, в котором i последовательно принимает значения 1, 2, ... 10.
s=s+"что-то" говорит нам о том, что в s накапливается некая сумма, для чего s предварительно обнулялось.
А что именно накапливается? n-i. При проходах по циклу это будут значения n-1, n-2, ... n-10.
У нас n=12, поэтому в s будет накапливаться сумма 11+10+9+...+2. Или, это удобнее записать как 2+3+4+...+9+10+11.
Это сумма арифметической прогрессии из 10 членов и ее можно найти по формуле суммы арифметической прогрессии. Если лениво вспоминать формулу, можно просто сложить эти числа. А можно поступить, как поступил в свое время Гаусс: заметить, что 2+11=13, 3+10=13, 4+9=13 и таких пар 5. И найти результат 5×13=65. Такая вот победа мозга над рутиной)))
ответ: 65