Другие языки программирования и технологии

найти произведение элементов массива, расположенных после максимального по модулю элемента

program N86643489;
const
 imax: shortint = -1;
var
 n, i: byte;
 a: array of double;
 p: double;
begin
 randomize;
 n := random(91) + 10;
 setlength(a, n);
 writeln('Дан массив (', n, '):');
 for i := 0 to n - 1 do
 begin
  a[ i ] := (random(10001) - 5000) / 100;
  write(a[ i ]:8:2);
 end;
 writeln;
 for i := Low(a) to High(a) do
  if (imax < 0) or (abs(a[ i ]) > abs(a[imax])) then
  begin
   imax := i;
   p := 0;
  end
  else
   p := (p + ord(p = 0)) * a[ i ];
 if p = 0 then
  writeln('После максимального по модулю нет элементов')
 else
  writeln('Произведение элементов после максимального по модулю = ', p:0:6);
 write(#13#10'Для завершения работы нажмите Enter...');
 readln;
 finalize(a)
end.

P.S. Программа Арсена вычисляет произведение элементов, включая максимальный по модулю, не выводит результат и имеет риск переполнения типа integer при умножении.
Dima Migunov
Dima Migunov
51 590
Лучший ответ
program prj1;
const N = 10;
var i, max, max_ind,P: integer;
   arr: array[1..N] of integer;
begin
   randomize;
for i:=1 to N do arr[ i ]:=random(30) - 15;
   max:=abs(arr[1]);
for i:=1 to N do
   if abs(arr[ i ]) > max then begin
      max:=arr[ i ];
      max_ind:=i;
   end;
   P:=1;
for i:=max_ind to N do P:=P * arr[ i ];
   readln;
end.

Похожие вопросы