Дан массив b 60 заполнить целыми случайными числами найти произведение чисел кратных 7

llerochka1 llerochka1    2   15.08.2019 23:20    0

Ответы
alan4ik1324 alan4ik1324  04.10.2020 21:54
1. Современное эффективное решение

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

begin
  var a:=ArrRandom(60,1,99); a.Println;
  Writeln('П=',a.Where(x->x mod 7=0).Aggregate(BigInteger(1),(x,y)->x*y))
end.

Пример
79 23 80 37 68 93 7 77 16 29 97 73 36 33 36 98 91 67 28 37 91 17 42 28 83 85 33 28 8 28 61 85 76 92 78 31 82 91 43 35 21 7 27 83 82 57 36 28 13 42 88 38 54 73 36 62 80 52 54 82
П=6217461925940365408788480

2. А вот решение, каким обычно обучают в школе

var
  a:array[1..60] of integer;
  i:integer;
  p:real;
begin
  Randomize;
  p:=1;
  for i:=1 to 60 do
    begin
    a[i]:=Random(99)+1;
    Write(a[i],' ');
    if a[i] mod 7=0 then p:=p*a[i]
    end;
  Writeln;
  Writeln('П=',p)
end.

Пример
61 17 39 73 2 48 22 17 42 22 82 37 29 59 70 11 43 29 21 31 31 10 44 27 11 68 76 39 68 84 64 39 78 64 25 32 80 1 92 28 98 5 27 28 82 92 20 59 49 98 93 1 33 97 85 52 72 13 62 33
П=1.91341954266624E+15
ПОКАЗАТЬ ОТВЕТЫ
марина1925 марина1925  04.10.2020 21:54
//Pascal ABC.Net
Var b:array[1..60] of longint;i:longint;pr:int64;
Begin
pr:=1;
for i:=1 to 60 do
begin
b[i]:=random(99)+1;
if (b[i] mod 7=0) then pr*=b[i];
end;
writeln('Получившийся массив:');
for i:=1 to 60 do
write(b[i],' ');
writeln;
writeln('Произведение чисел кратных 7 равно ',pr);
End.

//Если не пашет (ошибка компиляции):
//1) В строке if (b[i] mod 7=0) then pr*=b[i]; замени pr*=b[i]; на pr:=pr*b[i];
//2) Если всё равно ошибка компиляции, попробуй int64 заменить на longint
//3) Если всё равно ошибка компиляции, longint переименуй в integer.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Информатика