#algol
#алгол
Вопрос:
begin
% computes factorial n iteratively %
integer procedure factorial( integer value n ) ;
if n < 2
then 1
else begin
integer f;
f := 2;
for i := 3 until n do f := f * i;
f
end factorial ;
for t := 0 until 10 do write( "factorial: ", t, factorial( t ) );
end.
Я скомпилировал код, но каждый раз он выдает ошибку. Смотрите
$a68g main.alg
5 then 1
1
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
9 for i := 3 until n do f := f * i;
1
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
13 for t := 0 until 10 do write( "factorial: ", t, factorial( t ) );
1
a68g: syntax error: 1: possibly a missing or erroneous separator nearby.
Ответ №1:
Вы используете компилятор Algol 68, но код написан не на Algol 68.
Algol 60 и Algol 68 — это разные языки с разным синтаксисом.
Вам нужно будет перевести свой код на algol 68, чтобы использовать a68g, или найти компилятор algol 6o.
Ответ №2:
Попробуйте marst … » MARST — это переводчик с алгола на Си. Он автоматически переводит программы, написанные на алгоритмическом языке Algol 60, на язык программирования C. «
Ответ №3:
Если бы вы закодировали это в Algol 68, возможным решением могло бы быть
BEGIN FOR t TO 10
DO OP F = (INT n) INT: (n < 1 | 1 | n * F (n - 1));
print ((F t, new line))
OD
END