- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
首先,我会公开承认这是一项家庭作业。话虽这么说,我的代码非常接近,并希望在正确的方向上轻推。
提示:编写一个完整的程序,从标准输入中读取学生数据,按姓氏/名字排序,并将结果打印到标准输出。学生数据由姓氏、名字和平均绩点(浮点值)组成。您应该假定不超过 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/
我的问题很简单。执行以下操作是否安全? 不需要任何道德建议,例如“不要将函数命名为 swap()!”或者随便什么,拜托! file1.hpp //header guards here #include
我很好奇,所以我检查了swap的源代码! clojure 存储库上的函数,如下所示: (defn swap! "Atomically swaps the value of atom to be:
我正在实现一个与 std::array 具有类似接口(interface)的类,它同时具有 member swap()和 non-member swap() . 由于我希望我的类模仿标准容器,因此我想
这个问题在这里已经有了答案: Rationale behind member function swap (1 个回答) 关闭 4 年前。 如果Coll是标准容器类型,a和b是Coll的实例;那么,
int a=5; b=7; int *pa=&a, *pb=&b; 交换 a 和 b 的值与交换指针的值有何不同,即 pa和 pb (不是 *pa 和 *pb )?两种情况下的结果不一样吗? 我们什么
好的,这是程序,绝对正确 #include using namespace std; template void Swap(T &a , T &b); int main(){ int i
std::swap() 函数是否可以在具有各种不同对象作为变量成员的类中正常工作?特别是,如果其中一些成员是智能指针? class test { ... std::shared_ptr
我正在尝试实现 copy-and-swap idiom在我的自定义 Matrix 类中,我按照链接问题中建议的方式执行 swap() 时遇到了一些麻烦: (我使用的编译器是MS VS2010 IDE的
我知道 ADL 是什么,我知道在 C++ 中,内部作用域函数隐藏外部作用域函数。也就是说,名称不会跨范围重载。所以函数重载需要在相同的范围内完成。 现在我的问题是,对于这个通用代码片段: #inclu
给定两个 std::vector v1, v2。 我想知道使用 std::swap(v1, v2) 比 v1.swap(v2) 有什么好处。 我已经实现了一个关于性能观点的简单测试代码(我不确定它是否
std::string 有一个成员函数 swap,这是交换两个大字符串的有效方法。 既然我们有了 move 语义,那么,给定两个大字符串 s1 和 s2,以下代码 s1.swap(s2); 在效率方面
同时使用 copy-and-swap idiom在一个具有常量引用作为成员的类中, 出现上述错误。 示例代码: #include #include using std::reference_wra
背景 考虑以下代码: #include namespace ns { struct foo { foo() : i(0) {} int i;
我们有: vector f(int); vector v; 这个有效: f(x).swap(v); 这不是: v.swap(f(x)); 为什么? 最佳答案 swap()对 vector 进行非常量引
我已在 Azure 中配置了一个生产和暂存槽,每个槽都使用自己的 SQL Azure 数据库。 每个连接字符串都配置为“粘性”。 但是,当我将生产槽(目标)与暂存槽(源)交换时,我收到以下警告。 这条
我有以下代码: char swap(char reg, char* mem) { std::swap(reg, *mem); return reg; } 我希望这可以编译为: swap
我使用 xor-swap 的插入排序不工作,但没有 xor-swap 它工作正常。如何修复我的异或交换插入排序算法? 没有异或交换的插入排序 - //sorts the given array in
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我正在实现 copy-and-swap idiom对于我设计的一个小型非拥有内存引用对象的 operator=。当 MemRef 引用我信任其生命周期的一 block 缓冲区时,_ptr 指向缓冲区,
我有两个问题,第二个是可选的。首先,在下面的程序(一个简单的卡片程序的原型(prototype))中,我得到以下错误: (29): error C2660: 'shuffle' : function
我是一名优秀的程序员,十分优秀!