从一个数组中读取数据,并以直方图的形式显示信息 c语言
时间: 2024-10-24 07:07:53 浏览: 19
数字图像处理实验二直方图均衡C语言.zip
5星 · 资源好评率100%
在C语言中,要从数组中读取数据并将其转换为直方图,首先你需要创建一个适当的结构来表示每个数据点及其对应的频率,然后遍历数组计算频率。这里是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义直方图结构
typedef struct {
int value;
int count;
} Histogram;
// 计算直方图
void calculate_histogram(int arr[], int n, Histogram *hist) {
for (int i = 0; i <= n; ++i) { // 包含n,因为直方图范围到数组的最大值
hist[i].count = 0;
}
for (int i = 0; i < n; ++i) {
++hist[arr[i]].count;
}
}
// 显示直方图
void print_histogram(Histogram hist[], int max_value) {
printf("Value\tFrequency\n");
for (int i = 0; i <= max_value; ++i) {
if (hist[i].count > 0) {
printf("%d\t%3d\n", i, hist[i].count);
}
}
}
int main() {
int data[] = {5, 7, 3, 9, 5, 3, 8, 2, 6, 5}; // 假设这是一个整数数组
const int n = sizeof(data) / sizeof(data[0]);
Histogram histogram[n + 1];
calculate_histogram(data, n, histogram);
printf("Histogram of the given array:\n");
print_histogram(histogram, *max_element(data, data+n)); // 使用指针和max_element获取最大值
return 0;
}
```
这个程序首先定义了一个`Histogram`结构体来存储值和计数值。`calculate_histogram`函数遍历数组计算每个值出现的次数,`print_histogram`函数则打印出结果。在`main`函数里,我们创建了数据数组、计算直方图并展示。
阅读全文