my output is wrong compare the my teacher output, also if any of my files have errors please correct them as wellmyoutput.txtcorr
my output is wrong compare the my teacher output, also if any of my files have errors please correct them as well
Script started on Sat 19 Mar 2022 11:54:49 AM EDT ==67598== Memcheck, a memory error detector ==67598== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==67598== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==67598== Command: ms ==67598== Status Tester —————————————————– Enter following values : abc 123 -123 12 > abc Container: (Invalid Integer) Error #: 0 Problem: Invalid Integer ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x401056: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afdcd0 is 0 bytes inside a block of size 16 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4024F5: sdds::Status::Status(sdds::Status const&) (Status.cpp:22) ==67598== by 0x4019EE: Container::Container(Container const&) (main_prof.cpp:34) ==67598== by 0x40103E: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== > 12 Container: (12) > 123 Container: (ERR#1: value too high) Error #: 1 Problem: value too high > -123 Container: (ERR#-1: value too low) Error #: -1 Problem: value too low ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x40106C: statusTester() (main_prof.cpp:113) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afddc0 is 0 bytes inside a block of size 14 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x40177B: Container::set(int) (main_prof.cpp:39) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Date Tester ——————————————————- Currect Date: 2022/03/19 Test mode: Current Date formatted (C): 2022/03/19 Current Date unformatted (C): 220319 Future Date formatted (F): 2022/05/25 Future Date unformatted (F): 220525 The current date is NOT the same as the future date The current date is the same as the current date The current date is Less than or equal to the future date The current date is Less than or equal to the current date The current date is Less than the future date The future date is greater than or equal to the current date The future date is greater than or equal to the future date The future date is greater than the current date ————– Assigning the Current date to the future date! Now both of the dates are the same! Enter the following: 1- abc 2- 12 3- 1212 4- 121212 5- 221312 6- 220229 7- 220228 > abc Invalid date value > 12 Invalid date valueDate enterd: 2022/03/19 > 1212 Invalid date valueDate enterd: 2022/03/19 > 121212 Invalid date valueDate enterd: 2022/03/19 > 221312 Invalid date valueDate enterd: 2022/03/19 > 220229 Invalid date valueDate enterd: 2022/03/19 > 20220228 Invalid date valueDate enterd: 2022/03/19 ==67598== ==67598== HEAP SUMMARY: ==67598== in use at exit: 31 bytes in 2 blocks ==67598== total heap usage: 32 allocs, 30 frees, 75,963 bytes allocated ==67598== ==67598== 15 bytes in 1 blocks are definitely lost in loss record 1 of 2 ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x4017AD: Container::set(int) (main_prof.cpp:43) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== 16 bytes in 1 blocks are definitely lost in loss record 2 of 2 ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x4018CF: Container::read(std::istream&) (main_prof.cpp:62) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== LEAK SUMMARY: ==67598== definitely lost: 31 bytes in 2 blocks ==67598== indirectly lost: 0 bytes in 0 blocks ==67598== possibly lost: 0 bytes in 0 blocks ==67598== still reachable: 0 bytes in 0 blocks ==67598== suppressed: 0 bytes in 0 blocks ==67598== ==67598== ERROR SUMMARY: 6 errors from 4 contexts (suppressed: 0 from 0) ==67598== ==67598== 1 errors in context 1 of 4: ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x40106C: statusTester() (main_prof.cpp:113) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afddc0 is 0 bytes inside a block of size 14 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x40177B: Container::set(int) (main_prof.cpp:39) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== ==67598== 3 errors in context 2 of 4: ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x401056: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afdcd0 is 0 bytes inside a block of size 16 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4024F5: sdds::Status::Status(sdds::Status const&) (Status.cpp:22) ==67598== by 0x4019EE: Container::Container(Container const&) (main_prof.cpp:34) ==67598== by 0x40103E: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== ERROR SUMMARY: 6 errors from 4 contexts (suppressed: 0 from 0) Script done on Sat 19 Mar 2022 11:56:32 AM EDT
,
correct output this is the correct output Script started on Wed 02 Mar 2022 07:28:07 PM EST ==112027== Memcheck, a memory error detector ==112027== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==112027== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==112027== Command: ws ==112027== Status Tester —————————————————– Enter following values : abc 123 -123 12 > abc Container: (Invalid Integer) Error #: 0 Problem: Invalid Integer > 123 Container: (ERR#1: value too high) Error #: 1 Problem: value too high > -123 Container: (ERR#-1: value too low) Error #: -1 Problem: value too low > 12 Container: (12) Date Tester ——————————————————- Current Date: 2022/03/02 Test mode: Current Date formatted (C): 2022/03/31 Current Date unformatted (C): 220331 Future Date formatted (F): 2022/05/25 Future Date unformatted (F): 220525 The current date is NOT the same as the future date The current date is the same as the current date The current date is Less than or equal to the future date The current date is Less than or equal to the current date The current date is Less than the future date The future date is greater than or equal to the current date The future date is greater than or equal to the future date The future date is greater than the current date ————– Assigning the Current date to the future date! Now both of the dates are the same! Enter the following: 1- abc 2- 12 3- 1212 4- 121212 5- 221312 6- 220229 7- 220228 > abc Invalid date value > 12 ERR#2: Invalid month in date > 1212 Date enterd: 2022/12/12 > 121212 ERR#1: Invalid year in date > 221312 ERR#2: Invalid month in date > 220229 ERR#3: Invalid day in date > 220228 Date enterd: 2022/02/28 ==112027== ==112027== HEAP SUMMARY: ==112027== in use at exit: 0 bytes in 0 blocks ==112027== total heap usage: 20 allocs, 20 frees, 75,812 bytes allocated ==112027== ==112027== All heap blocks were freed — no leaks are possible ==112027== ==112027== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) Script done on Wed 02 Mar 2022 07:29:34 PM EST this is my output cript started on Sat 19 Mar 2022 11:54:49 AM EDT ==67598== Memcheck, a memory error detector ==67598== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al. ==67598== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info ==67598== Command: ms ==67598== Status Tester —————————————————– Enter following values : abc 123 -123 12 > abc Container: (Invalid Integer) Error #: 0 Problem: Invalid Integer ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x401056: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afdcd0 is 0 bytes inside a block of size 16 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4024F5: sdds::Status::Status(sdds::Status const&) (Status.cpp:22) ==67598== by 0x4019EE: Container::Container(Container const&) (main_prof.cpp:34) ==67598== by 0x40103E: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== > 12 Container: (12) > 123 Container: (ERR#1: value too high) Error #: 1 Problem: value too high > -123 Container: (ERR#-1: value too low) Error #: -1 Problem: value too low ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x40106C: statusTester() (main_prof.cpp:113) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afddc0 is 0 bytes inside a block of size 14 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x40177B: Container::set(int) (main_prof.cpp:39) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Date Tester ——————————————————- Currect Date: 2022/03/19 Test mode: Current Date formatted (C): 2022/03/19 Current Date unformatted (C): 220319 Future Date formatted (F): 2022/05/25 Future Date unformatted (F): 220525 The current date is NOT the same as the future date The current date is the same as the current date The current date is Less than or equal to the future date The current date is Less than or equal to the current date The current date is Less than the future date The future date is greater than or equal to the current date The future date is greater than or equal to the future date The future date is greater than the current date ————– Assigning the Current date to the future date! Now both of the dates are the same! Enter the following: 1- abc 2- 12 3- 1212 4- 121212 5- 221312 6- 220229 7- 220228 > abc Invalid date value > 12 Invalid date valueDate enterd: 2022/03/19 > 1212 Invalid date valueDate enterd: 2022/03/19 > 121212 Invalid date valueDate enterd: 2022/03/19 > 221312 Invalid date valueDate enterd: 2022/03/19 > 220229 Invalid date valueDate enterd: 2022/03/19 > 20220228 Invalid date valueDate enterd: 2022/03/19 ==67598== ==67598== HEAP SUMMARY: ==67598== in use at exit: 31 bytes in 2 blocks ==67598== total heap usage: 32 allocs, 30 frees, 75,963 bytes allocated ==67598== ==67598== 15 bytes in 1 blocks are definitely lost in loss record 1 of 2 ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x4017AD: Container::set(int) (main_prof.cpp:43) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== 16 bytes in 1 blocks are definitely lost in loss record 2 of 2 ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x4018CF: Container::read(std::istream&) (main_prof.cpp:62) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== LEAK SUMMARY: ==67598== definitely lost: 31 bytes in 2 blocks ==67598== indirectly lost: 0 bytes in 0 blocks ==67598== possibly lost: 0 bytes in 0 blocks ==67598== still reachable: 0 bytes in 0 blocks ==67598== suppressed: 0 bytes in 0 blocks ==67598== ==67598== ERROR SUMMARY: 6 errors from 4 contexts (suppressed: 0 from 0) ==67598== ==67598== 1 errors in context 1 of 4: ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x40106C: statusTester() (main_prof.cpp:113) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afddc0 is 0 bytes inside a block of size 14 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4025F9: sdds::Status::operator=(char const*) (Status.cpp:50) ==67598== by 0x40177B: Container::set(int) (main_prof.cpp:39) ==67598== by 0x4018B8: Container::read(std::istream&) (main_prof.cpp:59) ==67598== by 0x400EF1: operator>>(std::istream&, Container&) (main_prof.cpp:95) ==67598== by 0x40102B: statusTester() (main_prof.cpp:111) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== ==67598== 3 errors in context 2 of 4: ==67598== Mismatched free() / delete / delete [] ==67598== at 0x4C2B51D: operator delete(void*) (vg_replace_malloc.c:586) ==67598== by 0x4025CE: sdds::Status::~Status() (Status.cpp:45) ==67598== by 0x4019B5: Container::~Container() (main_prof.cpp:34) ==67598== by 0x401056: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== Address 0x5afdcd0 is 0 bytes inside a block of size 16 alloc'd ==67598== at 0x4C2AC38: operator new[](unsigned long) (vg_replace_malloc.c:433) ==67598== by 0x4024F5: sdds::Status::Status(sdds::Status const&) (Status.cpp:22) ==67598== by 0x4019EE: Container::Container(Container const&) (main_prof.cpp:34) ==67598== by 0x40103E: statusTester() (main_prof.cpp:112) ==67598== by 0x400E81: main (main_prof.cpp:23) ==67598== ==67598== ERROR SUMMARY: 6 errors from 4 contexts (suppressed: 0 from 0) Script done on Sat 19 Mar 2022 11:56:32 AM EDT date.cpp #include <iostream> #include <cstring> #include <ctime> #include "Date.h" namespace sdds { int Date::currentYear() { time_t current_time; current_time = time(NULL); int year = 1970 + current_time / 31537970; return year; } int Date::currentMonth() { std::time_t current_time; current_time = std::time(NULL); std::tm* now = std::localtime(¤t_time); int month = now->tm_mon + 1; return month; } int Date::currentDay() { std::time_t current_time; current_time = std::time(NULL); std::tm* now = std::localtime(¤t_time); int day = now->tm_mday; return day; } int Date::numOfDays(int mon, int year) const { int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, -1 }; int month = mon >= 1 && mon <= 12 ? mon : 13; month–; return days[month] + int((month == 1) * ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } bool Date::validate() { bool isValid; int min_year = currentYear(); if (m_year < min_year || m_year > max_year) { State = "Invalid year in date"; State = 1; isValid = false; } else if (m_month < 1 || m_month > 12) { State = "Invalid month in date"; State = 2; isValid = false; } else if (m_day < 1 || m_day > numOfDays(m_month, m_year)) { State = "Invalid day in date"; State = 3; isValid = false; } else { State.clear(); isValid = true; } return isValid; } Date::Date() { m_year = currentYear(); m_month = currentMonth(); m_day = currentDay(); m_formatted = true; } Date::Date(int year, int month, int day) { m_year = year; m_month = month; m_day = day; m_formatted = true; } int Date::uniqueDateValue()const { return m_year * 372 + m_month * 31 + m_day; } bool Date::operator==(const Date& data) const { return (this->uniqueDateValue() == data.uniqueDateValue()); } bool Date::operator!=(const Date& data) const { return (this->uniqueDateValue() != data.uniqueDateValue()); } bool Date::operator<(const Date& data) const { return (this->uniqueDateValue() < data.uniqueDateValue()); } bool Date::operator>(const Date& data)const { return (this->uniqueDateValue() > data.uniqueDateValue()); } bool Date::operator<=(const Date& data)const { return (this->uniqueDateValue() <= data.uniqueDateValue()); } bool Date::operator>=(const Date& data)const { return (this->uniqueDateValue() >= data.uniqueDateValue()); } const Status& Date::state() { return State; } Date& Date::formatted(bool formatted) { m_formatted = formatted; return *this; } std::ostream& Date::write(std::ostream& ostr) const { if (m_formatted == true) { ostr << m_year << "/"; if (m_month < 10) { ostr << "0" << m_month << "/"; } else { ostr << m_month << "/"; } if (m_day < 10) { ostr << "0" << m_day; } else { ostr << m_day; } } else if (m_formatted == false) { ostr << m_year % 100; if (m_month < 10) { ostr << "0" << m_month; } else { ostr << m_month; } if (m_day < 10) { ostr << "0" << m_day; } else { ostr << m_day; } } return ostr; } std::istream& Date::read(std::istream& istr) { int date=0, size=0; string tmp; istr >> date; size = tmp.size(); if (size == 2) { m_year = currentYear(); m_month = 0; m_day = date; } else if (size == 4) { m_year = currentYear(); m_month = date / 100; m_day = date % 100; } else if (size == 6) { m_year = 2000 + date / 10000; m_month = (date / 100) % 100; m_day = date % 100; } else { cout << "Invalid date value"; } if (validate() == false) istr.std::istream::setstate(ios::badbit); return istr; } std::ostream& operator<<(std::ostream& ostr, Date const& data) { return data.write(ostr); } std::istream& operator>>(std::istream& istr, Date& data) { return data.read(istr); } } status.cpp #include "Status.h" namespace sdds { Status::Status(char* str, int code) { if (str != NULL) { description = new char[strlen(str) + 1]; strcpy(description, str); } else description = NULL; status_code = code; } Status::Status(const Status& s) { if (!s) { description = new char[strlen(s.description) + 1]; strcpy(description, s.description); } else description = NULL; status_code = s.status_code; } Status& Status::operator=(const Status& s) { if (!s) { description = new char[strlen(s.description) + 1]; strcpy(description, s.description); } else description = NULL; status_code = s.status_code; return *this; } Status::~Status() { delete(description); } Status& Status::operator=(const char* str) { description = new char[strlen(str) + 1]; strcpy(description, str); return *this; } Status& Status::operator=(const int code) { status_code = code; return *this; } Status::operator bool() const { if (description == NULL) return true; else return false; } Status::operator int() const { return status_code; } Status::operator char* () const { return (char*)description; } ostream& operator<<(ostream& out, const Status& s) { if (!s) { if (s.status_code != 0) out << "ERR#" << s.status_code << ": "; out << s.description; } return out; } Status& Status::clear() { description = NULL; status_code = 0; return *this; } } utils.cpp #define _CRT_SECURE_NO_WARNINGS #include <iostream> #include <ctime> #include "Utils.h" using namespace std; namespace sdds { Utils ut; void Utils::testMode(bool testmode) { m_testMode = testmode; } void Utils::getSystemDate(int* year, int* mon, int* day) { if (m_testMode) { if (day) *day = sdds_testDay; if (mon) *mon = sdds_testMon; if (year) *year = sdds_testYear; } else { time_t t = std::time(NULL); tm lt = *localtime(&t); if (day) *day = lt.tm_mday; if (mon) *mon = lt.tm_mon + 1; if (year) *year = lt.tm_year + 1900; } } int Utils::daysOfMon(int month, int year)const { int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31, -1 }; int mon = (month >= 1 && month <= 12 ? month : 13) – 1; return days[mon] + int((mon == 1) * ((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0)); } } date.h #ifndef SDDS_DATE_H #define SDDS_DATE_H #include <iostream> #include "Status.h" using namespace std; namespace sdds { const int max_year = 2030; class Date { private: int m_year, m_month, m_day; Status State; int uniqueDateValue() const; bool m_formatted; bool validate(); public: Date(); Date(int year, int month, int day); int numOfDays(int month, int year) const; int currentYear(); int currentMonth(); int currentDay(); bool operator==(const Date& data) const; bool operator!=(const Date& data) const; bool operator<(const Date& data) const; bool operator>(const Date& data) const; bool operator<=(const Date& data) const; bool operator>=(const Date& data) const; const Status& state(); Date& formatted(bool formatted); std::istream& read(std::istream& istr); std::ostream& write(std::ostream& ostr) const; }; std::ostream& operator<<(std::ostream& ostr, Date const& data); std::istream& operator>>(std::istream& istr, Date& data); } #endif status.h #ifndef SDDS_STATUS_H #define SDDS_STATUS_H #include<iostream> #include<cstring> using namespace std; namespace sdds { class Status { char* description; int status_code; public: Status(char* str = NULL, int code = 0); Status(const Status& s); Status& operator=(const Status& s); ~Status(); Status& operator=(const char* str); Status& operator=(const int code); operator bool() const; operator int() const; operator char* () const; friend ostream& operator<<(ostream& out, const Status& s); Status& clear(); }; } #endif // !SDDS_STATUS_H utils.h #ifndef SDDS_UTILS_H #define SDDS_UTILS_H namespace sdds { const int sdds_testYear = 2022; const int sdds_testMon = 03; const int sdds_testDay = 31; class Utils { bool m_testMode = false; public: void getSystemDate(int* year = nullptr, int* mon = nullptr, int* day = nullptr); int daysOfMon(int mon, int year)const; void testMode(bool testmode = true); }; extern Utils ut; } #endif // !SDDS_UTILS_H main.cpp #include <iostream> #include "Date.h" #include "Utils.h" #include "Status.h" using namespace std; using namespace sdds; void statusTester(); void dateTester(); int main() { cout << "Status Tester —————————————————–" << endl; statusTester(); cout << "Date Tester ——————————————————-" << endl; dateTester(); } // Copied from StatusTestr.cpp const int c_min{ 0 }; const int c_max{ 100 }; class Container { int m_val{}; sdds::Status m_state; Container& set(int value) { if (value < c_min) { m_state = "value too low"; m_state = -1; } else if (value > c_max) { m_state = "value too high"; m_state = 1; } else { m_state.clear(); } return *this; } public: Container(int value = 0) { set(value); } istream& read(istream& istr = cin) { istr >> m_val; m_state.clear(); if (istr) { set(m_val); } else { m_state = "Invalid Integer"; istr.clear(); } istr.ignore(1000, 'n'); return istr; } ostream& write(ostream& ostr = cout)const { if (m_state) { ostr << m_val; } else { ostr << m_state; } return ostr; } Container& value(int val) { set(val); return *this; } int value()const { return m_val; } operator bool()const { return m_state; } const sdds::Status& state()const { return m_state; } }; ostream& operator<<(ostream& ostr, const Container& I) { return I.write(ostr); } istream& operator>>(istream& istr, Container& I) { return I.read(istr); } void prnContainer(Container C) { cout << "Container: (" << C << ")" << endl; if (!C) { cout << "Error #: " << int(C.state()) << endl; cout << "Problem: " << (const char*)(C.state()) << endl; } } void statusTester() { Container c; cout << "Enter following values :nabcn123n-123n12" << endl; for (int i = 0; i < 4; i++) { cout << "> "; cin >> c; prnContainer(c); } } // Copied from DateTester.cpp void testDate() { Date D; cout << "> "; cin >> D; if (!cin) { cin.clear(); cin.ignore(1000, 'n'); cout << D.state() << endl; } else { cout << "Date enterd: " << D << endl; } } void dateTester() { cout << "Current Date: " << Date() << endl; cout << "Test mode: " << endl; ut.testMode(); Date C; Date F(2022, 5, 25); cout << "Current Date formatted (C): " << C << endl; C.formatted(false); cout << "Current Date unformatted (C): " << C << endl; cout << "Future Date formatted (F): " << F << endl; F.formatted(false); cout << "Future Date unformatted (F): " << F << endl; cout << "The current date is" << (C != F ? " NOT" : "") << " the same as the future date" << endl; cout << "The current date is" << (C == C ? "" : " NOT") << " the same as the current date" << endl; cout << "The curre
Collepals.com Plagiarism Free Papers
Are you looking for custom essay writing service or even dissertation writing services? Just request for our write my paper service, and we'll match you with the best essay writer in your subject! With an exceptional team of professional academic experts in a wide range of subjects, we can guarantee you an unrivaled quality of custom-written papers.
Get ZERO PLAGIARISM, HUMAN WRITTEN ESSAYS
Why Hire Collepals.com writers to do your paper?
Quality- We are experienced and have access to ample research materials.
We write plagiarism Free Content
Confidential- We never share or sell your personal information to third parties.
Support-Chat with us today! We are always waiting to answer all your questions.