• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            華劍緣
            一切都在這個(gè)過(guò)程中獲得,將那些目標(biāo)埋藏于心中
            posts - 19,comments - 20,trackbacks - 0

            實(shí)驗(yàn) 3 對(duì)象數(shù)組與對(duì)象指針

            1 .實(shí)驗(yàn)?zāi)康?/span>

            (1) 掌握數(shù)組與指針的定義與使用方法。

            (2) 理解數(shù)組與指針的存儲(chǔ)分配與表示。

            (3) 學(xué)習(xí)向函數(shù)傳遞數(shù)組的方法。

            (4) 學(xué)習(xí)用指針和引用向函數(shù)傳遞參數(shù)。

            (5) 學(xué)習(xí)靜態(tài)數(shù)據(jù)成員和靜態(tài)成員函數(shù)的使用。

            (6) 理解友元與友元函數(shù)的作用與使用方法。

            2 .實(shí)驗(yàn)基本要求

            (1) 設(shè)計(jì)一個(gè)矩陣類 Matrix( 矩陣由二維數(shù)組實(shí)現(xiàn) ) ,有分配空間和對(duì)矩陣賦值的功能。

            (2) 練習(xí)將這個(gè)矩陣類的對(duì)象作為參數(shù)傳送到函數(shù) Mul() ,用普通、指針和引用三種方法實(shí)現(xiàn),并要注意這三種方式的區(qū)別。

            ??? ①直接傳送: Mul(Matrix a , Matrix b) 。實(shí)際上只是傳送值,在函數(shù)中針對(duì)對(duì)象的任何修改均不影響該對(duì)象本身。

            ??? ②指針傳送: Mul(Matrix *pa Matrix *pb) 。要注意指針的級(jí)數(shù)。

            ??? ③引用傳送: Mul(Matrix & a , Matrix & b) 。這種調(diào)用將影響參數(shù)的實(shí)際值。

            (3) Mul() 函數(shù)實(shí)現(xiàn):完成對(duì)傳送的兩個(gè) Matrix 對(duì)象的相乘運(yùn)算。下面給出矩陣相乘的算法:

            ??? ①矩陣 a[i][j] 與矩陣 b[x][y] 相乘,條件是 j==x 。

            ??? ②乘積是一個(gè)新的矩陣 c[i][y] ,其中 c[i][y] 的值是∑ (a[i][k]* b[k][y]) ,其中 K 0,l,…,j

            (4) Matrix 類中定義一個(gè)靜態(tài)數(shù)據(jù)成員,記錄當(dāng)前的所有 Matrix 對(duì)象的數(shù)量。

            (5) 定義一個(gè)友元函數(shù)實(shí)現(xiàn)轉(zhuǎn)置的功能。轉(zhuǎn)置是指將數(shù)組中 a[i][j] a[j] [i] 的值對(duì)調(diào)。

            3 .實(shí)驗(yàn)基本步驟

            (1) 建立一個(gè)工程。在工程中定義一個(gè) Matrix 類,在構(gòu)造函數(shù)中根據(jù)參數(shù)創(chuàng)建數(shù)據(jù)成員:一個(gè)二維數(shù)組。提示:用構(gòu)造函數(shù)記錄二維數(shù)組的大小 (unsigned int x , unsigned int y) 。類中實(shí)際定義的二維數(shù)組的數(shù)據(jù)成員是一個(gè)指針 ( 二級(jí)指針 ) int **pMatrix 。 在構(gòu)造函數(shù)中根據(jù)傳送的參數(shù)為這個(gè)二維數(shù)組分配空間: pMatrix newint[x][y] 。

            (2) 設(shè)計(jì)成員函數(shù),完成對(duì)數(shù)組的賦值的功能。本例中定義的成員函數(shù)為 SetValue(unsigned int x unsigned int y , int value)

            (3) 參考以上的說(shuō)明,以常用三種方式實(shí)現(xiàn)向 Mul() 函數(shù)傳送參數(shù),并返回矩陣相乘的結(jié)果。

            (4) 在類中定義一個(gè)靜態(tài)的數(shù)據(jù)成員 ObjectAliveNo ,記錄當(dāng)前共有幾個(gè) Matrix 類的對(duì)象。實(shí)現(xiàn)方法:可以在對(duì)象的構(gòu)造函數(shù)中向該數(shù)據(jù)成員報(bào)告 ( 使靜態(tài)數(shù)據(jù)成員加 1) ;在析構(gòu)函數(shù)中也向該數(shù)據(jù)成員報(bào)告 ( 使靜態(tài)數(shù)據(jù)成員減 1) 。并要注意,在程序開始時(shí),給這個(gè)靜態(tài)數(shù)據(jù)成員賦初值。

            (5) Matrix 類中定義一個(gè)友元函數(shù),使其具有對(duì) Matrix 類的對(duì)象內(nèi)的數(shù)組進(jìn)行轉(zhuǎn)置的功能。




            ?

            #include? < iostream >
            using ? namespace ?std;
            class ?Matrix
            {
            private :
            ????
            int ?rows,columns;
            public :
            int ? ** pMatrix;
            Matrix(?
            int ?rows, int ?columns);
            Matrix(Matrix
            & ?);
            ~ Matrix();
            int ?GetRows();
            int ?GetColumns();
            void ?SetValue();
            void ?Mul(Matrix? & ?a,Matrix? & ?b);


            }
            ;

            int ?Matrix::GetRows() { return ?rows;} ;
            int ?Matrix::GetColumns() { return ?columns;} ;

            // 構(gòu)造函數(shù)
            Matrix::Matrix( int ?x, int ?y)
            {
            rows
            = x;
            columns
            = y;
            pMatrix
            = new ? int * ?[x];
            for ( int ?i = 0 ;?i < x;?i ++ )
            ??pMatrix[i]
            = new ? int ?[y];
            }


            // 析構(gòu)函數(shù)
            Matrix:: ~ Matrix()
            {
            for ( int ?i = 0 ;i < columns;i ++ )
            ??delete?[]pMatrix[i];
            ????delete[]?pMatrix;
            }


            // 賦值函數(shù)
            void ?Matrix::SetValue()
            {
            ????
            int ?i,j,value;
            ????
            for (?i = 0 ;?i < rows;?i ++ )
            {
            ??
            for (?j = 0 ;?j < columns;?j ++ )
            ??
            {
            ???cout
            << " " << i << " " ;
            ???cout
            << " " << j << " 列: " ;
            ???cin
            >> value;
            ???cout
            << endl;
            ???pMatrix[i][j]
            = value;
            ??}

            }

            }


            // 拷貝構(gòu)造函數(shù)
            Matrix::Matrix(Matrix & ?M)
            {
            for ( int ?i = 0 ;?i < M.rows;?i ++ )
            ??
            for ( int ?j = 0 ;?j < M.columns;?j ++ )
            ???pMatrix[i][j]
            = M.pMatrix[i][j];????? /// 這樣對(duì)么?
            }


            void ?Matrix::Mul(?Matrix? & ?a,?Matrix? & ?b)
            {
            Matrix?c(a.GetRows(),b.GetColumns());
            int ?temp = 0 ;
            ????
            for ( int ?ai = 0 ;ai < a.GetRows();ai ++ )
            {

            ??
            for ( int ?bj = 0 ;bj < b.GetColumns();bj ++ )
            ??
            {
            ???
            for ( int ?aj = 0 ;aj < a.GetColumns();aj ++ )
            ????temp
            = temp + a.pMatrix[ai][aj] * b.pMatrix[aj][bj];
            ???c.pMatrix[ai][bj]
            = temp;
            ???temp
            = 0 ;
            ??}

            }

            for ( int ?i = 0 ;i < c.GetRows();i ++ ) { // 輸出相乘后的矩陣
            ???cout << ' \n ' ;
            ??
            for ( int ?j = 0 ;j < c.GetColumns();j ++ )
            ???cout
            << c.pMatrix[i][j] << " ?? " ;
            ?}

            }

            // 主函數(shù)
            int ?main()
            {
            Matrix?Ma(
            2 , 2 ),Mb( 2 , 2 );
            Ma.SetValue();
            Mb.SetValue();

            for ( int ?i = 0 ;i < Ma.GetRows();i ++ )
            {
            ????cout
            << ' \n ' ;
            ??
            for ( int ?j = 0 ;j < Ma.GetColumns();j ++ )
            ???cout
            << Ma.pMatrix[i][j] << " ? " ;
            }

            cout
            << endl;
            Matrix?Mc(
            2 , 2 );
            Mc.Mul(Ma,Mb);
            /*
            for(int?i=0;i<Mc.GetRows();i++)
            {
            ????cout<<'\n';
            ??for(int?j=0;j<Mc.GetColumns();j++)
            ???cout<<Mc.pMatrix[i][j]<<"?";
            }
            */

            return ? 0 ;
            }

            posted on 2006-04-03 16:21 華劍緣 閱讀(1370) 評(píng)論(0)  編輯 收藏 引用

            只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。
            網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問(wèn)   Chat2DB   管理


            91精品国产综合久久婷婷| 欧美激情精品久久久久久| 亚洲欧美成人综合久久久| 精品国产乱码久久久久久1区2区 | 久久精品中文字幕久久| 国产成人AV综合久久| 囯产精品久久久久久久久蜜桃 | 人妻少妇久久中文字幕一区二区| 久久精品无码专区免费| 国产免费久久精品99re丫y| 无码国内精品久久人妻蜜桃| 免费观看久久精彩视频| 97精品伊人久久久大香线蕉 | 久久久久人妻一区精品 | 99精品久久精品一区二区| 久久精品国产99国产精品| 精品国产一区二区三区久久久狼| 无码精品久久一区二区三区| 996久久国产精品线观看| 久久精品中文无码资源站| 国产亚洲成人久久| AV无码久久久久不卡蜜桃| 一本色道久久综合亚洲精品| 久久无码一区二区三区少妇 | 亚洲AV无码久久精品成人| 亚洲国产小视频精品久久久三级| 欧美亚洲另类久久综合| 2020久久精品国产免费| 狠狠色婷婷久久一区二区 | 久久久久亚洲国产| 久久影院亚洲一区| 久久精品国产福利国产琪琪| 伊人久久精品线影院| 99久久精品免费看国产| 国内精品伊人久久久久影院对白| 国内精品久久久人妻中文字幕| 亚洲色大成网站WWW久久九九| 亚洲国产精品无码久久久秋霞2| 亚洲国产欧洲综合997久久| 天天爽天天狠久久久综合麻豆 | 久久综合九色综合久99|