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] Троеточие в массиве есть
Из-за дурацкого сбоя этого сервиса при сохранении ответа пропал получасовой набор формул в модераторов удалить этот ответ.
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.
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]
Троеточие в массиве есть