Это упражнение 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
----------------------------------------------------------------
И попытался сломать его (программу) в разделах. Вот что я придумал:
- PRINT TOP BORDER
- ПЕЧАТНАЯ КАТЕГОРИЯ, ПЕЧАТЬ X КАЖДОЕ ВРЕМЯ СОСТОЯНИЕ ИСТИНА, ПЕЧАТЬ NEWLINE, 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 минут)