如何在多维数组(矩阵)中找到并显示峰值元素? (C ++)

时间:2014-08-08 01:42:09

标签: c++ arrays matrix multidimensional-array

我刚开始使用C ++,而我正试图解决问题。在我正在学习的其中一门课程中,我的任务是要求我分析一个预定的峰值元素阵列(比其任何邻居更大的元素),并且只显示峰值元素(离开非峰值元素的空格空白)。我这样做的方法是创建两个独立的数组,其中一个包含整数值,另一个包含一个布尔值,如果该元素是一个峰值元素。但是,我的功能显示我的数组似乎有问题。即使我将显示条件更改为false,默认情况下分配给所有元素的值,当我编译并执行它时也不会出现任何内容。此外,如果有人能告诉我一种更有效的方法来确定除了我的可怕的复杂if语句之外的峰值元素,那将是非常棒的。一些帮助将不胜感激! ^ _ ^

P.S。我仅限于为这个项目使用stdio.h和genlib.h库,如果我的格式有点不对劲,我很抱歉。这是我的第一篇帖子..

#include <stdio.h>
#include "genlib.h"

#define size 5

void ComputeArray(int MainArray[size][size], bool IfShown[size][size]); 
void DisplayArray(int MainArray[size][size], bool IfShown[size][size]);

int main()
{
int i, i2;
int MainArray[size][size]=
{
    {-32767,-32767,-32767,-32767,-32767},
    {-32767,3,2,9,-32767},
    {-32767,13,7,6,-32767},
    {-32767,1,5,8,-32767},
    {-32767,-32767,-32767,-32767,-32767}
};
bool IfShown[size][size];
for (i=0;i<size;i++)
{
    for (i2=0;i2<size;i2++)
    {
        IfShown[i][i2]=false;
    }
}
ComputeArray(MainArray, IfShown);
DisplayArray(MainArray, IfShown);   
}

void ComputeArray(int MainArray[size][size], bool IfShown[size][size]) 
{
int i, i2, j, j2;

for (i=0;i<size;i++)
{   
    for (i2=0;i2<size;i2++)
    {       
        for(j=i-1;j<=i+1;j++);
        {
            for(j2=i2-1;j2<=i2+1;j2++);
            {
                if(MainArray[i][i2]>MainArray[j][j2]) IfShown[i][i2]=true;
            }
        }

    }
}
}

void DisplayArray(int MainArray[size][size], bool IfShown[size][size])
{
int i, i2;

for (i=0;i<size;i++)
{
    for (i2=0;i2<size;i2++)
    {
        if(IfShown[i][i2]==true)
        {
            printf("%d\t", MainArray[i][i2]);
        }
        else
        {
            printf("\t");
        }
    }
    printf("\n");
}
}

1 个答案:

答案 0 :(得分:1)

显示阵列的功能是您最不担心的。

在此代码中,您应该使用逻辑等式评估或其他布尔条件评估的不正确分配是横行。如:

for (i=0;i=size;i++)

应该是

for (i=0;i<size;i++) // see < in place of =

下面还有大量不正确的作业,应该进行比较,例如:

if (MainArray[i][i2]=MainArray[0][0])

应该是

if (MainArray[i][i2] == MainArray[0][0])

总的来说,通过此代码有一些 17 这样的实例。您需要复习C ++中的运算符以及如何调用它们。在修复此问题时,请将main()声明为int main()