#include <stdio.h>
/* Don't make MAXLENGTH more than (the width of your terminal - 1)
and don't make it more than 99 */
#define MAXLENGTH 20
int main(void)
{
int c;
unsigned int i;
unsigned int length = 0;
/* count[0] stores the number of words longer than MAXLENGTH. */
unsigned int count[MAXLENGTH+1];
for (i = 0; i <= MAXLENGTH; ++i)
count[i] = 0;
do
{
switch(c=getchar())
{
case ' ':
case '\t':
case '\n':
if (length > 0)
{
if (length <= MAXLENGTH)
count[length]++;
else
count[0]++;
length = 0;
}
break;
default:
length++;
break;
}
}
while (c != EOF);
/* The histogram will be as tall as the maximum length. */
length = 0;
for (i = 0; i < MAXLENGTH+1; ++i)
{
if (count[i] > length)
length = count[i];
}
for ( ; length > 0 ; --length)
{
for (i=1 ; i < MAXLENGTH+1 ; ++i)
{
if (count[i] >= length)
putchar('*');
else
putchar(' ');
}
if (count[0] >=length)
putchar('*');
putchar('\n');
}
for (i = 0; i <= ((MAXLENGTH >=10) ? MAXLENGTH+1 : MAXLENGTH) ; ++i)
putchar('-');
putchar('\n');
for (i = 1; i <= MAXLENGTH; ++i)
{
if (i/10 > 0)
printf("%d", i/10);
else
printf("%d", i);
}
if (MAXLENGTH/10 > 0)
printf("%d", MAXLENGTH/10);
else
printf("%d", MAXLENGTH);
putchar('\n');
for (i = 1; i <= MAXLENGTH; ++i)
{
if (i/10 > 0)
printf("%d", i%10);
else
putchar(' ');
}
if (MAXLENGTH/10 > 0)
printf("%d", MAXLENGTH%10);
printf("+\n");
return 0;
}
No comments:
Post a Comment