Написать программу ** паскале используя подпрограмму (функцию или процедуру), которая...

0 голосов
49 просмотров

Написать программу на паскале используя подпрограмму (функцию или процедуру), которая вычисляет факториал (x!+y!)*z!
Заранее спасибо!


Информатика (24 баллов) | 49 просмотров
0

x,y,z-есть ограничения ?

0

Любые вводимые

Дан 1 ответ
0 голосов
1. "Школьное решение"

function f(n:integer):real;
var
  p:real;
  i:integer;
begin
  p:=1;
  for i:=1 to n do p:=p*i;
  f:=p
end;

var
  x,y,z:integer;
 
begin
  Write('Введите x,y,z через пробел: ');
  Read(x,y,z);
  Writeln((f(x)+f(y))*f(z))
end.

Примеры
Введите x,y,z через пробел: 8 12 5
57485030400

Введите x,y,z через пробел: 23 15 41
8.64815278005251E+71

2. Современное решение

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

begin
  var f:integer->BigIinteger:=n->1.To(n).Aggregate(BigInteger(1),(x,y)->x*y);
  var (x,y,z):=ReadInteger3('Введите x,y,z через пробел:');
  Writeln((f(x)+f(y))*f(z))
end.

Примеры
Введите x,y,z через пробел: 8 12 5
57485030400

Введите x,y,z через пробел: 23 15 41
864815278005250908694716268480895614135710289321049211273216000000000000
(142k баллов)
0

спасибо

0

Хорошо видно, насколько технологии программирования ушли вперед. На том же языке (конечно, обновленном), программа фактически занимает три строки, да еще и дает точное, а не приближенное значение.

0

Пожалуйста