2017杭電C++考試最后一題代碼(自做倚评,非標(biāo)準(zhǔn)答案)

CNM,C++

辣雞語言护奈,毀我青春丙者,拉我績點

本題可以用2種方法new二維數(shù)組
然而我考試的時候完全寫錯了
剛考完的時候因為時間不夠沒來得及寫完代碼感到超級懊惱
第一感覺是這題上課講過類似的
如果上課講過new二維數(shù)組的話,基本就沒難度了悬秉,就是寫起來比較麻煩而已
我忘了老師有沒有講過怎么new二維數(shù)組澄步,印象里好像沒有
不過我這種上課不聽的學(xué)渣的印象也不準(zhǔn)就是了……
后來想想,大佬們不僅厲害在會寫難的代碼和泌,他們寫簡單的代碼也比一般人要快啊
時間不夠村缸,就是能力不足
>技不如人,甘拜下風(fēng)
代碼是我自己寫的武氓,如果與標(biāo)準(zhǔn)答案有出入梯皿,或者出現(xiàn)了各種奇怪的BUG仇箱,本人概不負(fù)責(zé)
*代碼可直接拷貝運(yùn)行

#include<iostream>
#include<assert.h>

using namespace std;

class Matrix
{
public:
    Matrix()
    {
        row=0;
        col=0;
        p=NULL;
    }
    Matrix(int h,int l)//構(gòu)造函數(shù)
    {
        row=h;
        col=l;
        //p=new int[row][col];錯誤的寫法
        p=new int*[row];//該寫法內(nèi)存不連續(xù)
        for(int i=0;i<row;i++)
            p[i]=new int[col];
        set();
    };
    /*Matrix(Matrix &c)//復(fù)制構(gòu)造函數(shù),可不寫索烹,不影響題中要求的功能實現(xiàn)
    {
        row=c.row;
        col=c.col;
        p=new int*[row];
        for(int i=0;i<row;i++)
            p[i]=new int[col];
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                p[i][j]=c.p[i][j];
    };*/
    ~Matrix()//析構(gòu)函數(shù)
    {
        for(int i=0;i<row;i++)//由于內(nèi)存不連續(xù)工碾,需要分別釋放
            delete []p[i];
        delete []p;
    };
    void set()
    {
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                cin>>p[i][j];
    };
    void show();
    Matrix& operator=(const Matrix &m);
    friend Matrix operator+(const Matrix &m,const Matrix &n);
    friend Matrix operator-(const Matrix &m,const Matrix &n);
private:
    int row;//行
    int col;//列
    //int* p;錯誤的寫法
    int** p;
};
void Matrix::show()
{
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<col;j++)
            cout<<p[i][j]<<' ';
        cout<<endl;
    }
}
Matrix& Matrix::operator=(const Matrix &m)
{
    if(this==&m)
        return *this;
    for(int i=0;i<row;i++)
            delete []p[i];
    delete []p;
    row=m.row;
    col=m.col;
    p=new int*[row];
    for(int i=0;i<row;i++)
        p[i]=new int[col];
    for(int i=0;i<row;i++)
        for(int j=0;j<col;j++)
            p[i][j]=m.p[i][j];
    return *this;
}
Matrix operator+(const Matrix &m,const Matrix &n)
{
    assert(m.row==n.row&&m.col==n.col);
    Matrix a;
    a.row=m.row;
    a.col=m.col;
    a.p=new int*[a.row];
    for(int i=0;i<a.row;i++)
        a.p[i]=new int[a.col];
    for(int i=0;i<a.row;i++)
        for(int j=0;j<a.col;j++)
            a.p[i][j]=m.p[i][j]+n.p[i][j];
    return a;
}
Matrix operator-(const Matrix &m,const Matrix &n)
{
    assert(m.row==n.row&&m.col==n.col);
    Matrix a;
    a.row=m.row;
    a.col=m.col;
    a.p=new int*[a.row];
    for(int i=0;i<a.row;i++)
        a.p[i]=new int[a.col];
    for(int i=0;i<a.row;i++)
        for(int j=0;j<a.col;j++)
            a.p[i][j]=m.p[i][j]-n.p[i][j];
    return a;
}
int main()
{
    Matrix a(2,2);//為方便測試,采用2*2的矩陣
    Matrix b(2,2);
    Matrix c;
    Matrix d;
    c=a+b;
    c.show();
    d=a-b;
    d.show();
    return 0;
    //CNM百姓,這么多代碼才勉強(qiáng)完成要求的功能渊额,考試的時候根本來不及好嘛
}
#include<iostream>
#include<assert.h>

using namespace std;

class Matrix
{
public:
    Matrix()
    {
        row=0;
        col=0;
        p=NULL;
    }
    Matrix(int h,int l)//構(gòu)造函數(shù)
    {
        row=h;
        col=l;
        p=new int[row*col];//該寫法內(nèi)存連續(xù)
        set();
    };
    /*Matrix(Matrix &c)//復(fù)制構(gòu)造函數(shù),可不寫垒拢,不影響題中要求的功能實現(xiàn)
    {
        row=c.row;
        col=c.col;
        p=new int[row*col];
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                p[i*col+j]=c.p[i*col+j];
    };*/
    ~Matrix()//析構(gòu)函數(shù)
    {
        delete []p;
    };
    void set()
    {
        for(int i=0;i<row;i++)
            for(int j=0;j<col;j++)
                cin>>p[i*col+j];
    };
    void show();
    Matrix& operator=(const Matrix &m);
    friend Matrix operator+(const Matrix &m,const Matrix &n);
    friend Matrix operator-(const Matrix &m,const Matrix &n);
private:
    int row;//行
    int col;//列
    int* p;//注意這里的不同
};
void Matrix::show()
{
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<col;j++)
            cout<<p[i*col+j]<<' ';
        cout<<endl;
    }
}
Matrix& Matrix::operator=(const Matrix &m)
{
    if(this==&m)
        return *this;
    delete []p;
    row=m.row;
    col=m.col;
    p=new int[row*col];
    for(int i=0;i<row;i++)
        for(int j=0;j<col;j++)
            p[i*col+j]=m.p[i*col+j];
    return *this;
}
Matrix operator+(const Matrix &m,const Matrix &n)
{
    assert(m.row==n.row&&m.col==n.col);
    Matrix a;
    a.row=m.row;
    a.col=m.col;
    a.p=new int[a.row*a.col];
    for(int i=0;i<a.row;i++)
        for(int j=0;j<a.col;j++)
            a.p[i*a.col+j]=m.p[i*a.col+j]+n.p[i*a.col+j];
    return a;
}
Matrix operator-(const Matrix &m,const Matrix &n)
{
    assert(m.row==n.row&&m.col==n.col);
    Matrix a;
    a.row=m.row;
    a.col=m.col;
    a.p=new int[a.row*a.col];
    for(int i=0;i<a.row;i++)
        for(int j=0;j<a.col;j++)
            a.p[i*a.col+j]=m.p[i*a.col+j]-n.p[i*a.col+j];
    return a;
}
int main()
{
    Matrix a(2,2);//為方便測試旬迹,采用2*2的矩陣
    Matrix b(2,2);
    Matrix c;
    Matrix d;
    c=a+b;
    c.show();
    d=a-b;
    d.show();
    return 0;
    //CNM,這么多代碼才勉強(qiáng)完成要求的功能求类,考試的時候根本來不及好嘛
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奔垦,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子尸疆,更是在濱河造成了極大的恐慌椿猎,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,270評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寿弱,死亡現(xiàn)場離奇詭異犯眠,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)症革,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,489評論 3 395
  • 文/潘曉璐 我一進(jìn)店門筐咧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人噪矛,你說我怎么就攤上這事量蕊。” “怎么了艇挨?”我有些...
    開封第一講書人閱讀 165,630評論 0 356
  • 文/不壞的土叔 我叫張陵残炮,是天一觀的道長。 經(jīng)常有香客問我雷袋,道長吉殃,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,906評論 1 295
  • 正文 為了忘掉前任楷怒,我火速辦了婚禮蛋勺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸠删。我一直安慰自己抱完,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,928評論 6 392
  • 文/花漫 我一把揭開白布刃泡。 她就那樣靜靜地躺著巧娱,像睡著了一般碉怔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上禁添,一...
    開封第一講書人閱讀 51,718評論 1 305
  • 那天撮胧,我揣著相機(jī)與錄音,去河邊找鬼老翘。 笑死芹啥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铺峭。 我是一名探鬼主播墓怀,決...
    沈念sama閱讀 40,442評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卫键!你這毒婦竟也來了傀履?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,345評論 0 276
  • 序言:老撾萬榮一對情侶失蹤莉炉,失蹤者是張志新(化名)和其女友劉穎钓账,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體絮宁,經(jīng)...
    沈念sama閱讀 45,802評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡官扣,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,984評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羞福。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,117評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡蚯涮,死狀恐怖治专,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情遭顶,我是刑警寧澤张峰,帶...
    沈念sama閱讀 35,810評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站棒旗,受9級特大地震影響喘批,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜铣揉,卻給世界環(huán)境...
    茶點故事閱讀 41,462評論 3 331
  • 文/蒙蒙 一饶深、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逛拱,春花似錦敌厘、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,011評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽饱狂。三九已至,卻和暖如春宪彩,著一層夾襖步出監(jiān)牢的瞬間休讳,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,139評論 1 272
  • 我被黑心中介騙來泰國打工尿孔, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留俊柔,地道東北人。 一個月前我還...
    沈念sama閱讀 48,377評論 3 373
  • 正文 我出身青樓纳猫,卻偏偏與公主長得像婆咸,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子芜辕,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,060評論 2 355

推薦閱讀更多精彩內(nèi)容