Дан массив b 60 заполнить целыми случайными числами найти произведение чисел кратных 7
Дан массив b 60 заполнить целыми случайными числами найти произведение чисел кратных 7
Ответ(ы) на вопрос:
Гость
//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.
Гость
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
Не нашли ответ?
Похожие вопросы