编写一个C ++程序,要求用户输入一个整数m,然后输入m个其他学生名字和代表其最终成绩的数字。每次,用户都必须输入一个名字和一个等级。名称和成绩将存储在单独的列表中。
获得所有姓名和成绩后,该计划将查找并显示最高年级和拥有该学生的学生姓名
我尝试了它并且能够获得最高分,但我的名字错了...
plzzzzzzzzzzzzzzzzzzzzzzzz help !!!!!
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<hr class="line-rooms-sphere-4 rooms-hidden"/>
<hr class="line-rooms-sphere-4 rooms-hidden"/>
<hr class="line-rooms-sphere-4 rooms-hidden"/>
<script>
$(document).ready(function(){
$('hr[class^="line-rooms-sphere"]').css("border-width","8px");
});
</script>
答案 0 :(得分:2)
您在循环之前将name
设置为name = *tn;
,以后再也不要更改它。你期待什么?
答案 1 :(得分:0)
此答案仅供您参考。
虽然我不建议您将此代码提交给您的导师(但无论如何都要在课后与他/她讨论),这就是我“在现实世界中”处理此任务的方式。
剧情简介:
所有算法逻辑用std算法表示。
由于效率原因,列表被替换为载体。
内置测试工具允许使用--test选项运行程序以检查逻辑,并为此...
逻辑与IO流分离。
输入不完整或无效时的错误处理。
使用模板功能获取输入,无需复制逻辑。
这段代码需要c ++ 11,这应该是你学习的最低限度。
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <sstream>
template<class...Ts>
std::istream& acquire(std::istream& stream, const char* prompt, Ts&...ts)
{
if (std::addressof(stream) == std::addressof(static_cast<std::iostream&>(std::cin))) {
std::cout << prompt;
std::cout.flush();
}
using expand = int[];
void(expand { 0, ((stream >> ts),0)... });
return stream;
}
bool args_have_test(const std::vector<std::string>& args)
{
auto ifind = std::find(std::begin(args), std::end(args), "--test");
return ifind != std::end(args);
}
[[noreturn]]
bool input_error(const char* context)
{
std::cerr << "input error while " << context << std::endl;
exit(2);
}
int main(int argc, const char* const *argv)
{
std::istringstream stest {
"5\n"
"bob 5\n"
"bill 2\n"
"bernie 9\n"
"bert 7\n"
"bart 8\n"
};
auto args = std::vector<std::string> { argv + 1, argv + argc };
auto& stream = args_have_test(args) ? static_cast<std::istream&>(stest)
: static_cast<std::istream&>(std::cin);
int count = 0;
acquire(stream, "enter number of students: ", count)
or input_error("entering number of students");
std::vector<std::string> names;
names.reserve(count);
std::vector<int> grades;
grades.reserve(count);
std::string name;
int grade;
while (count--) {
acquire(stream, "enter name and grade followed by enter: ", name, grade)
or input_error("entering name and grade");
names.push_back(name);
grades.push_back(grade);
}
auto imax = std::max_element(std::begin(grades), std::end(grades));
if (imax == std::end(grades)) {
std::cerr << "empty list\n";
exit(1);
}
auto iname = std::next(std::begin(names), std::distance(std::begin(grades),
imax));
std::cout << "highest grade was " << *imax << " acheived by " << *iname << std::endl;
return 0;
}