用零填充缺失的用户输入

Posted

技术标签:

【中文标题】用零填充缺失的用户输入【英文标题】:Fill missing user input with zeros 【发布时间】:2021-08-23 09:34:41 【问题描述】:

我有一个函数可以将用户输入解析为正确的重载函数。我的“parseUserInput”函数确定用户输入的是字符、浮点数还是整数数组。然后它调用重载函数最终确定平均成绩。我面临的问题是,当我输入一个整数数组时,我想确保如果用户没有输入 5 个整数,其余的都用零填充。

例如:“55 66 98 32 87”会起作用。

示例:“55 66”不起作用...我希望编译器了解丢失的变量应自动填充为零,例如 ....“55 66 0 0 0”。

有什么想法可以做到这一点吗?

   void parseUserInput(char *userInput)
    
        int array[ASSGN_MARK];
    
        /* other code ... */
    
        else if (sscanf(userInput, "%i %i %i %i %i", &array[0], &array[1], &array[2], &array[3], &array[4]))
        
            printf(">> This input should be directed to the << assessGrade(int[]) >> function ...\n");
            assessGrade(array);
        
    
       /* other code...*/
   



//Overloaded Function
void assessGrade(int array[ASSGN_MARK])

    int total = 0;
    int sum = 0;
    

    sum = array[0] + array[1] + array[2] + array[3] + array[4];

    total = sum / ASSGN_MARK;

    //being type-casted to a double, as I'm calling the next overloaded function
    //and that overloaded function will display if the student passed or failed
    assessGrade((double)total);

【问题讨论】:

int array[ASSGN_MARK]; 中的值未初始化,这就是代码可能不起作用的原因。 【参考方案1】:

由于这是一个 C++ 问题,我建议您使用 C++ 方式,并使用 std::vector。您可以像这样将元素初始化为零:

std::vector < int > array(5, 0);

你还需要传递一个引用,创建一个类来放入这两个函数,或者让它成为全局的,因为你现在拥有它的方式,另一个函数看不到数组。

【讨论】:

感谢您的意见!不幸的是,我不允许使用矢量。您是否认为有某种方法可以让某种If statement 表示如果该数组元素为空,则将零复制到该元素占位符中? 我会根据 scanf() 的返回值使用 for 循环来完成。你不应该来这里要求别人为你做作业。它会影响你的学习。【参考方案2】:

我已经弄清楚了如何使这两个功能起作用..

首先,我将函数原型更改为使用默认参数。因此,如果用户不输入数字,则数字默认为 0。

    void parseUserInput(char *userInput)
    
            /* other code... */

        else if (sscanf(userInput, "%i %i %i %i %i", &a, &b, &c, &d, &e))
        
            printf(">> This input should be directed to the << assessGrade(int[]) >> function ...\n");
            assessGrade(a, b, c, d, e);
        
            /* other code... */
    
        
        
    void assessGrade(int a, int b, int c, int d, int e)
    
         int total = 0;
         int sum = 0;
        
         sum = a + b + c + d + e;
        
         total = sum / 5;
        
         assessGrade((double)total);
    
    

【讨论】:

以上是关于用零填充缺失的用户输入的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Batch、PyTorch 上填充零

通过用户表单替换自动填充的文本

通过用户表单替换自动填充的文本

连接 Keras 中的屏蔽输入

根据用户输入自动填充文本框

如何使用文件填充数组并将其与用户输入 c++ 进行比较