关于我的c++作业设计的问题
Question about my design for my C++ homework
首先,这是我的CS296类,所以所有东西都必须在main()函数中,我不能使用循环,switch和if语句。
无论如何,程序要求用户输入一个班级的学生人数,然后是他们的名字。然后,根据学生按字母顺序从a到z排列,显示哪些学生应该排在队伍的前面,哪些学生应该排在队伍的后面。
程序可以运行,但是我觉得设计很差。特别是我如何使用count变量。我希望能得到一些关于这方面的反馈。谢谢!
int main(void)
{
string front, back, student;
unsigned short count = 1, students;
cout << "Enter the number of students in the class. Valid range is 1 - 25." << endl
<< endl
<< "Students: ";
cin >> students;
while (students < 1 || students > 25)
{
cout << endl
<< "ERROR: Valid range is 1 - 25" << endl
<< endl
<< "Students: ";
cin >> students;
}
cout << endl
<< "Enter the name of student " << count << ": ";
cin.ignore();
getline(cin, student);
front = back = student;
for (count = 2; count <= students; count++)
{
cout << "Enter the name of student " << count << ": ";
getline(cin, student);
if (student < front)
front = student;
else if (student > back)
back = student;
}
cout << endl
<< front << " should be at the head of the line." << endl
<< back << " should be at the end of the line." << endl;
return 0;
}
不,看起来很好。规范要求输入一个计数,然后输入那么多学生,你就是这么做的。
不要误解我的意思,程序很糟糕,但这是因为荒谬的规范,如"所有东西都必须在main()函数中",与你的实现无关。
对于这种水平的家庭作业,我很乐意从我的学生那里得到这样的东西。这将是一个很好的改变,从代码甚至不能编译,单字符变量名无处不在,或未格式化的沼泽不正确的缩进和混合制表符/空格:-)
从算法的角度来看,这似乎是一个非常合理的设计。你只是在读取列表时找到列表的最小值和最大值,并且正确地完成了最难的部分(初始化第一个元素的first和last)。你可以使用do-while让它看起来更漂亮,像这样:
做{//读取,比较max, min}While (count <25)
假设只存储两个学生,没有必要将条目的数量限制为25个。如果用户(您)想要添加超过25个名字,除了验证号码之外,不需要进行任何更改。事实上,没有明显的理由让用户计算学生的数量;代码可以一直读取学生,直到到达cin
上的EOF。然而,如果规范说"你应该输入名称的数量",那么你的代码就必须这样做,无论多么愚蠢。但是如果用户只输入了3个名字,而不是承诺的20个,您应该允许提前EOF并优雅地终止循环。
很遗憾,您不能使用自己的函数;您可以使用一个来提示并读取下一个名称,从而减少代码中的重复。
给定这些约束,您的代码是合理的。您可以避免"在循环外读取名字",但代价是在循环内进行更复杂的检查。这种权衡可能更有利于你所写的内容。
- 警告处理为错误这里有什么问题
- 最小硬币更换问题(自上而下方法)
- 为"adjacent"变量赋值时出现问题
- 我的神经网络不起作用 [XOR 问题]
- 在Ubuntu 16.04上安装Cilk时出现问题
- 动态类的分段错误(家庭作业问题)
- 我的作业问题:布尔表达式
- 家庭作业问题 - C++更新已识别的变量
- 我的C++作业中的"solve"功能有什么问题?
- 在C++测试家庭作业问题中的字符串输入时无法退出循环(作为数据验证)
- R6010 执行后出错.if 语句在 for 循环中.[作业][中止已解决,发现新问题]
- 像这样写作业有什么问题
- 我的学校课程作业有问题
- 将字符串输入与类数组值进行比较时出现问题C++(Unix 环境)(家庭作业)
- C++ 家庭作业给我带来了问题
- 关于我的c++作业设计的问题
- 学校作业有问题
- 欧拉全能函数的ACM问题(家庭作业)
- 数组家庭作业问题需要帮助
- 数组的家庭作业问题