如何存储根据日期排序的预定义值在C 中排序

How can I store predefined values sorted according to date in C++?

本文关键字:排序 预定义 日期 何存储 存储      更新时间:2023-10-16

我想在对象中存储预定义的(硬编码(值,并用日期排序在屏幕上显示它。我如何实现?

这是问题和我的代码。

社会保留成员列表并使用程序存储列表。对于每个成员,记录以下信息

会员编号姓名字该人加入社会的日期他们是否仍然是会员该程序必须提供三个选项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

————————————————————————————————

我只给你泡泡排序。

#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();
  }
}