2016-04-16 5 views
0

基本行列演算のための単純なライブラリ関数を作成しています。あまりにも多くのパラメータが渡されましたが、一方で私は渡されたすべてのパラメータが必要であり、関数内でそれらを直接取得する方法は他にありません。行列の追加のためにライブラリ関数を作成しているときに、関数に渡されるパラメータの最小数は何ですか?

ので、ここでのコードスニペットです:もちろん

void mat_add(int r1, int c1, int m1[][c1], int r2, int c2, int m2[][c2],int res[][c1]) 
{ 
    if (r1 == r2 && c1 == c2) 
    { 
     for (int i = 0; i < r1; i++) 
     { 
      for (int j = 0; j < c1; j++) 
      { 
       res[i][j] = m1[i][j] + m2[i][j]; 
      } 
     } 
    } 
    else 
    { 
     fprintf(stderr, "ERROR:matrix sizes are not same\n"); 
     exit(-1); 
    } 
} 

は、その本当の必要なパラメータを渡す必要があり、
が、私は本当に私がやっているものを知らないが、それが減少したりすることができ、あまりにも多くありますない、
渡されるパラメータの数を減らして、関数内のそれらのデータから必要なデータ(#rowsと#columns)を得る方法はありますか?

+0

if(r1 == c2 && c1 == r2) 'ではないはずですか?つまり、m1の行はm2の列に一致し、m1の列はm2の行に一致する必要がありますか? –

+0

1つの言語を選択します。違いがあります。いずれにせよ、最小数はゼロ(0)である。 –

+0

今後、句読点を使用することを検討してください。 – MikeC

答えて

1

パラメータの最小数は1です。操作を実行するために必要なすべてのパラメータを含む構造体または構造体へのポインタ。

+0

@DarthRubik構造体を使用していることは、私が持っていたオプションの1つでしたが、行列を作成するたびに構造体(作成)それを渡す。私は普通の方法で行こうと思っていた。人々が行列を持っているか、行列を作成している間に直接2次元配列を作成するので、どんな演算でも2次元配列を送るが構造体は送らない。ええ、構造体を使用して良い意見の....ですので、私はちょうど(2次元配列を使用して)それを行う場合、私はちょうど見ているとパラメータを減らすことができますかしない.. –

関連する問題