|
i cant sort the names in alphabetical order though sort function was used..
whats wrong with my program?
#include<iostream>
#include<string>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
class Person{
private :
char *personName;
long personphonenumber;
public:
Person(char *name, long phoneNumber);
~Person();
void PrintPerson();
void PrintFile();
friend bool operator<(const Person& left, const Person& right);};
bool operator<(const Person& left, const Person& right){
return left.personName < right.personName;
}
Person::Person(char *name, long phoneNumber){
personName = new char[sizeof(name) + 1];
for(int ii = 0; ii <= (sizeof(name) + 1); ii++){
personName[ii] = name[ii];
personphonenumber = phoneNumber;
}
cout << "Creating Employee: " << personName << "\t" << "Phone Number: " << personphonenumber << endl;
}
Person::~Person(){
//delete[] personName;
//cout << "Deleting Employee: " << personName << "\t" << "Phone Number: " << endl;
}
void Person::PrintPerson(){
cout << "----" << endl;
cout << "Name: " << personName << endl;
cout << "Phone Number: " << personphonenumber << endl;
cout << "----" << endl;
}
void Person::PrintFile(){
fstream oWrite; oWrite.open("/forum/Data.txt", ios::out | ios::app);
oWrite << "Name: " << personName << "\t" << endl;
oWrite << "Phone Number: " << personphonenumber << "\t" << endl;
oWrite << "\n\n";
oWrite.close();
}
int main(int argc, char *argv[]){
char *personName;
char name;
personName = new char[sizeof(name) + 1];
long personphonenumber;
int nInput;
int nNum;
bool cont = true;
Person *personArray;
vector<Person> details;
vector<Person>::iterator lpi;
while(cont){
do{
if(cin.fail()){
cin.clear();
while(cin.get() != '\n');
}
cout << "\nPlease select: \nTo create a new data enter '1' \nTo print the data enter '2' \nTo sort the name in alphabetical order enter '3' \nTo quit enter '4'" << endl;
cin >> nInput;
}
while(cin.fail() && cout << "\nPlease enter your selection again.. " << endl);
switch(nInput){
case 1:
//for(int ii = 0; ii < details.size(); ii++){
cout << "Please enter the name: ";
cin >> personName;
cout << endl;
do{
if(cin.fail()){
cin.clear();
while(cin.get() != '\n');
}
cout << "Please enter the phone number: ";
cin >> personphonenumber;
cout << endl;
}
while(cin.fail() && cout << "\nPlease enter again..");
personArray = new Person(personName, personphonenumber);
details.push_back(*personArray);
break;
case 2:
for(lpi = details.begin(); lpi != details.end(); ++lpi){
lpi -> PrintPerson();
lpi -> PrintFile();
}
break;
case 3:
sort(details.begin(), details.end());
for(lpi = details.begin();
lpi != details.end(); lpi++){
lpi -> PrintPerson();
lpi -> PrintFile();
}
break;
case 4:
cont = false;
break;
default:
cout << "Invalid input try again" << endl;
break;
}
}
//delete[] personArray;
//delete[] personName;
return EXIT_SUCCESS;}
|
|
|
|
|
|
|
// |