gpt4 book ai didi

c++ - 使用 Swap 函数对类对象数组进行排序后出现重复条目​​ - C++

转载 作者:行者123 更新时间:2023-11-30 04:00:25 33 4
gpt4 key购买 nike

首先,我会公开承认这是一项家庭作业。话虽这么说,我的代码非常接近,并希望在正确的方向上轻推。

提示:编写一个完整的程序,从标准输入中读取学生数据,按姓氏/名字排序,并将结果打印到标准输出。学生数据由姓氏、名字和平均绩点(浮点值)组成。您应该假定不超过 50 名学生。

示例输入:

洁具亨利 87.2唐太斯爱德蒙 91.4埃尔哈特·阿米莉亚 92.6

我的代码接受用户输入,根据姓氏和名字交换它们,然后输出学生列表和 GPA。测试我的代码的在线程序输入六 (6) 个学生数据。它使用 Swap 对它们进行正确排序,但第 5 个学生从条目 5-49(共 50 个)重复,然后最终输出学生 6。我搜索了论坛,但没有找到适用的先前帖子。

我试过在输出循环中使用“while”语句,但我对 bool 值的掌握仍然有点薄弱。尝试的 while 语句列在我的代码顶部。如有任何帮助,我们将不胜感激。

while((list[i].lastName != list[i + 1].lastName) && (list[i].firstName != list[i + 1].firstName))

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

class student
{
public:
string firstName;
string lastName;
float gpa;

student() {};
student(string last, string first, double grade)
{
firstName = first;
lastName = last;
gpa = grade;
};
};

int main()
{
string first;
string last;
float grade;

student list[50];


for(int i = 0; i < 50; i++)
{
cin >> last;
cin >> first;
cin >> grade;
list[i].lastName = last;
list[i].firstName = first;
list[i].gpa = grade;
}
for ( int i = 0; i < 50 - 1; i++)
{
if (list[i].lastName > list[i + 1].lastName)
{
swap (list[i], list[i+1]);
}
}
for ( int i = 0; i < 50 - 1; i++)
{
if (list[i].firstName > list[i + 1].firstName)
{
swap (list[i], list[i+1]);
}
}


for(int i = 0; i < 50 - 1; i++)
{
cout << list[i].lastName << " " << list[i].firstName << " " << list[i].gpa << endl;
}

return 0;
}

最佳答案

#include <iostream>
#include <string>
#include <algorithm>
using namespace std;

class student
{
public:
string firstName;
string lastName;
float gpa;

student() {};
student(string last, string first, double grade)
{
firstName = first;
lastName = last;
gpa = grade;
};
};

int main()
{
string first;
string last;
float grade;

student list[5];


for(int i = 0; i < 5; i++) //use 5 instead of 50 because myprogramminglab only input 5 entries, not 50, it lies to you
{
cin >> last;
cin >> first;
cin >> grade;
list[i].lastName = last;
list[i].firstName = first;
list[i].gpa = grade;
}
for ( int i = 0; i < 4; i++)
{
if (list[i].lastName > list[i + 1].lastName)
{
swap (list[i], list[i+1]);
}
}
for ( int i = 0; i < 4; i++)
{
if (list[i].firstName > list[i + 1].firstName)
{
swap (list[i], list[i+1]);
}
}


for(int i = 0; i < 5; i++)
{
cout << list[i].lastName << " " << list[i].firstName << " " << list[i].gpa << endl;
}

return 0;
}

/评论:我相信这个作业来 self 的编程实验室。您唯一需要修复的是从 50 更改为 5,myprogramminglab 只输入 5 个条目而不是它所说的 50/

关于c++ - 使用 Swap 函数对类对象数组进行排序后出现重复条目​​ - C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26333251/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com