-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;
:
私は、std名前空間を使用して '絶対に使用しないでくださいデバッガ – Fureeish
の使用方法を学習することをお勧めします;'。代わりに 'use std :: cout;'などを使って、あなたが望むそれぞれの*個々の*オブジェクトを使うことができます。 – o11c
なぜフィールドサイズがn-1ですか? –