【发布时间】:2022-01-24 01:35:31
【问题描述】:
我应该创建一个程序,让用户输入跑步者的姓名和时间。当用户输入DONE时,用户将开始输入跑步者的时间,以-1结尾。
为了清楚起见,在终端中,它应该如下所示:
Enter participants:
Kalle Svensson Glommen IK
Anna Nilsson Glommen IK
Per-Erik Jonsson Tuna OK
DONE
Times Kalle: 12.34 10.01 -1.00
Times Anna: 8.05 9.57 10.00 12.34 -1.00
Times Per-Erik: 10.44 -1.00
Surname First name Club: Times
==========================================
Nilsson Anna Glommen IK: 8.05 9.57 10.00 12.34
Svensson Kalle Glommen IK: 10.01 12.34
Jonsson Per-Erik Tuna OK: 10.44
我的代码如下所示:
#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Runner_Type
{
string first_name;
string surname;
string club;
string club_last;
vector<double> time;
};
using Many_Runners_Type = vector<Runner_Type>;
void print(Runner_Type const & runner)
{
cout << setw(9) << runner.surname << setw(10) << runner.first_name << setw(13) << runner.club << setw(3) << runner.club_last;
}
void print(Many_Runners_Type const & many_runners)
{
for (Runner_Type const & runners : many_runners)
{
print(runners);
cout << endl;
}
}
bool operator < (Runner_Type const & lhs,
Runner_Type const & rhs)
{
for (int j {}; j < static_cast<int>(lhs.time.size()); ++j)
{
if (lhs.time.at(j) < rhs.time.at(j))
{
return true;
}
else if (lhs.time.at(j) > rhs.time.at(j))
{
return false;
}
return true;
}
}
// void participants ()
// {
// Runner_Type runner;
// Many_Runners_Type many_runners;
// string name;
// }
int main()
{
Runner_Type runner {};
Many_Runners_Type many_runners {};
string name {};
double runner_time {};
cout << "Enter participants: " << endl;
while (true)
{
cin >> name;
if (name == "DONE")
{
break;
}
runner.first_name = name;
cin >> runner.surname >> runner.club >> runner.club_last;
many_runners.push_back(runner);
}
for (int i {}; i < many_runners.size(); ++i)
{
cout << "Times " << many_runners.at(i).first_name << ": ";
while (runner_time != -1.0)
{
cin >> runner_time;
runner.time.push_back(tid);
}
}
//runner.time.pop_back();
cout << "Surname" << setw(11) << "First name" << setw(23) << "Club: Times" << endl;
cout << "==========================================" << endl;
sort(begin(many_runners), end(many_runners));
print(many_runners);
cout << endl;
return 0;
}
这些是我从编译器得到的警告(观察我的程序运行,但我得到的是警告,而不是错误):
CppO3.cpp:104:21: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<Runner_Type>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
104 | for (int i = 1; i < many_runners.size(); ++i)
| ~~^~~~~~~~~~~~~~~~~~~~~
CppO3.cpp: In function ‘bool operator<(const Runner_Type&, const Runner_Type&)’:
CppO3.cpp:59:1: warning: control reaches end of non-void function [-Wreturn-type]
59 | }
| ^
当我运行我的程序时,这是我得到的输出:
Enter participants:
Kalle Svensson Glommen IK
Anna Nilsson Glommen IK
Per-Erik Jonsson Tuna OK
DONE
Times Anna: 12.24 10.01 -1.00
Times Per-Erik: Surname First name Club: Times
==========================================
Svensson Kalle Glommen IK
Nilsson Anna Glommen IK
Jonsson Per-Erik Tuna OK
有什么解决办法吗?
【问题讨论】:
标签: c++