【发布时间】:2023-03-04 11:36:01
【问题描述】:
该代码旨在输出学生名单,并启用按名字、姓氏、年级等对表格进行排序。
我的程序编译成功了,我实际上在最初的几个问题上得到了认可,但是我的 SortByFirstName 和 SortByLastName 函数,或者这些函数与 SortByGrade 交互的方式似乎有问题。 (这些函数在代码的底部,其他一切都应该可以正常工作)
当尝试按姓氏或名字排序时,输出结果几乎正确,也就是说,列表似乎已正确排序,但其中两个中间名未排序。成绩值也被不正确地交换(或根本没有交换?)。
当只是按年级排序时似乎没有问题,所以我假设错误在于 SortByFirstName 和 SortByLastName 函数。
这是我当前代码的示例错误输出(针对 SortByFirstName):
预期:| |找到:
- Alyx 马西纳斯 | |爱丽克斯马西纳斯
- 吉妮麦克唐纳 | |诺拉·曼农
- 诺拉·曼农 | |吉妮·麦克唐纳
- 兰迪·鲁宾 | |兰迪·鲁宾
- 丝芙兰麦当劳 | |丝芙兰麦当劳
这是另一个(对于 SortByFirstName + SortByGrade):
预期:| |找到:
- Alyx 马西纳斯 | |爱丽克斯马西纳斯
- 吉妮麦克唐纳 | |诺拉·曼农
- 诺拉·曼农 | |吉妮·麦克唐纳
- 兰迪·鲁宾 | |兰迪·鲁宾
- 丝芙兰麦当劳 | |丝芙兰麦当劳
预期:| |找到:
- 83.5 | | 83.5
- 98.7 | | 100
- 100 | | 98.7
- 89.5 | | 89.5
- 100 | | 100
为什么我的函数没有正确排序?终于把它全部编译好后,我不知道该去哪里。我一直在我的笔记中寻找类似的实践问题,其中在函数调用期间没有完全选择向量。任何帮助将不胜感激,谢谢。
【问题讨论】:
-
注意
std::swap的存在 -
调试器告诉你你的代码在做什么?
-
你不能用
std::sort吗? -
这里有一些关于@JHBonarius 评论的附加信息:stackoverflow.com/questions/25385173/…stackoverflow.com/questions/12546706/…
-
第一组菜单选项工作正常。当尝试按名字对列表进行排序时,例如,在 5 个名字中,第二个和第三个名字没有正确交换。当按名字和等级排序时,同样的错误很明显,列表中的第 2 和第 3 名字/等级排序不正确(应该切换)。
标签: c++ function sorting vector selection