0

今、私は試験(大学)の準備をしていて、自分の演習を作成することを考えていました. マトリックス内の場所 (構造体への二重ポインターで実装) が私の構造体の型のオブジェクトで満たされているパスカル三角形をプログラミングすることを考えました。

これが私のコードです:

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

int main(){
    struct Ferrari{
    string Modell;
    int Baujahr;
    int PS;
    };
Ferrari **matrix = new Ferrari* [5];
for(int i=0; i<5; i++){
    matrix[i]=new Ferrari[i+1];
}
matrix[0][0].Modell="F40";
matrix[0][0].Baujahr=2012;
matrix[0][0].PS = 210;
matrix[1][0].Modell=matrix[1][1].Modell="Enzo";
matrix[1][0].Baujahr=matrix[1][1].Baujahr=2000;
matrix[1][0].PS=matrix[1][1].PS=210;
for(int i=2; i<5; i++){
    for(int j=0; j<=i; j++){
        matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;
        matrix[i][j].Baujahr=matrix[i-1][j].Baujahr + matrix[i-1][j-1].Baujahr;
        matrix[i][j].PS=matrix[i-1][j].PS + matrix[i-1][j-1].PS;
    }
}
for(int i=0; i<5; i++){
    for(int j=0; j<=i; j++){
        cout << matrix[i][j].Modell << "   ";
        cout << matrix[i][j].Baujahr << "   ";
        cout << matrix[i][j].PS << "   ";
    }
    cout << endl;
}
system("pause");
return 0;

}

プログラムは多くの奇妙なことを行いますが、それがすべきことではありません。コンパイラーは OK と言いますが、実行するとエラー コードが表示されます。

その時点で、どういうわけか私の変数 i の値は -33651 ...

コードの問題がどこにあるか教えていただけますか?私は知っています、プログラムには実際の機能はありません...ダブルポインター、構造体、文字列(文字列の追加...)で少し練習したかっただけです。

前もって感謝します!

よろしくお願いします、

マヌエル

4

1 に答える 1

1

これはバグです:

for(int j=0; j<=i; j++){
    matrix[i][j].Modell=matrix[i-1][j].Modell + matrix[i-1][j-1].Modell;

-1whenのインデックスを持つ配列にアクセスしようとしているためですj = 0

于 2012-02-22T09:28:04.263 に答える