用零填充缺失的用户输入
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);
【讨论】:
以上是关于用零填充缺失的用户输入的主要内容,如果未能解决你的问题,请参考以下文章