Это упражнение K & R (1-13) ...
"Напишите программу для печати гистограммы
длины слов в его входе.
Гистограмму легко нарисовать с помощью
бары горизонтальные; вертикаль
ориентация более сложная. "
Раздел посвящен массивам, и, если честно, я не уверен, что полностью это понял. Все до этого момента было довольно легко понять, это было не так.
В любом случае я сначала пытаюсь сделать гистограмму с горизонтальными полосами. Как только я получу это, я попробую вертикальный, но сейчас я даже не уверен, с чего начать с простой версии. (Я спал на нем, проснулся, и все еще не мог получить это.)
Я нарисовал пример того, что программа выдаст:
----------------------------------------------------------------
001|XX
002|XXXX
003|X
004|XXXXXXXXXX
005|XXXXXXXXXXXXXXXXXXXXXXXXX
006|XXXX
007|X
008|
009|XXXXXXXXX
010|XXX
>10|XXXX
----------------------------------------------------------------
И попытался разбить его (программу) на разделы. Вот что я придумал:
- ПЕЧАТЬ ВЕРХНЕЙ ГРАНИЦЫ
- ПЕЧАТЬ КАТЕГОРИИ, ПЕЧАТЬ X КАЖДОЕ ВРЕМЯ СОСТОЯНИЕ ПРАВДА, ПЕЧАТЬ НОВОЙ ЛИНИИ,
REPEAT.
- ПЕЧАТЬ НИЖНЕЙ ГРАНИЦЫ
Но чем больше я думаю об этом, тем меньше думаю, что так оно и будет работать (потому что getchar()
проходит по одному символу за раз, и он не сможет вернуться наверх, чтобы поставить X в правильном категория.) Или ...
... Я просто смущен тем, как бы я решил эту проблему. Вот, насколько я смог получить код мудрый:
#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;
}
Может ли кто-нибудь помочь мне просветить? Не обязательно с кодом, может быть, просто с псевдокодом, или с некоторыми «мудрыми словами» о том, что мне нужно делать, или думать, или что-то еще. Это был действительно большой камень в дороге, и я хотел бы обойти его: /.
(я вернусь через 30 минут)