ページ 11

c言語についての質問です

Posted: 2009年1月07日(水) 14:07
by 徳竹
c言語を用いてN×Nの二次元配列の要素を一次元配列にコピーするというプログラムを
以下の様に作ったのですが上手くいきませんどこをどう直せばいいのでしょうか?
本来1,2,3,4,5,6,7,8,9と表示したいのですが3,6,9,0,0,.....,0と表示されてしまいます。
環境はlinux,コンパイラはgccです。低レベルな質問で申し訳ありません、よろしくお願いします。
#include<stdio.h>
#define N 3
 
double a[N][N];
double b[N*N];
 
int main(void)
{int i,j,k=0;
 a[0][0]=1;
 a[0][1]=2;
 a[0][2]=3;
 a[1][0]=4;
 a[1][1]=5;
 a[1][2]=6;
 a[2][0]=7;
 a[2][1]=8;
 a[2][2]=9;

 { for(i=0;i<N;i++)
   {for(j=0;j<N;j++)
     
  b[k]=a[j];
   k++;  
   
   }}
 for(i=0;i<N*N;i++)
   printf("%f\n",b);
 return(0);


}

Re:c言語についての質問です

Posted: 2009年1月07日(水) 14:25
by 組木紙織
流し見ただけですが、中括弧の位置が違うような気がします

Re:c言語についての質問です

Posted: 2009年1月07日(水) 14:32
by kazuoni
二回目のfor文のとき、三回jをインクリメント→代入→kインクリメント
としています。
for(j=0;j<N;j++)
{
  b[k]=a[j];
  k++;
}

Re:c言語についての質問です

Posted: 2009年1月07日(水) 16:45
by 徳竹
お二人とも素早い回答ありがとうございます。上手くいきました。