Я хочу создать символическую гистограмму из ввода пользователя, детализирующего количество слов его абзаца:
Я пытаюсь найти len каждого слова и записать его в массив (++ для каждого слова, состоящего из 1-3 букв, 3-5 и т. Д.), А затем распечатать их.
/* Write a program to print a histogram of the lengths of words in its input. It is easy to draw the histrogram with bars, horizontal; a vertical oreientation is more challenging */
#include <stdio.h>
int main()
{
int wordCountHistogram[5];
int len = -1;
char c;
while ((c = getchar()) != EOF) {
++len;
if (c == '\t' || c == '\n' || c == ' '){
if (0 <= len <= 3)
++wordCountHistogram[0];
if (4 <= len <= 6)
++wordCountHistogram[1];
if (7 <= len <= 8)
++wordCountHistogram[2];
if (9 <= len <= 13)
++wordCountHistogram[3];
if (len > 14)
++wordCountHistogram[4];
/*if (12 <= len <= 14)
wordCountHistogram[5]++;
if (14 <= len < 15)
wordCountHistogram[6]++;
if (16 <= len < 17)
wordCountHistogram[7]++;
if (17 <= len < 18)
wordCountHistogram[8]++;
if (19 <= len < 9999)
wordCountHistogram[9]++;
*/
printf("%d", len);
len = -1;
}
}
for(int i = 0; i < 5 ;i++){
printf("%d \n",wordCountHistogram[i]);
for(int n = wordCountHistogram[i];n >= 0;n--){//Histogram sizeof(array) / sizeof(array[0]))
printf("+");}
printf("\n");
}
}
Я знаю, что "символические" длины записываются в соответствии с распечаткой, которую я знаю, я хочу записать каждый len, записанный в его соответствующую часть массива (увеличьте значение индекса массива на 1], а затем распечатайте гистограмму из таких данных. Я получаю довольно странную ошибку, и это приводит к тому, что гистограмма распечатывается неправильно.
Я знаю, что есть некоторые странные проблемы с функцией печати, но суть проблемы заключается в назначении wordCountHistogram.