Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何存储C++中按日期排序的预定义值?_C++_Arrays_Sorting_Object_Quicksort - Fatal编程技术网

如何存储C++中按日期排序的预定义值?

如何存储C++中按日期排序的预定义值?,c++,arrays,sorting,object,quicksort,C++,Arrays,Sorting,Object,Quicksort,我想在person对象中存储预定义的硬编码值,并将其显示在屏幕上,并对日期进行排序。如何实现这一点 下面是问题和我的代码。 协会保留一份会员名单,并使用一个程序存储该名单。对于每个会员,记录以下信息 会员编号 姓 名字 此人加入协会的日期 无论他们是否仍然是会员 该计划需要提供三种选择 1输入成员的详细信息(当前成员或过去成员)。成员可以按任意顺序输入。您可以假定成员编号可从现有列表中获得,因此只需将其与其他数据一起输入程序 2提示输入当前日期,并将已成为会员至少10年且仍为当前会员的人员列表作

我想在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

---------------------------------

我只是给你一个泡泡排序

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

以计算机可以理解的格式存储日期。显示时将其转换为字符串。您应该使用比较方法对int或某种结构或类进行排序。或者,使用qsort或std::qsort。在这一点上,你需要做的就是写一个函数,可以比较两个日期,就像C++一样,不是C.std::sort是preferred@Fureeish无法使用std::sort进行排序。我必须实现自己的排序方法。我已经这样做了,但无法对代码中硬编码的现有列表进行排序。它在existpersons中function@zzxyz我不能使用qsort或std排序。我必须实现我自己的排序功能。请告诉我如何对我的列表中的现有列表进行排序existpersons函数中提到的代码