0

この C++ コードを ocaml に変換したかったのですが、構文エラーが発生しました

C++ コード

int** matrix(int n,int **a,int**b)
{
t=n/2;
a11=new int*[t];
for(i=0;i<t;i++)
    a11[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a11[i][j]=a[i][j];

a12=new int*[t];
for(i=0;i<t;i++)
    a12[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a12[i][j]=a[i][j+t];

a21=new int*[t];
for(i=0;i<t;i++)
    a21[i]=new int [t];
for(i=0;i<t;i++)
    for(j=0;j<t;j++)
        a21[i][j]=a[i+t][j];
}

Ocaml コード

let matrix n x y =
let t = n/2 in
        let a11 = Array.make_matrix t t 0 in
        for i = 0 to t-1 do
            for j = 0 to t-1 do
            a11.(i).(j) <- x.(i).(j)
            done
        done            
        and
        a12 = Array.make_matrix t t 0 in
        for i = 0 to t-1 do
            for j = 0 to t-1 do
            a12.(i).(j) <- x.(i).(j+t)
            done
        done        
        and
        a21 = Array.make_matrix t t 0 in
        for i = 0 to t-1 do
            for j = 0 to t-1 do
            a21.(i).(j) <- x.(i+t).(j)
            done
        done
;;

問題は、t の値が a12 および a21 配列内で渡されず、無制限になっていることです。

4

2 に答える 2

0

明確にするために、以下には元のコードと同じ問題があります。

# let x = 4 in () and y = 7 in ();;                
Error: Syntax error

式を定義するのでlet、これは を書くことになり() and ()、これは実際に正当な OCaml ではありません。

の正しい使い方はlet ... and次のようになります。

# let x = 4 and y = 7 in ();;
Warning 26: unused variable x.
Warning 26: unused variable y.
- : unit = ()

いくつかありますが、 1 つlet ... and let ...だけです。 in

于 2015-04-25T16:38:48.967 に答える