gpt4 book ai didi

c - 需要一些关于如何更整齐地打印直方图的建议

转载 作者:行者123 更新时间:2023-11-30 17:18:00 26 4
gpt4 key购买 nike

我正在编写一个程序,它将读取输入,然后返回 K & R 的字符计数直方图 - 例如。 1.13

关于如何改进我的代码有什么建议吗?我是否先测试状态是否良好,是否重要?我注意到在我的示例中,人们首先测试 c 是空白还是制表符。

我想我需要重新审视我的直方图。它并没有真正衡量结果。它只是根据长度绘制连字符。

我认为进行了修改,使其更具可读性。

// Print a histogram of the length of words in it's input.

#include <stdio.h>
#define IN 1
#define OUT 2
#define MAX 99

int main(){

int c; // the character
int countOfLetters = 0;
int insideWord = OUT;
int frequencyOfLengths[MAX];
int longestWordCount = 0;
int i, j; // Counters

for (i = 0; i < MAX; i++){
frequencyOfLengths[i] = 0;
}

while ((c = getchar()) != EOF){
if (c == ' ' || c == '\n' || c == '\t'){
if (insideWord == IN){
if (countOfLetters > MAX){
return 1;
}
++frequencyOfLengths[countOfLetters];
if (countOfLetters >= longestWordCount) longestWordCount = countOfLetters;
}
countOfLetters = 0;
}
else {
countOfLetters++;
insideWord = IN;
}
}

for (i = 1; i <= longestWordCount; i++){
printf("%3i : %3i ", i, frequencyOfLengths[i]);
for (j = 0; j < frequencyOfLengths[i]; j++){
printf("*");
}
printf("\n");
}

return 0;
}

最佳答案

绝对的规模结果,看看我的Character Histogram这会生成水平缩放直方图。

此外,您还可以使用 y 轴标签。很难判断哪个小节对应哪种字长。我不知道哪个栏代表什么字长。

我在显示直方图之前添加了这段代码,它基本上将每个值减半,这确实会丢失您的条形图编号标签。你可以弄清楚!

// Iterates and tells us the most frequent word length
int mostFrequent = 0;
for (i = 1; i < MAXWORD; i++)
if (charCount[i] > mostFrequent)
mostFrequent = charCount[i];

// If the bar will be too big, cut every value in half
while (mostFrequent > 60) {
for (i = 1; i < MAXWORD; i++)
if (charCount[i] > 0) {
charCount[i] /= 2;
charCount[i] |= 1;
}

// Check again to find the most frequent word length category
mostFrequent = 0;
for (i = 1; i < MAXWORD; i++)
if (charCount[i] > mostFrequent)
mostFrequent = charCount[i];
}

老实说,这些条很难阅读,也许只使用单行字符,例如 █ !

到目前为止,这本书很棒,我们几乎一起阅读并且意见一致!

干杯

关于c - 需要一些关于如何更整齐地打印直方图的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29321583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com