uses crt;
const nmax=20;
var a:array[1..nmax] of shortint;
n,i:byte;
s:real;{сумма в вещественных числах}
s1:longint;{в целых}
begin
clrscr;
randomize;
repeat
write('Размер массива до ',nmax,' n=');
readln(n);
until n in [1..nmax];
writeln('Введите ',n,' элементов массива, целые числа от -128 до 127:');
for i:=1 to n do
repeat
write('a[',i,']=');
readln(a[i]);
until (a[i]>=-128)and(a[i]<=127);
clrscr;
writeln('Массив:');
s:=0;s1:=0;
for i:=1 to n do
begin
write(a[i]:4);
if a[i]<0 then
begin
s1:=s1+a[i]*a[i]*a[i];{числа при умножении помнят свой тип и не переходят в Longint
при переполнении неправильный результат}
s:=s-exp(ln(abs(a[i]))*3);{вещественный считает правильно}
end;
end;
writeln;
writeln;
writeln('Сумма в вещественных=',s:0:0);
writeln('Сумма в целыых=',s1);
readln
end.