Предмет: Информатика,
автор: DeNKA72
дан массив b 60 заполнить целыми случайными числами найти произведение чисел кратных 7
Ответы
Автор ответа:
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.
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...
Автор ответа:
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
// 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
Похожие вопросы
Предмет: Математика,
автор: ulia69583
Предмет: Физика,
автор: annachuvakova20
Предмет: Алгебра,
автор: charock
Предмет: Обществознание,
автор: Luba181
Предмет: Информатика,
автор: Н0911