首页 > 解决方案 > 用零填充缺失的用户输入

问题描述

我有一个函数可以将用户输入解析为正确的重载函数。我的“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);
}

标签: c++arraysoverloading

解决方案


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

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

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


推荐阅读