Untitled
unknown
c_cpp
2 years ago
2.4 kB
14
Indexable
#include <bits/stdc++.h>
using namespace std;
class Person{
private:
string name;
int age;
int numHobbies;
string *hobbies;
public:
//constructor
Person(string _name, int _age, int _numHobbies, string *_hobbies)
:name(_name), age(_age), numHobbies(_numHobbies){
hobbies = new string[_numHobbies];
for(int i = 0; i < _numHobbies; ++i){
hobbies[i] = _hobbies[i];
}
}
//default constructor
Person(){
}
//copy constructor
Person(const Person& original)
:name(original.name), age(original.age), numHobbies(original.numHobbies){
hobbies = new string[original.numHobbies];
for(int i = 0; i < original.numHobbies; ++i){
hobbies[i] = original.hobbies[i];
}
}
//copy assignment operator
Person& operator=(const Person& original){
name = original.name;
age = original.age;
numHobbies = original.numHobbies;
hobbies = new string[original.numHobbies];
for(int i = 0; i < original.numHobbies; ++i){
hobbies[i] = original.hobbies[i];
}
return *this;
}
~Person(){
delete[] hobbies;
}
void displayInfo(){
cout << "Name: " << name << ", Age: " << age << ", Number of Hobbies: " << numHobbies << '\n';
cout << "Hobbies: ";
for(int i = 0; i < numHobbies; ++i){
if(i == 0){
cout << hobbies[i];
}else{
cout << ", " << hobbies[i];
}
}
cout << '\n';
}
string getName(){
return name;
}
int getAge(){
return age;
}
int getnumHobbies(){
return numHobbies;
}
};
bool cmp1(Person p1, Person p2){
if(p1.getnumHobbies() != p2.getnumHobbies()){
return p1.getnumHobbies() > p2.getnumHobbies();
}else if(p1.getAge() != p2.getAge()){
return p1.getAge() > p2.getAge();
}
return p1.getName() < p2.getName();
}
int main()
{
int n;
cin >> n;
vector<Person> persons(n);
for (int i = 0; i < n; ++i)
{
string name;
int age, numHobbies;
cin >> name >> age >> numHobbies;
string *hobbies = new string[numHobbies];
for (int j = 0; j < numHobbies; ++j)
{
cin >> hobbies[j];
}
Person temp(name, age, numHobbies, hobbies);
persons[i] = temp;
delete[] hobbies;
}
sort(persons.begin(), persons.end(), cmp1);
for (int i = 0; i < n; ++i)
{
cout << "Person " << i + 1 << " info:" << endl;
persons[i].displayInfo();
}
return 0;
}
Editor is loading...
Leave a Comment