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

Ответы

Ответ дал: DexelGamer
0
//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.

Ответ дал: Аноним
0
Можно даже сделать random(2)+1...
Ответ дал: DexelGamer
0
А почему бы и нет? В условии ведь не было ничего сказано.
Ответ дал: Аноним
0
Да хотя бы потому, что если не указано, задача должна позволять задавать числа во всем диапазоне представления данных. Либо, надо указывать верхнюю границу таких данных, после которых может появиться неконтролируемое переполнение.
Ответ дал: Аноним
0
В Вашем варианте предельный случай (теоретически возможный) - это все 60 элементов на максимуме. Что дает даже для random(13)+1 величину порядка 13 в шестидесятой степени.
Ответ дал: Аноним
0
Чему вас только учат...?
Ответ дал: Аноним
0
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
Вас заинтересует