Imprimer un Histogramme basé sur des longueurs de mots (C)

C'est un K&R de l'exercice (1-13)...

"Écrire un programme pour imprimer un histogramme
de la longueur des mots dans son entrée.
Il est facile de tracer l'histogramme
barres horizontal; vertical
l'orientation est plus difficile."

La section sur les tableaux, et pour être honnête, je ne suis pas sûr de bien comprendre ce qui. Tout jusqu'à ce point a été assez facile à comprendre, ce n'était pas.

De toute façon je suis en train de faire un histogramme à barres horizontales en premier. Une fois que je suis arrivé que vers le bas, je vais essayer de la verticale, mais pour l'instant je ne suis même pas sûr où commencer avec la version simple. (J'ai dormi sur elle, se réveilla, et encore ne pouvait pas l'obtenir.)

J'ai dessiné un exemple de ce que le programme de sortie:

----------------------------------------------------------------
001|XX
002|XXXX
003|X
004|XXXXXXXXXX
005|XXXXXXXXXXXXXXXXXXXXXXXXX
006|XXXX
007|X
008|
009|XXXXXXXXX
010|XXX
>10|XXXX
----------------------------------------------------------------

Et a essayé de le casser (le programme) dans les sections. C'est ce que je suis venu avec:

  1. IMPRESSION DE LA BORDURE SUPÉRIEURE
  2. CATÉGORIE D'IMPRESSION, D'IMPRESSION X À CHAQUE FOIS QUE LA CONDITION EST VRAIE, L'IMPRESSION DE RETOUR À LA LIGNE,
    RÉPÉTEZ.
  3. IMPRESSION DE LA BORDURE INFÉRIEURE

Mais plus j'y pense, moins je pense qu'il en serait de travailler (parce que getchar() passe par un caractère à la fois, et il ne serait pas en mesure de revenir jusqu'à mettre un X dans la bonne catégorie.) Ou...

... Je suis vraiment confus quant à comment je pourrais résoudre ce problème. Voici que j'ai été en mesure d'obtenir le code sage:

#include <stdio.h>

#define MAXWORDLENGTH 10

//print a histogram of the length of words in input. horizontal bar version

int main(void)
{
  int c;
  while ((c = getchar()) != EOF) {

  }

  return 0;
}

Quelqu'un pourrait-il aider à m'éclairer? Pas nécessairement avec le code, peut-être juste le pseudo-code, ou avec des "paroles de sagesse" à ce que je dois faire ou penser, ou quelque chose. Cela a été vraiment une grosse pierre sur la route et j'aimerais obtenir au-delà de ça :/.

(Je vais vérifier de retour dans 30 minutes)

Pas tout à fait un doublon, mais vous pouvez trouver de l'aide sur les comment tracer un histogramme en c et Histogramme en C.
J'aime la façon dont vous pensez! Il vous manque quelque chose, cependant. Voir ma réponse ci-dessous.
Ce genre de problème m'a rendu fou quand j'ai appris à programmer (je l'ai fait en C). La leçon, ce qui Kernighan répète souvent dans ses autres livres, est: penser en termes de données, pas de code.

OriginalL'auteur Matt2012 | 2010-10-21