我刚开始使用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");
}
}
答案 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()
。