【发布时间】:2015-02-16 21:05:36
【问题描述】:
我是 C++ 新手,请耐心等待。
我正在尝试根据某些参数(间隔大小、包含数字数量的数组长度、最高数字 yadayada)创建直方图。
虽然我认为我的函数中有正确的公式,但细节无关紧要,而且是我自己要摆弄的问题。
当我从 C++ IO“cin”分配变量时,我可以通过“cout”调用输出这些变量,但是,当我调用还包含“cout”指令的直方图函数时,不会打印任何内容。
我的代码:
#include <iostream>
#include <cmath>
using namespace std;
void histogram(int l, int n, int k, int *a)
{
int quantity = 0;
for (int i = 1; i <= l; i++)
{
for (int j = 0; i < n; j++)
{
if (a[j] >= (i-1) * k || a[j] <= i * k)
{
quantity++;
}
}
cout << (i-1) * k + ": " + quantity << endl;
quantity = 0;
}
}
int main()
{
int l,n,k;
int *a;
a = new int[n];
cin >> l >> n;
for (int i = 0; i < n; i++)
{
cin >> a[i];
}
k = ceil((double)a[0]/l);
// cout << k;
histogram(l,n,k,a);
return 0;
}
【问题讨论】:
-
在为
n设置值之前调用a = new int[n];。这会导致未定义的行为。cin >> l >> n也不会导致时间旅行。 -
什么是
l(应该是什么,实际上是什么)?直方图中的循环可能永远不会运行,并且由于cout在该循环内,因此可能永远无法到达cout。 -
使用调试器单步调试代码
-
cout << (i-1) * k + ": " + quantity << endl;字符串连接不起作用,使用cout << (i-1) * k << ": " << quantity << endl; -
@MattMcNabb 老兄,他真棒。
标签: c++