编写一个通用程序,将二维数组含有最大元素的列与第0列元素对调

来源:互联网 发布:apache cxf 3.1.8下载 编辑:程序博客网 时间:2024/06/06 16:44
试建立一个类MAT,用于完成该功能。具体要求如下:
(1)私有数据成员
int m,n:存放二维数组实际的行数和列数。
int a[40][40]:用于存放原始数组和目标数组。注意:在此,将数组定义得稍大,实际只用部分数组空间,即只用数组的前m行,每行只用前n列的空间。
(2)公有成员函数
MAT(int y[][40],int rows,int cols):构造函数,用rows、cols分别初始化m、n,用数组y的值初始化数组a。
void change():完成调换,注意必须是针对m行n列的二维数组的通用算法。
#include <iostream>using namespace std;class MAT {public:MAT(int y[][40], int rows, int cols);public:void change();void output();private:int m_Rows;int m_Cols;int m_Y[40][40];};MAT::MAT(int y[][40], int rows, int cols) : m_Rows(rows), m_Cols(cols) {for (int i = 0;i < rows;i++)for (int j = 0;j < cols;j++){m_Y[i][j] = y[i][j];}}void MAT::change(){int max = 0,max_cols;for (int i = 0;i < m_Rows;i++)for (int j = 0;j < m_Cols;j++){if (m_Y[i][j] > max){max_cols = j;max = m_Y[i][j];}}for (int i = 0;i < m_Rows;i++){swap(m_Y[i][0], m_Y[i][max_cols]);}}void MAT::output(){for (int i = 0;i < m_Rows;i++){for (int j = 0;j < m_Cols;j++){cout << m_Y[i][j] <<"  ";}cout << endl;}}void swap(int &A, int &B){int temp;temp = A;A = B;B = temp;}int main(){int a[][40] = { {1, 5, 9, 8} ,{ 7, 8, 3, 2}, {1, 6, 8, 1} };MAT mat(a,3,4);mat.change();mat.output();system("pause");return 0;}


void output():按二维方式输出数组。

(3)在主函数中定义二维数组b[40][40],存放原始数据,用上述数据初始化该数组b。定义一个MAT类的对象mtx,用数组b及数组的实际行数和列数初始化对象mtx,完成对该类的测试,并输出调换前后的二维数组数据。


阅读全文
0 0
原创粉丝点击