面向对象部分_203

小伙伴们, 还在为不知道怎么下手而头疼吗, 我们程序竞赛协会来帮你们啦~\(≧▽≦)/~啦啦啦。

另外, 如果有对编程含有浓厚兴趣的同学, 我们随时欢迎你们的加入哟~~。

以下代码仅供参考, 如果你直接copy导致课设不及格, 我们可不服责任哟!!!(如果有问题的话, 可以在下面留言哦, 话说up主编程水平就这样, 有错轻喷啊)


策划:谭兆飞

编程:管怀文

协助:一号人员要求给她打码╮(╯_╰)╭,干脆二号也打码好了o(╯□╰)o(其实只是提供了题目啦~)



面向对象部分_203

#include <iostream>


using namespace std;


class Mat
{
private:
    int M, N;
    int a[110][110];
public:
    Mat(int**, int, int);
    void process();
    void show();
};


Mat::Mat(int** b, int m, int n)
{
    M = m;
    N = n;
    for (int i = 0; i < m; i++)
    {
        for (int j = 0; j < n; j++)
        {
            a[i][j] = b[i][j];
        }
    }
}


void Mat::process()
{
    int x = 0, y = 0, t = 0;
    for (int i = 0; i < M; i++)            // 二维数组搜索一遍寻找最大的一个,用x, y来存储最大值的横坐标和纵坐标
    {
        for (int j = 0; j < N; j++)
        {
            if (a[x][y] < a[i][j])
            {
                x = i;
                y = j;
            }
        }
    }
    t = a[x][y];                           // 最大数与规定位置书的交换
    a[x][y] = a[0][0];
    a[0][0] = t;


    x = 0, y = 0;
    for (int i = 0; i < M; i++)           // 同上, 可以多开两个整型变量, 然后在一次搜索中结束,
    {                                     // 但分两次时间复杂度不变 而且便于阅读
        for (int j = 0; j < N; j++)
        {
            if (a[x][y] > a[i][j])
            {
                x = i;
                y = j;
            }
        }
    }
    t = a[x][y];
    a[x][y] = a[M - 1][N - 1];
    a[M - 1][N - 1] = t;
}


void Mat::show()
{
    for (int i = 0; i < M; i++)
    {
        for (int j = 0; j < N; j++)
        {
            cout << a[i][j] << " ";
        }
        cout << endl;
    }
}


int main()
{
    int a[3][4] = {{1, 4, 5, 6}, {7, 2, 10, 11}, {8, 9, 12, 3}};
    int* b[3] = {a[0], a[1], a[2]};
    Mat ma(b, 3, 4);
    ma.process();
    ma.show();
    return 0;
}


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值