使用指針算法的最大值2d數組

我正試圖編寫一個程序,在初始化的5x5矩陣的列中找到一個最大值,并將其更改為-1。我找到了辦法,但我想找到更好的解決辦法。

Input:

    double array2d[5][5];
        double *ptr;
        ptr = array2d[0];
//        initializing matrix
        for (int i = 0; i < 5; ++i) {
            for (int j = 0; j < 5; ++j) {
                if (j % 2 != 0) {
                    array2d[i][j] = (i + 1) - 2.5;
                } else {
                    array2d[i][j] = 2 * (i + 1) + 0.5;
                }
            }
        }

這是我對第一列的解決方案:

//        Changing the matrix using pointer arithmetic

        for (int i = 0; i < (sizeof(array2d) / sizeof(array2d[0][0])); ++i) {
            if (i % 5 == 0) {
                if (maxTemp <= *(ptr + i)) {
                    maxTemp = *(ptr + i);
                }
            }
        }
        for (int i = 0; i < (sizeof(array2d) / sizeof(array2d[0][0])); ++i) {
            if (i % 5 == 0) {
                if (*(ptr + i) == maxTemp) {
                    *(ptr + i) = -1;
                }
            }
        }

我可以重復這個代碼5次,并得到結果,但我想要一個更好的解決方案。謝謝。

? 最佳回答:

下面是使用指針算法的完整程序。此程序將根據需要替換2D數組-1中每列中的所有最大值。

#include <iostream>

int main()
{
    double array2d[5][5];
    double *ptr;
    ptr = array2d[0];
    //        initializing matrix
    for (int i = 0; i < 5; ++i) {
        for (int j = 0; j < 5; ++j) {
            if (j % 2 != 0) {
                array2d[i][j] = (i + 1) - 2.5;
            } else {
                array2d[i][j] = 2 * (i + 1) + 0.5;
            }
        }
    }

    //these(from this point on) are the things that i have added.
    //Everything above this comment is the same as your code.  

    double (*rowBegin)[5]  = std::begin(array2d);
    double (*rowEnd)[5] = std::end(array2d);

    while(rowBegin != rowEnd)
    {
        double *colBegin = std::begin(rowBegin[0]);
        double *colEnd = std::end(rowBegin[0]);
        
        double lowestvalue = *colBegin;//for comparing elements
        double *pointerToMaxValue = colBegin;
        
        while(colBegin!= colEnd)
        {
            if(*colBegin > lowestvalue)
            {
                lowestvalue = *colBegin;
                pointerToMaxValue = colBegin ;
            }
            colBegin = colBegin + 1;
        }
        double *newcolBegin = std::begin(rowBegin[0]);
        double *newcolEnd = std::end(rowBegin[0]);

        while(newcolBegin!=newcolEnd)
        {
            if(*newcolBegin == lowestvalue)
            {
                *newcolBegin = -1;  
            }
            ++newcolBegin;
        }
        ++rowBegin;
    }
    return 0;
}

程序可以在這里檢查。

您可以添加打印輸出數組的所有元素,以檢查上述程序是否將每列中的所有最大值替換為-1。

主站蜘蛛池模板: 在线电影一区二区三区| 国产一区在线观看免费| 亚洲日本一区二区三区在线不卡 | 一区二区三区午夜| 午夜天堂一区人妻| 无码日韩精品一区二区人妻| 亚洲av无码一区二区三区天堂| 国产在线精品一区二区不卡| av无码精品一区二区三区四区| 日韩精品人妻一区二区三区四区| 亚洲一区电影在线观看| 久久精品无码一区二区三区| 免费看一区二区三区四区| 色系一区二区三区四区五区| 亚洲精品日韩一区二区小说| 国产精品分类视频分类一区 | 精品无码AV一区二区三区不卡| 亚洲一区二区三区在线视频| 日韩av片无码一区二区三区不卡| 日本国产一区二区三区在线观看| 亚洲国产精品第一区二区| 久久国产午夜一区二区福利| 无码视频一区二区三区在线观看 | 中文日韩字幕一区在线观看| 亚洲第一区精品观看| 国产精品污WWW一区二区三区| 三级韩国一区久久二区综合| 国产福利电影一区二区三区久久久久成人精品综合 | 国产一区麻豆剧传媒果冻精品| 黑人一区二区三区中文字幕| 视频精品一区二区三区| 一区二区三区在线观看视频| 精品久久国产一区二区三区香蕉 | 亚洲高清一区二区三区电影| 成人H动漫精品一区二区| 国产乱人伦精品一区二区| 亚洲一区二区三区91| 欧美亚洲精品一区二区| 国产一区二区三区在线| 红杏亚洲影院一区二区三区| 亚洲综合无码一区二区|