0

マトリックスのクラスを作成し、新しい 2D マトリックスを作成して表示しようとしています。このコードをコンパイルして実行すると、プログラムが終了し、画面に何も表示されません。私は問題を理解できません.どんな助けでも大歓迎です.thanks

#include <iostream>
using namespace std;

//making a class of matrix
class Matrix{
private:
    int **array;
    int row,col;
public:
    void initialize(int r,int c);  //function to initialize the array
    //dynamically
    Matrix(int r,int c);           //this function initializes a matrix of r
    //rows and c columns
    ~Matrix();                    //delete the matrix by this
    void display_matrix();         //display matrix
    int get_rows();                //get rows of matrix
    int get_columns();             //get columns of matrix
};

//function to initialize the matrix
void Matrix::initialize(int r,int c)
{
    r=row;
    c=col;

    array=new int*[r];         //creating a 1D array dynamically
    for (int i=0;i<r;i++)
    {
        array[i]=new int[c];      //making the array 2D by adding columns to it
    }

    for (int i=0;i<r;i++)
    {
        for (int j=0;j<c;j++)
        {
            array[i][j]=0;        //setting all elements of array to null
        }
    }
}

//initializing NULL matrix
Matrix::Matrix()
{
    initialize(0,0);
}

//setting row aand columns in matrix
Matrix::Matrix(int r,int c)
{
    initialize(r,c);   //function used to initialize the array
}

//deleting matrix
Matrix::~Matrix()
{
    for (int i=0;i<row;i++)
    {
        delete[]array[i];
    }
    delete[]array;
}

int Matrix::get_rows()
{
    return row;        //return no. of rows
}

int Matrix::get_columns()
{
    return col;      //return columns
}

//display function
void Matrix::display_matrix()
{
    int c=get_columns();
    int r=get_rows();
    for (int i=0;i<r;i++)
    {
        for (int j=0;j<c;j++)
        {
            cout<<array[i][j]<<" ";      //double loop to display all the elements of
            //array
        }
        cout<<endl;
    }
}

int main()
{
    Matrix *array2D=new Matrix(11,10);   //making a new 2D matrix
    array2D->display_matrix();   //displaying it
    system("PAUSE");
    return 0;
}
4

2 に答える 2

3

そうじゃないかな

void Matrix::initialize(int r,int c)
 {
 r=row;   //Shouldn't it be row = r;
 c=col;   //Shouldn't it be col = c;
...
}
于 2012-11-28T09:28:28.763 に答える
3

あなたのバグは次の場所にありinitializeます:

void Matrix::initialize(int r,int c)
{
    r=row;
    c=col;

    ...

関数変数「r」と「c」を、クラス変数「row」と「col」の値に設定しています。私はあなたが反対のことをするつもりだったと確信しています。

また、これがコンパイルした実際のコードであると確信していますか? クラスに次の宣言がありませんMatrix()

于 2012-11-28T09:30:32.733 に答える