我想在person对象中存储预定义(硬编码)值,并在日期排序的屏幕上显示它。如何实现?
社会保留成员列表并使用程序存储列表。对于每个成员,记录以下信息
会员编号 姓 第一个名字 这个人加入社会的日期 他们是否还是会员 该计划需要提供三种选择 1)输入会员的详细信息(当前或过去的会员)。会员可以按任何顺序输入。您可以假设会员编号可以从某个现有列表中获得,因此只需要将其与其他数据一起输入到程序中。
2)提示当前日期并作为输出生成至少10年成员(当前仍为成员)的人员列表该列表应按日期顺序加入并按照多长时间分开他们是会员(50岁以上,40岁以上等)如果同一天加入的人不止一人,则应按字母顺序排列,如果姓氏相同,则姓名一致。应该通过将成员集分类为所需的顺序来生成。
3)提示会员编号并将该会员资格标记为不是最新的。
输出应该看起来像这样
Long-standing members at 20/02/2012
50+years
mem no date joined name
432 21/07/1963 Xerxes Smith
3103 20/02/1968 Aloysius Baker
40+years
mem no. date joined name
4934 21/02/1968 Hermione Turner
0123 08/06/1975 Bartholomew Wright
1498 08/06/1975 Ermintrude Wright
30+year
---------------------------------
答案 0 :(得分:0)
我只给你泡泡排序。
#include <iostream>
#include <sstream>
#include <iomanip>
using namespace std;
class person
{
public:
person(string doj)
{
memset(&m_doj, 0, sizeof(tm));
std::istringstream ssDate(doj);
ssDate >> get_time(&m_doj, "%d/%m/%Y");
}
tm m_doj;
bool operator> (person &person2)
{
return mktime(&m_doj) > mktime(&person2.m_doj);
}
void output()
{
cout << put_time(&m_doj, "%d/%m/%Y") << "\n";
}
};
void swap(person *xp, person *yp)
{
person temp = *xp;
*xp = *yp;
*yp = temp;
}
void bubbleSort(person arr[], int n)
{
int i, j;
for (i = 0; i < n - 1; i++)
// Last i elements are already in place
for (j = 0; j < n - i - 1; j++)
if (arr[j] > arr[j + 1])
swap(&arr[j], &arr[j + 1]);
}
void main()
{
person people[5] = { person("22/02/2012"), person("21/03/2012"), person("21/02/2018"), person("21/02/1969"), person("20/02/2012") };
bubbleSort(people, 5);
for (int i = 0; i < 5; ++i)
{
people[i].output();
}
}