function dele (s : string) : string; var l,i : integer; begin l := Length (s); i := l; while i>0 do begin if (s[i] = ' ') and (i<l) then if s[i+1] = ' ' then begin delete (s,i,1); i := i -1; end; i := i -1; end; Result := s; end;
var a : string; begin readln (a); writeln (dele(a)); end.
school24mir23
01.11.2021
Из-за дурацкого сбоя этого сервиса при сохранении ответа пропал получасовой набор формул в модераторов удалить этот ответ.
P.S. Набираешь ответ - как по минному полю идешь. При нажатии "сохранить" неизвестно что произойти может. Например, при случайном нажатии "сохранить ответ" (каждый может ошибиться) нет анализа, того, что в поле набора данных не пусто и весь этот набор формул мгновенно "улетает в никуда". Я уж не говорю о постоянных "Вы были отключены от сервера".
И еще. Поскольку автор вопроса не виноват, даю два "голых" (без формул) решения.
1. Рекурсивная программа (как не надо решать подобные задачи)
{ рекурcивная программа } function prod(a,b:integer):real; var i:integer; p:real; begin p:=1; for i:=a to b do p:=p*i; prod:=p end;
function pow2(n:integer):integer; var i,p:integer; begin p:=1; for i:=1 to n do p:=p*2; pow2:=p end;
function an(n:integer):real; begin if n=1 then an:=0.5 else an:=an(n-1)*n/prod(pow2(n-1)+1,pow2(n)) end;
var s:real; i,n:integer; begin Write('n='); Read(n); s:=0; for i:=1 to n do s:=s+an(i); Writeln(s) end.
Пример: n=4 0.58348214285829
2. А вот рекуррентная, которую можно написать, если немного подумать.
{ рекуррентная программа } var a,p,s:real; i,j,n,lo,hi:integer; begin Write('n='); Read(n); a:=0.5; s:=a; lo:=1; hi:=2; for i:=2 to n do begin p:=1; lo:=hi+1; hi:=hi*2; for j:=lo to hi do p:=p*j; a:=a*i/p; s:=s+a end; Writeln(s) end.
Пример n=4 0.58348214285829
maruska90
01.11.2021
begin var n:=readInteger('Число элементов массива-'); var a:=ArrRandom(n,-50,50); a.Println; for var i:=1 to n-2 do a[i]:=2*(i+1); a.Println end.
Пример Число элементов массива- 10 -40 4 -49 0 -47 41 49 33 -31 -1 -40 4 6 8 10 12 14 16 18 -1
begin var n:=readInteger('Число элементов массива-'); var a:=ArrRandom(n,-50,50); a.Println; var i1:=a.IndexMax; var i2:=a.IndexMin; Writeln(a[min(i1,i2)+1:max(i1,i2)].Where(x->x<0).Sum) end.
Пример Число элементов массива- 18 -45 -30 -49 -44 34 -5 -12 -28 22 14 -39 -20 -46 50 6 21 20 -47 -194
begin var a:=ReadlnString('Введите строку;').ToCharArray; // было сделано так только ради получения массива символов, // который на самом деле только мешает Writeln(a); if Pos('...',a.JoinIntoString)>0 then Writeln('Троеточие в массиве есть') else Writeln('Троеточия в массиве нет') end.
Пример Введите строку; 6ye$% DFDRT..drrtert...DFDGD [6,y,e,$,%, ,D,F,D,R,T,.,.,d,r,r,t,e,r,t,.,.,.,D,F,D,G,D] Троеточие в массиве есть
var l,i : integer;
begin
l := Length (s);
i := l;
while i>0 do
begin
if (s[i] = ' ') and (i<l) then
if s[i+1] = ' ' then
begin
delete (s,i,1);
i := i -1;
end;
i := i -1;
end;
Result := s;
end;
var
a : string;
begin
readln (a);
writeln (dele(a));
end.