先日は、見苦しい質問をしてしまい、申し訳ありませんでした。自分で考えて次のようなプログラムを作成しました。以下に実現したいことを記載しました。何が足りないのか、アドバイスをいただけないでしょうか。
前提・実現したいこと
二次元配列で各行のゼロでない数値の左端と右端を導出するプログラムは途中まではうまくかけました。
しかし、ゼロでない数値の列番号がすべて記憶されて出力してしまいます。なお、容量としては、各行の非ゼロでない数値の列番号の最小値と最大値を記憶することでうまくいくのだろうとは予想できたのですが、そのプログラム
ソースコードの二次元配列は例です。すべての二次元配列に対して成立させたいです。
出力結果
0
1
3
0
1
2
0
3
4
該当のソースコード
C言語
1ソースコード
#include <stdio.h>
#define n 5
void main()
{
int i=0,j=0, k=0, m=0;
int matrix1[n][n] = {{1,2,0,3,0} ,{4,5,0,0,0} ,{0,0,6,0,0} ,{7,0,0,8,0} ,{0,0,0,0,9}}; int d1[n]; int d2[n]; for(i=0; i < n; i++) { for(j=0; j < i; j++) { if(matrix1[i][j]!=0 ) { d1[i] = j; /0からi-1番目までの非ゼロでない列番号 printf("%d\n", d1[i]); } } for(j=i; j<n; j++) { if(matrix1[i][j]!=0 ) { d2[i] = j; /iからn-1番目までの非ゼロでない列番号 printf("%d\n", d2[i]); } } }
}
[推奨していない質問] https://teratail.com/help/avoid-asking
[質問するときのヒント] https://teratail.com/help/question-tips