2017-11-27 8 views
-1

すぐに2つの質問がありますが、なぜですか? は、ここに私のコードです:!隣接行列の作成に何か問題があります

#include <stdio.h> 
int main() 
{ 
    int i,j; 
    int n; 
    int adjmatrix[n][n]; 
    char ans; 
    printf("How many vertices?"); 
    scanf("%d",&n); 
    for (i=0;i<n;i++) 
    { 
     for (j=0;j<n;j++) 
     { 
      printf("Are vertex %d and %d adjacent?",i,j); 
      scanf("%c",&ans); 
      if (ans=='Y' || ans=='y') 
      { 
       adjmatrix[i][j]=1; 
      } 
      else adjmatrix[i][j]=0; 
     } 
    } 
    return 0; 
} 

事前のおかげであなたは正しい

enter image description here

+2

' int型adjmatrix [N] [N]:
はを見てください。使用する前に変数を初期化する必要があります。 – babon

+2

'scanf("%d "、&n);'最初の 'scanf("%c "、&ans);')の入力バッファに改行を残す –

+0

http://sekrit.de/webdocs/c/beginners scanfを使用する前に-guide-away-from-scanf.html – babon

答えて

0

。出力は奇妙です。
問題はscanfです。 scanf("%2c", ans);を使用してください。助けて頂きました。
しかし、それでも私はループが反復されないという問題があった 正しく。

説明:

理由は行列でした。行列は可変であればそのサイズなので、メモリを割り当てていません。 したがって、行列のエントリを1に設定すると、変数jに影響します。

ソリューション:

あなたが動的にメモリを割り当てるための問題を解決する必要があります。 ;ここで `UB

関連する問題