Questo è un K & R esercizio (1-13) ...Stampare un istogramma in base a lunghezze di parola (C)
"Scrivere un programma per stampare un istogramma della lunghezza delle parole nella sua input È facile disegnare l'istogramma con le barre orizzontali, un orientamento verticale è più impegnativo. "
La sezione riguardava gli array e, ad essere onesti, non sono sicuro di averlo compreso appieno. Tutto fino a questo punto era abbastanza facile da capire, non lo era.
Ad ogni modo sto provando a eseguire un istogramma con barre orizzontali prima. Una volta capito, proverò in verticale, ma al momento non sono nemmeno sicuro da dove cominciare con la versione facile. (. Ho dormito su di esso, sono svegliato, e ancora non riusciva a farlo)
ho disegnato un esempio di ciò che il programma sarebbe uscita:
----------------------------------------------------------------
001|XX
002|XXXX
003|X
004|XXXXXXXXXX
005|XXXXXXXXXXXXXXXXXXXXXXXXX
006|XXXX
007|X
008|
009|XXXXXXXXX
010|XXX
>10|XXXX
----------------------------------------------------------------
e ha cercato di romperlo (il programma) verso il basso in sezioni. Questo è ciò che mi si avvicinò con:
- STAMPA bordo superiore
- Stampa Categoria, STAMPA X OGNI VOLTA condizione è vera, PRINT NEWLINE, REPEAT.
- STAMPA bordo inferiore
Ma più ci penso e meno penso che sia come avrebbe funzionato (perché getchar()
passa attraverso un carattere alla volta, e non sarebbe in grado di andare back up per inserire una X nella giusta categoria.) Oppure ...
... Sono solo molto confuso su come risolverei questo problema. Ecco quanto sono stato in grado di ottenere codice saggio:
#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;
}
Qualcuno potrebbe aiutarmi a illuminarmi? Non necessariamente con il codice, forse solo con lo pseudo codice, o con alcune "parole dal saggio" su ciò che devo fare, o pensare, o qualcosa del genere. Questo è stato solo un grosso ostacolo e mi piacerebbe superarlo: /.
(Vado a controllare di nuovo in 30 minuti)
Non proprio un duplicato, ma si può trovare aiuto in [come tracciare un istogramma in c] (http://stackoverflow.com/questions/3836987/) e [Istogramma frequenza in C] (http://stackoverflow.com/questions/1413644/). – dmckee
Mi piace il tuo modo di pensare! Ti manca qualcosa, tuttavia. Vedi la mia risposta qui sotto. – slezica
Questo tipo di problema mi ha fatto impazzire quando ho imparato a programmare (cosa che ho fatto in C). La lezione, che Kernighan ripete spesso negli altri suoi libri, è: pensa in termini di dati, non di codice. –