【发布时间】: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