1

anxn 行列を与えるベクトルのベクトルがあります。for ループを使用してマトリックス内のすべての要素を合計すると、奇妙な結果が得られます。

関連するコードは次のとおりです。

int main(){
while(cin){

int n = 0;
int sum = 0;

cout << "\n\nEnter a size (n) for the matrix: ";
cin >> n;

vector<vector<int> > matrix ( n, vector<int> ( n ) );
int k = 0;

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        matrix[i][j] = k++;
}

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        cout<< setw ( 3 ) << matrix[i][j] <<' ';
        cout<<'\n';
}

for ( int i = 0; i < n; i++ ) {
    for ( int j = 0; j < n; j++ )
        sum += matrix[i][j];
}
cout << "\nThe sum of the elements of the matrix is: " << sum << ' \n';
}
}

それで、奇妙なのは...「合計」の値を出力すると、何らかの理由で、値に「8202」が追加されることです。n = 1 を指定すると 08202 が出力され、n of 3 の場合は 368202 が出力されます。

何か案は?Code::Blocks でデバッガーを試しましたが、成功しませんでした。

4

1 に答える 1

2

を出力します' \n'。の前のスペースに注意してください\n。それは2文字/文字列です。ただし、'その前後に s を置くと、2 つの文字が 1 つの文字として解釈され、奇妙な結果が得られます。に変更し" \n"ます。

ボーナス EPIC-PHUNZIES コンテンツ: どうやって見つけたの? うーん...他に何がありますか?合計は正しく出力されたので、その後何かが間違っているに違いありません。そして、合計を出力した後の唯一のことは何ですか? あなたは出力' \n'します...まあ、それの何が問題なのですか?そしてバム!問題が解決しました。

于 2012-06-26T06:39:32.267 に答える