【问题标题】:Readability CS50, pset2可读性 CS50,pset2
【发布时间】:2020-09-09 11:15:01
【问题描述】:

当我运行我的代码时,它没有给我正确的分数,我不明白为什么,我真的不确定我哪里出错了或者我必须如何解决它。如果有人可以帮助我,请。

这是我的代码:

#include <stdio.h>
#include <cs50.h>
#include <string.h>
#include <ctype.h>
#include <math.h>

int main(void)
{
    string text = get_string ("Text: "); // asking for text input

   //counters set to zero
   int letters = 0;
   int words = 1;
   int sentances = 0;
       
   int n = strlen(text);
    
   for (int i = 0; i < n; i++) // for counting letters words & sentances
     {
       if (isalpha (text[i]))
       {
         letters++;
       }
       else if (isspace (text [i]))
       {
         words++;
       }
       else if (text[i] == '.' || text[i] == '!' || text[i] == '?' )
       {
         sentances++;
       }
     }

    float l= 100 / letters * words;
    float s= 100 / sentances * words;
    float grade = (0.0588 * l) - (0.296 * s) - 15.8;

    grade = (round (grade));
    printf ("%i letters, %i words, %i sentances \n", letters, words, sentances);

    if (grade >= 1 && grade <= 16)
    {
      printf ("grade %i \n", (int) round (grade));
    }
    if (grade < 1)
    {
      printf ("Before grade 1\n");
    }
    if (grade > 16)
    {
      printf ("grade 16+\n");
    }
}

当我检查它时,一切都显示在 1 年级之前。

如果我输入此文本:您喜欢这里还是那里?我不喜欢他们在这里或那里。我在任何地方都不会喜欢它们。

预期输出将是:2 级

实际输出:一年级前

我希望这个编辑有所帮助。

【问题讨论】:

  • 使用您最喜欢的调试器单步执行程序并观察所有变量的值。
  • 这个100 / letters * words 看起来不对。至少你会想要100.0
  • 请补充:1)输入字符串 2)预期输出 3)实际输出
  • 选择变量名称,例如ls,并使用诸如(0.0588 * l) - (0.296 * s) - 15.8; 之类的值,而没有任何信息说明它们是什么是神秘的,并且使分析您编写的内容变得困难。选择有意义的变量名,避免使用幻数。
  • lundin 感谢您的帮助,尽管调试器一切正常,但我运行了它,因为它应该编码明智。

标签: c cs50


【解决方案1】:

我认为你的问题在这里:

float l= 100 / letters * words;
float s= 100 / sentances * words;

我认为你有 2 个问题。

问题 1

右侧的所有内容都是整数。所以计算将“以整数”完成,你会得到一些意想不到的四舍五入。

使用100.0强制浮点计算。

问题 2

我也认为公式是错误的。我认为正确的形式是:

float l= 100.0 * letters / words;   // average number of letters per 100 words
float s= 100.0 * sentances / words; // average number of sentences per 100 words

https://cs50.harvard.edu/x/2020/psets/2/readability/#:~:text=average%20number%20of%20sentences%20per%20100%20words

【讨论】:

  • 我刚刚把公式换成了你的,你解决了我的问题。我太棒了!谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 2020-09-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多