Сформировать массив произвольной длины заполненный вещественными числами в диапазоне от 1...

0 голосов
42 просмотров

Сформировать массив произвольной длины заполненный вещественными числами в диапазоне от 1 до 100 найти и вывести на экран произведение всех элементов а также максимальное значение элементов


Информатика (19 баллов) | 42 просмотров
0

можно решение пжлст

Дано ответов: 2
0 голосов
Правильный ответ
1. Короткое современное решение

// PascalABC.NET 3.2, сборка 1362 от 14.12.2016
// Внимание! Если программа не работает, обновите версию!

begin
  var n:=ReadInteger('n=');
  var a:=SeqRandom(n,1000, 100000);
  var b:=a.Select(x->x/1000).ToArray; b.Println;
  Writeln('П=',b.Aggregate(1.0,(p,q)->p*q));
  Writeln('Max=',b.Max)
end.

Пример
n= 10
64.006 47.819 87.225 6.856 32.112 93.963 11.053 50.93 18.959 14.785
П=871460676775803
Max=93.963

2. А так (примерно) учат в большинстве школ

const
  nn=1000; // предел для кол-ва элементов
var
  n,i:integer;
  a:array[1..nn] of real;
  max,p:real;
begin
  Write('n='); Read(n);
  p:=1;
  max:=0; // меньше меньшего
  for i:=1 to n do
    begin
    a[i]:=(Random(99001)+1)/1000;
    Write(a[i],' ');
    p:=p*a[i];
    if a[i]>max then max:=a[i]
    end;
  Writeln;
  Writeln('П=',p);
  Writeln('Max=',max)
end.
(150k баллов)
0 голосов

Так подойдет?

const n=5;
var  a,b: array[1..n] of single;
  p: real;
  m: single;
  i: integer;
begin  randomize;
  m:=-0.1;
  p:=1;
  for i:=1 to n do begin;
     a[i]:=random+random(1,99);
     writeln (a[i]);
     p:=p*a[i];
     if a[i]>m then m:=a[i];
  end;
  writeln; 
  writeln ('Произведение элементов = ',p);
  writeln ('Максимальный элемент = ',m);
end.  
----------результат-------------
30.57125
58.69655
77.24072
21.7612
29.61645

Произведение элементов = 89328084.4036029
Максимальный элемент = 77.24072

(3.5k баллов)