{ PascalABC.Net } const nn=100; var a:array[1..nn] of integer; n:integer;
procedure aInit(p,q:integer); { Инициализирует массив случайными целыми значениями из интервала [p;q] } var i,k:integer; begin Randomize; k:=q-p+1; for i:=1 to n do a[i]:=Random(k)+p end;
procedure aOut(k:integer); { Выводит в строку значения эементов массива, отводя элементу k позиций } var i:integer; begin for i:=1 to n do Write(a[i]:k); Writeln end;
function aMax():integer; { Возвращает максимальное значение элемента в массиве } var i,m:integer; begin m:=a[1]; for i:=2 to n do if m<a[i] then m:=a[i]; aMax:=m end;
function SumBeforeLastPositive():integer; { Возвращает сумму элементов массива, расположенных до последнего положительного элемента } var i,j,s:integer; flag:boolean; begin i:=n; flag:=false; while (not flag) and (i>=1) do begin flag:=(a[i]<=0); if not flag then Dec(i) end; s:=0; for j:=1 to i-1 do s:=s+a[j]; SumBeforeLastPositive:=s end;
procedure aShrink(pa,pb:integer); { Процедура сжимает массив, удаляя из него элементы, модуль которых находится в интервале [pa;pb]. Освободившийся элементы заполняются нулями. } var i,j,k:integer; flag:boolean; begin k:=0; i:=1; while i<=n do if a[i] in [pa..pb] then begin if k=0 then k:=i-1; j:=i+1; flag:=false; while (not flag) and (j<=n) do begin flag:=not (a[j] in [pa..pb]); if not flag then Inc(j); end; if flag then begin Inc(k); a[k]:=a[j]; i:=j+1 end else i:=n+1 end else begin Inc(k); a[k]:=a[i]; Inc(i) end; for i:=k+1 to n do a[i]:=0 end;
var p,q,k,b,c:integer; begin Write('Укажите количество членов в массиве: '); Read(n); Write('Укажите интервал значений элементов массива: '); Read(p,q); Write('Укажите интервал исключаемых элементов массива: '); Read(b,c); Write('Укажите количество позиций для вывода значений элемента: '); Read(k);
aInit(p,q); Write('Исходный массив'); aOut(k); Writeln('Значение максимального элемента равно ',aMax()); Writeln('Сумма до последнего положительного равна ',SumBeforeLastPositive()); Writeln('Сжатый массив'); aShrink(b,c); aOut(k) end.
Тестовое решение: Укажите количество членов в массиве: 15 Укажите интервал значений элементов массива: -6 9 Укажите интервал исключаемых элементов массива: -2 3 Укажите количество позиций для вывода значений элемента: 3 Исходный массив 7 7 7 -1 5 5 -5 6 0 -1 3 2 -4 1 8 Значение максимального элемента равно 8 Сумма до последнего положительного равна 35 Сжатый массив 7 7 7 5 5 -5 6 -4 8 0 0 0 0 0 0
Const n=20; var a:array[1..n]of integer; p,s:real; i:integer; begin p:=1;{начальное значение р, чтобы при умножении произведение не было =0} for i:=1 to n do begin a[i]:=random(20); {массив заполняется случайными числами [0;20)} write(a[i]:4); {массив выводится на экран} if i<=10 then {если номер элемента <=10} s:=s+a[i] {то считаем сумму элементов} else p:=p*a[i]; {иначе, т.е если номер элемента >10 считаем произв ] end; writeln; writeln('сумма = ',s:4:0,' p= ',p:4:0) {выводим сумму и произвед на экран} ; writeln('среднее = ',(p+s)/2); {выводим среднее} end.
sum: real;
begin
readln(n, k);
sum:=16;
for i:=1 to n-1 do
sum:=sum+k/i*3;
writeln(sum);
end.