三角矩阵,C ++,getter和setter,双指针

时间:2019-02-21 06:34:51

标签: c++

从我的教授那里得到了一个用C ++编写的程序,并被要求将结构更改为一个类,私有化int **数据,然后添加getter和setter。但是,我之前从未使用过双指针,也不知道如何进行操作。我所做的只是修改Triangle头文件,但是我什至不知道我是否正确地做到了。帮助将不胜感激!

// Triangle.h

#ifndef TRIANGLE_H
#define TRIANGLE_H

class Trngl{
private:
    int **data;
public:
    int size;
    void setData(int **d){**data = **d;};
    int getData(){return **data;};
};

#endif /* TRIANGLE_H */

// main.cpp

//System Libraries Here

#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;

//User Libraries Here
#include "Triangle.h"

//Global Constants Only, No Global Variables
//Like PI, e, Gravity, or conversions

//Function Prototypes Here
Trngl *fillStr(int);
void prntStr(Trngl *);
void destroy(Trngl *);

//Program Execution Begins Here
int main(int argc, char** argv) {
    //Set the random number seed
    srand(static_cast<unsigned int>(time(0)));

    //Declare all Variables Here
    int row=10;

    //Input or initialize values Here
    Trngl *triangle=fillStr(row);

    //Output Located Here
    prntStr(triangle);

    //Return Memory
    destroy(triangle);

    //Exit
    return 0;
}

void destroy(Trngl *tri){
    for(int row=0;row<tri->size;row++){
        delete []tri->data[row];
    }
    delete []tri->data;
    delete tri;
}

void prntStr(Trngl *tri){
    cout<<endl;
    for(int row=0;row<tri->size;row++){
        for(int col=0;col<row;col++){
            cout<<tri->data[row][col]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
}

Trngl *fillStr(int n){
    //Allocate a structure to hold the Matrix
    Trngl *tri=new Trngl;
    //Create the 2-D allocated pointer
    tri->data=new int*[n];
    for(int row=0;row<n;row++){
        tri->data[row]=new int[row+1];
    }
    tri->size=n;
    //Fill the array with values
    for(int row=0;row<n;row++){
        for(int col=0;col<row;col++){
            tri->data[row][col]=rand()%90+10;
        }
    }
    //return the Array pointer
    return tri;
}

1 个答案:

答案 0 :(得分:0)

**数据并不复杂,请考虑三角形的外观: 00 10 11 20 21 22

因此,您有许多数组或*行,但是如何存储它们呢? 数组对此很有用,数组的类型是什么?它是一个数组数组,或者作为一个数组是一个指针,它是指针的指针。 如果您不想编写它,或者有点令人困惑,则可以使用typedef并将其用作普通变量。

您可以编写一个真实的构造函数:Triangle(** d)并作为析构函数〜Triangle()来代替集合 如上所述:小心使用析构函数,您要删除每个指针,而不仅仅是外部指针。

然后:将属于该类的原型放在标题中