Задан одномерный массив целочисленных данных А в одном из форматов (Byte, Word, Shortint, Integer или Longint). Реализовать обработку массива, как указано в варианте. Длина массива N <= 20. Исходные данные задать самостоятельно, учитывая формат элементов массива A. Исходные данные должны вводиться с проверкой на область допустимых значений. Тип результата определяется из контекста задачи. Найти сумму кубов всех отрицательных элементов массива A={a[i]} - Pascal(Паскаль)

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.

Leave a Comment

− 2 = 1