Я столкнулся с проблемой, касающейся программы ALGOL

#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