2017-02-21 6 views
0

私はクラマー線形解決をしようとしている、と私はちょうどそのように、マトリックスの列を置き換える機能を書いた:行列を返す方法は?

void replacecol(int c, int n, float mat_in[n][n], float vect_in[n], 
     float mat_out[n][n]) 
{ 
    int i, j; 

    for (i = 0; i < n; i++) 
    { 
     for (j = 0; j < n; j++) 
     { 
      if (j == c) 
      { 
       mat_out[i][j] = vect_in[j]; 
      } 
      else 
      { 
       mat_out[i][j] = mat_in[i][j]; 
      } 
     } 
    } 
} 

しかし、それは現在無効であり、そして私はそれを返すようにしたいです私はこの関数を呼び出すときにそれの値でmat_out ...どのように私はそれを行うことができますか?

+4

なぜ返品しますか?あなたはそれから何を得なければなりませんか? – StoryTeller

+2

Cで配列を返すことはできません。関数は既に正しく設定されています –

+2

配列/行列を返すことはできませんが、ポインタは返すことができます。 – LPs

答えて

6

関数に2つの行列を使用することは避けることができます。あなたは、単に次のことができます。

void replacecol(int c, int n, float mat_in[n][n], float vect_in[n])) 
{ 
    int i; 

    for (i = 0; i < n; i++) 
    { 
     mat_in[i][c] = vect_in[i]; 
    } 
} 

float mat_in[n][c]は、それがポインタfloat(*)[]あるので、パラメータの変更が渡されたマトリックス上に作られています。

+0

Whoa、私はreplacecol()が渡された行列自体を修飾することを知らなかった...それはJavaのようだと思った。それを達成するためのリターンが必要だ。 –

+0

ポインターの力があなたにあることを祈ってください(そしてそれらについて何かを勉強してください;)) – LPs

関連する問題