C语言绘直方图

Python025

C语言绘直方图,第1张

#include <math.h>

#include <conio.h>

#include <stdio.h>

#include <stdlib.h>

#include <graphics.h>

int main()

{

int GraphDriver

int GraphMode

int i, x, y

char buffer[5]

int data[]={7,3,12,6,9,5,8,11}

GraphDriver = DETECT /*自动检测图形设备*/

initgraph(&GraphDriver, &GraphMode, "")/*初始化图形设备*/

setcolor(15) /*设置前景色,白色*/

moveto(635, 461) /*移动画笔至点(635,461)*/

lineto(20, 461) /*从当前画线至(20,461),并移画笔到(20,461),画x轴*/

lineto(20, 20) /*从当前画线至(20,20),并移画笔到(20,20),画y轴*/

setcolor(15) /*设置前景色,白色*/

for (i = 1 i <13i++)

{

itoa(i, buffer, 10) /*将i以十进制形式转换成字符串,保存在buffer*/

outtextxy(20 - textwidth(buffer), 456 - i * 36, buffer)/*在适当位置输出y轴的刻度对应的标签*/

moveto(20, 460 - i * 36)/*画笔移至y轴刻度起点*/

lineto(23, 460 - i * 36)/*画y轴刻度*/

}

setfillstyle(SOLID_FILL, 1)/*设置填充模式(配合直方图)*/

for (i = 0 i <8i++)

{

moveto(i * 50 + 49, 461)/*移动画笔至x刻度处*/

lineto(i * 50 + 49, 465)/*画x刻度*/

outtextxy(i * 50 + 51, 463, itoa(i + 1, buffer, 10)) /*输出x轴刻度*/

bar(i * 50 + 35, 460 - data[i] * 36, i * 50 + 65, 460)/*画直方图*/

}

getch() /*等待一个按键*/

closegraph() /*关闭图形模式*/

}

#include <stdio.h>

void DrawHistogram(int nArray[], int nCount, char ch) {

int i,j,m = 0

for(i = 0 i < nCount ++i) {

for(j = 0 j < nArray[i] ++j)

printf("%c",ch)

printf("%d\n",nArray[i])

}

printf("\n")

}

void CountRangeItems(double dArray[], int nDataItems, int nArray[]) {

int i

for(i = 0 i < nDataItems ++i) {

if(dArray[i] <= 160) ++nArray[0]

else if(dArray[i] < 165) ++nArray[1]

else if(dArray[i] < 170) ++nArray[2]

else if(dArray[i] < 175) ++nArray[3]

else if(dArray[i] > 175) ++nArray[4]

}

}

int main() {

double height[] = {185,176,165,169,160,152,187,196,178,189,196,182,181,176,159,163,168}

int nArray[5] = {0}

int nCount = 0,size = sizeof(height)/sizeof(height[0])

CountRangeItems(height,size,nArray)

DrawHistogram(nArray,5,'*')

return 0

}