From 4e2e5f72a25fc1f880147a8dbb9c71a72ddf4d10 Mon Sep 17 00:00:00 2001 From: portersky Date: Thu, 8 Oct 2026 10:08:48 +0200 Subject: [PATCH] feat(cmat): Completed Ex61 Part 1 --- cmat/Ex61/main.cpp | 144 ++++++++++++++++++++++----------------------- 1 file changed, 69 insertions(+), 75 deletions(-) diff --git a/cmat/Ex61/main.cpp b/cmat/Ex61/main.cpp index 5ec24ff..d9de8d4 100644 --- a/cmat/Ex61/main.cpp +++ b/cmat/Ex61/main.cpp @@ -1,75 +1,69 @@ - -#include -#include -#include - -#include "Person.h" - -#include "PersonException.h" -#include - -using std::cin; -using std::cout; -using std::string; -using std::exception; - -int main() { - std::vector people; - - string namePrompt = "Enter name: "; - string name; - string agePrompt = "Enter age: "; - int age; - string salaryPrompt = "Enter salary: "; - int salary; - - cout << namePrompt; - cin >> name; - - while (name != "q") { - try { - cout << agePrompt; - cin >> age; - - if (!cin) { - cin.clear(); - string dummy; - cin >> dummy; - throw PersonException("invalid age"); - } - - Person *personPtr = new Person(name, age); - - cout << salaryPrompt; - cin >> salary; - if (!cin) { - cin.clear(); - string dummy; - cin >> dummy; - throw PersonException("invalid salary"); - } - - personPtr->setSalary(salary); - - people.push_back(personPtr); - } - - catch (exception &e) { - cout << "PersonException thrown: " << e.what() << '\n'; - } - - cout << "There are " << Person::GetCount() << " Person(s), " << people.size() << " in vector\n"; - - cout << namePrompt; - cin >> name; - } - - // delete all the person(s) in the vector - for (std::vector::iterator iter = people.begin(); iter != people.end(); ++iter) { - delete *iter; - } - - cout << "There are " << Person::GetCount() << " Person(s) left dangling\n"; - - return 0; -} + +#include +#include +#include +#include + +#include "Person.h" + +#include "PersonException.h" +#include + +using std::cin; +using std::cout; +using std::string; +using std::exception; + +int main() { + std::vector> people; + + string namePrompt = "Enter name: "; + string name; + string agePrompt = "Enter age: "; + int age; + string salaryPrompt = "Enter salary: "; + int salary; + + cout << namePrompt; + cin >> name; + + while (name != "q") { + try { + cout << agePrompt; + cin >> age; + + if (!cin) { + cin.clear(); + string dummy; + cin >> dummy; + throw PersonException("invalid age"); + } + + auto personPtr = std::make_shared(name, age); + + cout << salaryPrompt; + cin >> salary; + if (!cin) { + cin.clear(); + string dummy; + cin >> dummy; + throw PersonException("invalid salary"); + } + + personPtr->setSalary(salary); + + people.push_back(personPtr); + } + + catch (exception &e) { + cout << "PersonException thrown: " << e.what() << '\n'; + } + + cout << "There are " << Person::GetCount() << " Person(s), " << people.size() << " in vector\n"; + + cout << namePrompt; + cin >> name; + } + + return 0; +}