Program of histogram

Solved/Closed
deepu - Feb 2, 2010 at 12:13 AM
 gyan prakash - Sep 13, 2010 at 03:34 PM
Hello,
can you send me the code for drawing histogram using simple inbuild functions in c?
thanks

2 replies

Blocked Profile
Feb 2, 2010 at 01:47 AM
Dear Deepu,

Please find the required material from the following address:

http://www.sourcecodeonline.com/list?q=code_to_draw_histogram

Thanks.
0
#include <stdio.h>

#define MAXWORDLEN 10

int main(void)
{
int c;
int inspace = 0;
long lengtharr[MAXWORDLEN + 1];
int wordlen = 0;

int firstletter = 1;
long thisval = 0;
long maxval = 0;
int thisidx = 0;
int done = 0;

for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
lengtharr[thisidx] = 0;
}

while(done == 0)
{
c = getchar();

if(c == ' ' || c == '\t' || c == '\n' || c == EOF)
{
if(inspace == 0)
{
firstletter = 0;
inspace = 1;

if(wordlen <= MAXWORDLEN)
{
if(wordlen > 0)
{
thisval = ++lengtharr[wordlen - 1];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
else
{
thisval = ++lengtharr[MAXWORDLEN];
if(thisval > maxval)
{
maxval = thisval;
}
}
}
if(c == EOF)
{
done = 1;
}
}
else
{
if(inspace == 1 || firstletter == 1)
{
wordlen = 0;
firstletter = 0;
inspace = 0;
}
++wordlen;
}
}

for(thisval = maxval; thisval > 0; thisval--)
{
printf("%4d | ", thisval);
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
if(lengtharr[thisidx] >= thisval)
{
printf("* ");
}
else
{
printf(" ");
}
}
printf("\n");
}
printf(" +");
for(thisidx = 0; thisidx <= MAXWORDLEN; thisidx++)
{
printf("---");
}
printf("\n ");
for(thisidx = 0; thisidx < MAXWORDLEN; thisidx++)
{
printf("%2d ", thisidx + 1);
}
printf(">%d\n", MAXWORDLEN);

return 0;
}

Here's the output of the program when given its own source as input:

113 | *
112 | *
111 | *
110 | *
109 | *
108 | *
107 | *
106 | *
105 | *
104 | *
103 | *
102 | *
101 | *
100 | *
99 | *
98 | *
97 | *
96 | *
95 | *
94 | * *
93 | * *
92 | * *
91 | * *
90 | * *
89 | * *
88 | * *
87 | * *
86 | * *
85 | * *
84 | * *
83 | * *
82 | * *
81 | * *
80 | * *
79 | * *
78 | * *
77 | * *
76 | * *
75 | * *
74 | * *
73 | * *
72 | * *
71 | * *
70 | * *
69 | * *
68 | * *
67 | * *
66 | * *
65 | * *
64 | * *
63 | * * *
62 | * * *
61 | * * *
60 | * * *
59 | * * *
58 | * * *
57 | * * *
56 | * * *
55 | * * *
54 | * * *
53 | * * *
52 | * * * *
51 | * * * *
50 | * * * *
49 | * * * *
48 | * * * *
47 | * * * *
46 | * * * *
45 | * * * *
44 | * * * *
43 | * * * * *
42 | * * * * *
41 | * * * * *
40 | * * * * *
39 | * * * * *
38 | * * * * *
37 | * * * * *
36 | * * * * *
35 | * * * * *
34 | * * * * *
33 | * * * * *
32 | * * * * *
31 | * * * * *
30 | * * * * * *
29 | * * * * * *
28 | * * * * * * *
27 | * * * * * * *
26 | * * * * * * *
25 | * * * * * * * *
24 | * * * * * * * *
23 | * * * * * * * *
22 | * * * * * * * * *
21 | * * * * * * * * *
20 | * * * * * * * * *
19 | * * * * * * * * *
18 | * * * * * * * * *
17 | * * * * * * * * *
16 | * * * * * * * * *
15 | * * * * * * * * *
14 | * * * * * * * * * *
13 | * * * * * * * * * *
12 | * * * * * * * * * *
11 | * * * * * * * * * *
10 | * * * * * * * * * *
9 | * * * * * * * * * * *
8 | * * * * * * * * * * *
7 | * * * * * * * * * * *
6 | * * * * * * * * * * *
5 | * * * * * * * * * * *
4 | * * * * * * * * * * *
3 | * * * * * * * * * * *
2 | * * * * * * * * * * *
1 | * * * * * * * * * * *
+---------------------------------
1 2 3 4 5 6 7 8 9 10 >10
0