Предмет: Информатика,
автор: maksimka09102011
Составить алгоритм и написать программы нахождения произведения чисел, модуль которых меньше 10 из 20 вводимых с клавиатуры целых чисел. В языке Паскаль!
Ответы
Автор ответа:
0
var a,p,i:integer;
begin
p:=1;
for i := 1 to 20 do
begin
read(a);
if (abs(a) < 10)
then p := p * a;
end;
write(p);
end.
Аноним:
Допустим мы ввели 20 раз число 9. Произведение равно 9^20, что примерно составляет 1.216х10^19. На переменной типа integer получаем переполнение - и неверный результат. Переменная типа int64, даже если он есть в той версии, которой пользуется автор ответа, позволяет записать число порядка 0.9 22х10^19, т.е. для двадцати девяток тоже произойдет переполнение. Вот такой компот!
Автор ответа:
0
PascalABC.NET 3.4.2, сборка 1884 от 24.11.2018
Внимание! Если программа не работает, обновите версию!
begin
var a := ReadSeqInteger(20).Where(t -> Abs(t) < 10)
.Aggregate(BigInteger(1), (p, q)-> p * q).Println
end.
Пример
9 9 9 9 9 9 9 9 9 9 9 9 9 -9 -9 -9 -9 9 9 9
12157665459056928801
Похожие вопросы
Предмет: Алгебра,
автор: maga1091
Предмет: Информатика,
автор: mallkuper42
Предмет: Физика,
автор: Marikbek7804
Предмет: Алгебра,
автор: Суслик123456789
Предмет: Математика,
автор: Астудио