2017-09-16 17 views
-4

だから私は入力nにしようとし、このようにフォーマットされたサイズn-1の配列を作るここにシンプルで小さなコードを持っている:n = 7なぜここでalah [j + 1]は何もしませんか?

1 0 0 0 0 0 <- The first line is always like this 
1 2 1 0 0 0 
0 1 2 1 0 0 
0 0 1 2 1 0 
0 0 0 1 2 1 
0 0 0 1 -2 1 <- The last line is always like this 

コードの

例は次のとおりです。

#include <iostream> 
#include <fstream> 
using namespace std; 

int main(){ 
    int n,i,j; 
    cout<<"input jumlah partisi : "; cin>>n; cout<<endl; 

    int alah [n-1] [n-1]; 

    for(i=0;i<=n-2;i++){ 
     for(j=0;j<=n-2;j++){ 
      alah[i][j]=0; 
      if(i==j){ 
       alah[i][j+1]=1; // <<<<<< Here is the problem 
       alah[i][j]=2; 
       alah[i][j-1]=1; 
      } 

      //Last line 
      if(i==n-2){ 
       if(i==j){ 
        alah[i][j]=1; 
        alah[i][j-1]=-2; 
        alah[i][j-2]=1; 
       } 
      } 

      //First line 
      if(i==0){ 
       if(i==j){ 
        alah[i][j]=1; 
       } 
      } 

     } 

    } 

    for (i=0;i<=n-2;i++){ 
     for(j=0;j<=n-2;j++){ 
      cout<<alah[i][j]<<" "; 
     } 
     cout<<endl; 
    } 

    cout<<endl; 
    return 0; 
} 

代わりに、それは、これを出力する(私はこれは、Windows、Linux、およびIdeone試してみた):

1 0 0 0 0 0 
1 2 0 0 0 0 
0 1 2 0 0 0 
0 0 1 2 0 0 
0 0 0 1 2 0 
0 0 0 1 -2 1 

はここで何が起こりますか?追加の注記:alah [i] [j + 1]をalah [i] [j-n + 1]に変更すると、ほぼ完全なコードになり、現在の代わりに前の行を塗りつぶしていることがわかりますライン。ところで、コードの不完全さについては、私はより効率的なものを作りましたが、なぜこの特定のコードが機能しないのかを知りたいのです。ありがとうございました。私は、最初に0に全体の配列を初期化するため、問題を回避しましたでしょう

alah[i][j]=0; 

+2

私は、std名前空間を使用して '絶対に使用しないでくださいデバッガ – Fureeish

+0

の使用方法を学習することをお勧めします;'。代わりに 'use std :: cout;'などを使って、あなたが望むそれぞれの*個々の*オブジェクトを使うことができます。 – o11c

+0

なぜフィールドサイズがn-1ですか? –

答えて

0

あなたのバグは、すべての作業は、次のループの繰り返しによって取り消されていることです。

関連する問題