c++ 一维数组画频率直方图
时间: 2024-01-04 19:19:17 浏览: 94
以下是使用C++绘制一维数组频率直方图的示例代码:
```cpp
#include <iostream>
#include <vector>
void drawHistogram(const std::vector<int>& data, int levels) {
std::vector<int> histogram(levels, 0);
// 计算每个灰度级的像素个数
for (int i = 0; i < data.size(); i++) {
histogram[data[i]]++;
}
// 找到最大的像素个数,以便于绘制直方图
int maxCount = 0;
for (int i = 0; i < histogram.size(); i++) {
if (histogram[i] > maxCount) {
maxCount = histogram[i];
}
}
// 绘制直方图
for (int i = 0; i < histogram.size(); i++) {
std::cout << i << ": ";
for (int j = 0; j < histogram[i]; j++) {
std::cout << "*";
}
std::cout << std::endl;
}
}
int main() {
std::vector<int> data = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
int levels = 16;
drawHistogram(data, levels);
return 0;
}
```
该代码首先定义了一个函数`drawHistogram`,该函数接受一个一维数组和灰度级数作为参数。函数内部首先创建一个与灰度级数相同大小的数组`histogram`,用于存储每个灰度级的像素个数。然后,遍历输入的一维数组,统计每个灰度级的像素个数。接下来,找到最大的像素个数,以便于绘制直方图。最后,使用两层循环绘制直方图,每个灰度级使用一个星号表示一个像素。
在`main`函数中,我们定义了一个示例的一维数组`data`和灰度级数`levels`,然后调用`drawHistogram`函数进行绘制。
阅读全文