n * nの行列があります。与えられた整数については、kというように、対角線から要素を出力する必要があります。ピクチャから行列と対角線がCのタスク
:1,12,23,34
:K = 0のため、それはベクトルを印刷しなければなりません。
どうすればよいですか?
n * nの行列があります。与えられた整数については、kというように、対角線から要素を出力する必要があります。ピクチャから行列と対角線がCのタスク
:1,12,23,34
:K = 0のため、それはベクトルを印刷しなければなりません。
どうすればよいですか?
擬似コード:
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])
}
簡単な方法は、次のよう
#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');
を一つのループを使用することができますあなたの質問は何ですか?これまでに試したことのコードを追加してください。 –
あなたはa)実際に質問をし、b)あなたがすでに行ったことを私たちに見せてくれるのでなければ、あなたは投票するつもりです。 – RPGillespie
@TonyTannous私の質問はどうやってこれを行うのですか... –