【问题标题】:sorting patient data inside a struct c++在struct c ++中对患者数据进行排序
【发布时间】:2022-11-01 15:42:12
【问题描述】:

我需要存储患者记录并对其进行排序我已经创建了一个结构并且我使用了比较功能以便按姓氏对它们进行排序。

创建了一个比较函数。数据应该与 C++ 的其他数据链接进行排序是使用原始语言的语言。也是将数据放入容器(向量)然后对其进行排序示例 排序前的数据:

name:man
surname:april
id:12
name:foul
surname:march
id:13

排序后的数据:

name:foul
surname:march
id:12

name:man
surname:april
id:12

该数据应该根据姓氏按字母顺序排序。 下面是输入数据的代码和我试图做的排序。

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

typedef struct patient {
    // this are the attributes
    int doctorsID;
    int patientsID;
    std::string Firstname;
    std::string surname;
    char omang[20];
    char passportnumber[20];
    char emailaddress[20];
    char physicaladdress[20];
    char patientdiagnostics[100];
    char recommendedtreatment[100];
    void input()
    {
        cout << "---------\n";
        cout << "Enter Doctors ID: " << endl;
        cin >> doctorsID;
        cout << "Enter Patient ID: " << endl;
        cin >> patientsID;
        cout << "First Name: " << endl;
        cin >> Firstname;
        cout << "Enter surname: " << endl;
        cin >> surname;
        cout << "omang: " << endl;
        cin >> omang;
        cout << "Enter Passport number: " << endl;
        cin >> passportnumber;
        cout << "Enter Email Address: " << endl;
        cin >> emailaddress;
        cout << "Enter Physical Address: " << endl;
        cin >> physicaladdress;
        cout << "Enter Patient Diagnostics: " << endl;
        cin >> patientdiagnostics;
        cout << "Enter reccomended Treatment: " << endl;
        cin >> recommendedtreatment;
        ofstream MyFile("filename.txt");
        MyFile << doctorsID;
        MyFile << patientsID;
        MyFile << Firstname;
        MyFile << surname;
        MyFile << omang;
        MyFile << passportnumber;
        MyFile << emailaddress;
        MyFile << physicaladdress;
        MyFile << patientdiagnostics;
        MyFile << recommendedtreatment;
        MyFile.close();
    }
    void view_data()
    {
        string myText;
        ifstream MyFile("filename.txt");
        while (getline(MyFile, myText)) {
            cout << myText;
        }
        MyFile.close();
    }

} user;
bool patientcompare(patient lhs, patient rhs) { return lhs.surname < rhs.surname; }

int main()
{
    patient user;
    int x;
    cout << "Enter Option" << endl;
    cin >> x;
    switch (x) {
    case 1:
        user.input();
        break;
    case 2:
        user.view_data();
        break;
    case 3:
        patient array[1000];
        std::sort(array, array + 1000, patientcompare);
        break;
    case 5:
        break;
    }
    return 0;
}

【问题讨论】:

  • 您正在对一组默认初始化对象进行排序,然后不用于其他任何事情?
  • case 3 中,您正在对未初始化的数组进行排序,与user 无关。
  • 由于您在此代码中唯一的 sort 是针对一千个构造不正确的 patient 记录的数组调用的,并且没有实际的输入数据,因此它不起作用也就不足为奇了。并提高你的警告。

标签: c++ sorting oop struct project


【解决方案1】:

您可以使用std::sort 算法对您的患者数组进行排序。您需要为std::sort 提供自定义比较功能。比较函数应该采用两个const patient&amp; 参数,如果第一个患者应该在排序数组中的第二个患者之前,则返回true,否则返回false。

以下是如何按姓氏对患者数组进行排序的示例:

#include <algorithm>
#include <string>

bool patientcompare(const patient& lhs, const patient& rhs)
{
    return lhs.surname < rhs.surname;
}

int main()
{
    patient array[1000];
    std::sort(array, array + 1000, patientcompare);
    return 0;
}

【讨论】:

    猜你喜欢
    • 2020-02-04
    • 1970-01-01
    • 2019-08-12
    • 2010-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多