egorkozlovcev
19.07.2021 15:03

Вмассиве из n элементов, заданных случайным образом из промежутка [-20; 60], найдите произведение всех элементов, больших 20 (pascal abc)

Нажмите на рекламу ниже и сразу увидите ответ
Популярные вопросы:
Ответ:
ilyapleshakov29
09.10.2020 10:43

Из сложностей может возникнуть только генерация случайного значения. Функция random(x) возвращает случайное число от 0 до x-1. Когда функция возвращает 0 (минимальное значение), нам нужно, чтобы оно превратилось в 20. Будем отнимать 20 от значения функции random(x):

a[i] := random(x) - 20;

Самое большое число, которое мы хотим получить - 60. Так как мы отнимаем 20, самое большое число, которое должна вернуть функция random(x) равно 80. Значит, x равен 81:

a[i] := random(81) - 20;


Кстати, произведение может получаться слишком большим, а тип данных integer может хранить числа не больше 32767. Поэтому мы должны хранить произведение как longint. Оно позволяет хранить числа до 2^{31}-1


Код

var

 a: array[1..1000] of integer;

 i, n: integer;

 ans: longint;


begin

 read(n);

 ans:=1;

 for i:=1 to n do

 begin

   a[i]:=random(81)-20;

   if a[i] > 20 then ans:=ans*a[i];

 end;

 writeln(ans);

end.

0,0(0 оценок)
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота