C++ 最后一列中的直方图错误



检查我的代码并告诉我代码中的错误。 实际上,我试图用C++打印直方图。 那里一切正常,但有一个问题,即在星星的最后一列中,该值与第 3 列相同。 表示如果我给第三个和第四个条目两个不同的输入值,它们的输出是相同的,但在两列中,我想在自己的列中打印自己的值,这是代码。

#include<iostream>
using namespace std;
int f[4];
int main()
{
   int a, b, c, d, i;
   cin >> f[0] >> f[1] >>  f[2]>>f[3];
   int m = max(max(max(f[0],f[1]),f[2]),f[4]);
   for(int i=m;i>=1;i--)
   {
       for(int j=0;j<4;j++)
           if (f[j]<i) cout <<' ';
           else cout <<'*';
       cout<<endl;
   }
}

如果我给出这些输入,这是输出。

2,3,4,5

输出:

  **
 ***
****
****

查找最大元素时,您正在查看 f[4] ,它超出了数组的边界,从而导致未定义的行为。

你的意思是使用f[3].

最新更新