m0_67622567 2022-03-04 18:46 采纳率: 100%
浏览 44
已结题

编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。

完全没有解题思路
编写一个在具有m行n列的二维数组各元素中找出最大元和最小元并显示在屏幕上的函数模板,并通过主函数对它进行调用以验证其正确性。例如,可设计该函数模板的原型为: template void maxMin (Type *A, int m, int n );

  • 写回答

1条回答 默认 最新

  • _GX_ 2022-03-04 19:13
    关注
    #include <iostream>
    #include <algorithm>
    #include <iomanip>
    #include <random>
    
    using namespace std;
    
    template <typename T>
    void maxMin(T *a, int m, int n)
    {
        int size = m * n;
        cout << "max: " << *max_element(a, a + size) << ' '
             << "min: " << *min_element(a, a + size)
             << endl;
    }
    
    // A better version
    template <typename T, int M, int N>
    void maxMin2(T (&a)[M][N])
    {
        int size = M * N;
        cout << "max: " << *max_element(&a[0][0], &a[0][0] + size) << ' '
             << "min: " << *min_element(&a[0][0], &a[0][0] + size)
             << endl;
    }
    
    template <typename T, int M, int N>
    ostream &operator<<(ostream &os, T (&a)[M][N])
    {
        for (int i = 0; i < M; i++)
        {
            os << "[";
            for (int j = 0; j < N; j++)
                os << setw(3) << a[i][j] << ' ';
            os << "]\n";
        }
        return os;
    }
    
    int main()
    {
        const int M = 3;
        const int N = 5;
        int a[M][N];
        random_device rd;
        mt19937 gen(rd());
        uniform_int_distribution<> distrib(1, 100);
        generate(&a[0][0], &a[0][0] + M * N, [&]()
                 { return distrib(gen); });
        cout << "A=\n"
             << a;
        maxMin(&a[0][0], M, N);
        maxMin2(a);
        return 0;
    }
    
    $ g++ -Wall main.cpp
    $ ./a.out
    A=
    [ 30  38  34  25 100 ]
    [ 90  22  68  27  91 ]
    [ 46  45  50  46  27 ]
    max: 100 min: 22
    max: 100 min: 22
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月18日
  • 已采纳回答 3月10日
  • 创建了问题 3月4日

悬赏问题

  • ¥15 Mac系统vs code使用phpstudy如何配置debug来调试php
  • ¥15 目前主流的音乐软件,像网易云音乐,QQ音乐他们的前端和后台部分是用的什么技术实现的?求解!
  • ¥60 pb数据库修改与连接
  • ¥15 spss统计中二分类变量和有序变量的相关性分析可以用kendall相关分析吗?
  • ¥15 拟通过pc下指令到安卓系统,如果追求响应速度,尽可能无延迟,是不是用安卓模拟器会优于实体的安卓手机?如果是,可以快多少毫秒?
  • ¥20 神经网络Sequential name=sequential, built=False
  • ¥16 Qphython 用xlrd读取excel报错
  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)