2017-10-17 4 views
-4

n * nの行列があります。与えられた整数については、kというように、対角線から要素を出力する必要があります。ピクチャから行列と対角線がCのタスク

enter image description here

1,12,23,34:K = 0のため、それはベクトルを印刷しなければなりません。

どうすればよいですか?

+1

を一つのループを使用することができますあなたの質問は何ですか?これまでに試したことのコードを追加してください。 –

+1

あなたはa)実際に質問をし、b)あなたがすでに行ったことを私たちに見せてくれるのでなければ、あなたは投票するつもりです。 – RPGillespie

+0

@TonyTannous私の質問はどうやってこれを行うのですか... –

答えて

-1

擬似コード:

function(martrix, k){ 
    rowmax = matrix.length; 
    colmax = matrix[0].length; 
    output = [] 
    for i = 0 to max(rowmax, colmax): 
     if k > 0 : x = i + k 
     if k < 0 : y = i + k 
     if(x < rowmax and y < colmax): 
      output.append(matrix[x][y]) 

} 
1

簡単な方法は、次のよう

#include <stdio.h> 

#define N 4 

int main(void) 
{ 
    int a[N][N] = 
    { 
     { 1, 2, 3, 4 }, 
     { 11, 12, 13, 14 }, 
     { 21, 22, 23, 24 }, 
     { 31, 32, 33, 34 } 
    }; 

    int k; 

    printf("Select a diagonal (%d, %d): ", -N, N); 

    scanf("%d", &k); 

    if (k < 0) 
    { 
     for (int i = -k, j = 0; i < N; i++, j++) 
     { 
      printf("%d ", a[i][j]); 
     } 
    } 
    else 
    { 
     for (int i = 0, j = k; j < N; i++, j++) 
     { 
      printf("%d ", a[i][j]); 
     } 
    } 

    putchar('\n'); 

    return 0; 
} 

を見ることができるプログラム出力が

Select a diagonal (-4, 4): 2 
3 14 

または

Select a diagonal (-4, 4): -2 
21 32 
012のようになります。別のループを有する

またはその代わりのif-else文のあなたが例えばとして

int i = k < 0 ? -k : 0; 
int j = k > 0 ? k : 0; 

for (; i < N && j < N; i++, j++) 
{ 
    printf("%d ", a[i][j]); 
} 

putchar('\n'); 
+0

新しいコーナーについては、私はSOがチュートリアルサイトではないと言いますが、これをどのように伝えることができますか? :) – Michi

+0

@Michiなぜそれはチュートリアルサイトではありませんか?私はそれをチュートリアルサイトと見なします。回答の質問私はプログラミングを学んでいます:) –

+0

私は80%以上が私に同意すると思います。多分私が間違っていることを知っている人:)。この種の質問は、とにかくSOの質問ではありません。 @Michi Maybe。 – Michi

関連する問題