السلام عليكم ورحمة الله وبركاته
عندي مشروع بسيط ومحتاجه مساعدتكم
وعندي امل كبير ان الكل هنا ماراح يقصر معي
عندي كلاس فيه بعض الاخطاء حاولت اعدلها ومن ثم افصله الى ملفات cpp. و h.
لكن مازالت الاخطاء موجوده ..!!
راح اكتب الكود قبل افصله بوجود الاخطاء ..
#include <iostream>
using namespace std;
#include <ctime>//used to det today's date
class Date{
//========================================================================
//---------------- F R I E N D F U N C T I O N S ---------------------
//------------------------------------------------------------------------
//Overloading insertion operator must be as a friend funciton
friend ostream& operator << (ostream& outs, Date& d);
//Overloading extraction operator must be as a friend funciton
friend istream& operator >> (istream& ins, Date& d);
//========================================================================
//------------------------- A T T R I B U T E S --------------------------
//========================================================================
private:
static const int DAY = 1;
static const int MONTH = 2;
static const int YEAR = 3;
int day;
int month;
int year;
//========================================================================
//---------------------------- M E T H O D S -----------------------------
//========================================================================
public:
Date(); //Default constructor
Date (int d, int m, int y); //Constructor
//Getter methods.
int getDay(){return day;}
int getMonth(){return month;}
int getYear(){return year;}
//Setter methods
bool setDay(int d){
if (d > 0 && d < 31){
day = d;
return true;
}
else return false;
}
bool setMonth(int m){
if (m > 0 && m < 13){
month = m;
return true;
}
else return false;
}
bool setYear(int y){
if (y > 1990){
year = y;
return true;
}
else return false;
}
bool setDay(char * d){return setDay(atoi(d));}
bool setMonth(char * m){return setMonth(atoi(m));}
bool setYear(char * y){return setYear(atoi(y));}
//Other methods
Date& addDays(int days);
Date& addMonths(int months);
Date& addYears(int years);
Date& nextDay();
//Operator Overloaders
bool operator ==(const Date& d);
Date operator + (const Date& d);
Date & operator ++ ();
Date operator ++ (int);
int operator [] (int index) const;
//========================================================================
//------------------ H E L P E R F U N C T I O N S -------------------
//========================================================================
//helper function: if given string is an int and not larger than the
//max, return it. Otherwise, return 0;
static int validatePartOfDate(char * toBeValidated, int sec);
};
//Default construcor sets the date to be today's date
Date::Date(){
char today [10];
_strdate(today);
char *tokenPtr;
tokenPtr = strtok(today, "/");
setMonth(tokenPtr);
tokenPtr = strtok(NULL, "/");
setDay(tokenPtr);
tokenPtr = strtok(NULL, "/");
char s[5] = {'2', '0', *tokenPtr, *(tokenPtr+1)};
setYear(s);
}
Date::Date (int d, int m, int y){ setDay(d); setMonth(m); setYear(y);}
Date& Date::addDays(int days){
if (!setDay(this->day + days)){
setDay( ((this->day + days) % 30));
addMonths( (this->day + days) / 30);
}
return *this;
}
Date& Date::addMonths(int months){
if (!setMonth(this->month + months)){
setMonth((this->month + months) % 12);
addYears( (this->month + months) / 12);
}
return *this;
}
Date& Date::addYears(int years){
setYear(year + years);
return *this;
}
Date& Date::nextDay(){
addDays(1);
return *this;
}
bool Date::operator ==(const Date& d){
return (day == d.day && month == d.month && year == d.year);
}
Date Date::operator + (const Date& d)
{ Date date(*this);
date.addDays(d.day);
date.addMonths(d.month);
date.addYears(d.year);
return date;
}
Date & Date::operator ++ (){
nextDay();
return *this;
}
Date Date::operator ++ (int){
Date d(*this);
nextDay();
return d;
}
int Date::operator [] (int index) const
{ switch (index){
case (DAY): return day;
case (MONTH): return month;
case (YEAR): return year;
default: exit(1);
}
}
int Date::validatePartOfDate(char * toBeValidated, int partOfDate){
int i = atoi(toBeValidated);
if (i > 0)
{
switch (partOfDate){
case (DAY):
if (i < 31) return i;
else return 0;
case (MONTH):
if (i < 13) return i;
else return 0;
case (YEAR):
if (i > 1900) return i;
else return 0;
default: return 0;
}
}
return 0;
}
ostream& operator << (ostream& outs, Date& d){
outs << d.day <<"-" << d.month << "-" << d.year;
return outs;
}
istream& operator >> (istream& ins, Date& d){
ins >> d.day;
ins >> d.month;
ins >> d.year;
return ins;
}
int main(){
Date today;
cout<<today<<endl;
Date d1(1,2,1950);
Date d2(3,5, 2004);
cout << "dates equal? " << (d1 == d2)<< endl;
Date difference(10,2,0);
cout << " d1 after 10 days and two months " << (d1 + difference) << endl;
cout << d2;
cout << " after prefix increment " << (++d2) << endl;
cout << d2;
cout << " after adding 29 days " << d2.addDays(29) << endl;
cout << "please enter the difference you wish:" << endl;
cin >> difference;
cout << "difference is now " << difference<< endl;
cout << "days: " << d2[1] << endl;
system("PAUSE");
return 0;
}وهذي محاولتي في التعديل قبل فصل الكود الى ملفات ...
#include <iostream>
using namespace std;
#include <ctime>//used to det today's date
static const int DAY = 1;
static const int MONTH = 2;
static const int YEAR = 3;
class Date{
//========================================================================
//---------------- F R I E N D F U N C T I O N S ---------------------
//------------------------------------------------------------------------
//Overloading insertion operator must be as a friend funciton
friend ostream& operator << (ostream& outs, Date& d);
//Overloading extraction operator must be as a friend funciton
friend istream& operator >> (istream& ins, Date& d);
//========================================================================
//------------------------- A T T R I B U T E S --------------------------
//========================================================================
private:
//========================================================================
//---------------------------- M E T H O D S -----------------------------
//========================================================================
public:
int day;
int month;
int year;
Date(); //Default constructor
Date (int d, int m, int y); //Constructor
//Getter methods.
int getDay(){return day;}
int getMonth(){return month;}
int getYear(){return year;}
//Setter methods
bool setDay(int d){
if (d > 0 && d < 31){
day = d;
return true;
}
else return false;
}
bool setMonth(int m){
if (m > 0 && m < 13){
month = m;
return true;
}
else return false;
}
bool setYear(int y){
if (y > 1990){
year = y;
return true;
}
else return false;
}
bool setDay(char * d){return setDay(atoi(d));}
bool setMonth(char * m){return setMonth(atoi(m));}
bool setYear(char * y){return setYear(atoi(y));}
//Other methods
Date& addDays(int days);
Date& addMonths(int months);
Date& addYears(int years);
Date& nextDay();
//Operator Overloaders
bool operator ==(const Date& d);
Date operator + (const Date& d);
Date & operator ++ ();
Date operator ++ (int);
int operator [] (int index) const;
//========================================================================
//------------------ H E L P E R F U N C T I O N S -------------------
//========================================================================
//helper function: if given string is an int and not larger than the
//max, return it. Otherwise, return 0;
static int validatePartOfDate(char * toBeValidated, int sec);
};
//Default construcor sets the date to be today's date
Date::Date(){
char today [10];
_strdate(today);
char *tokenPtr;
tokenPtr = strtok(today, "/");
setMonth(tokenPtr);
tokenPtr = strtok(NULL, "/");
setDay(tokenPtr);
tokenPtr = strtok(NULL, "/");
char s[5] = {'2', '0', *tokenPtr, *(tokenPtr+1)};
setYear(s);
}
Date::Date (int d, int m, int y){ setDay(d); setMonth(m); setYear(y);}
Date& Date::addDays(int days){
if (!setDay(this->day + days)){
setDay( ((this->day + days) % 30));
addMonths( (this->day + days) / 30);
}
return *this;
}
Date& Date::addMonths(int months){
if (!setMonth(this->month + months)){
setMonth((this->month + months) % 12);
addYears( (this->month + months) / 12);
}
return *this;
}
Date& Date::addYears(int years){
setYear(year + years);
return *this;
}
Date& Date::nextDay(){
addDays(1);
return *this;
}
bool Date::operator ==(const Date& d){
return (day == d.day && month == d.month && year == d.year);
}
Date Date::operator + (const Date& d)
{ Date date(*this);
date.addDays(d.day);
date.addMonths(d.month);
date.addYears(d.year);
return date;
}
Date & Date::operator ++ (){
nextDay();
return *this;
}
Date Date::operator ++ (int){
Date d(*this);
nextDay();
return d;
}
int Date::operator [] (int index) const
{ switch (index){
case (DAY): return day;
case (MONTH): return month;
case (YEAR): return year;
default: exit(1);
}
}
int Date::validatePartOfDate(char * toBeValidated, int partOfDate){
int i = atoi(toBeValidated);
if (i > 0)
{
switch (partOfDate){
case (DAY):
if (i < 31) return i;
else return 0;
case (MONTH):
if (i < 13) return i;
else return 0;
case (YEAR):
if (i > 1900) return i;
else return 0;
default: return 0;
}
}
return 0;
}
ostream& operator << (ostream& outs, Date& d){
outs << d.day <<"-" << d.month << "-" << d.year;
return outs;
}
istream& operator >> (istream& ins, Date& d){
ins >> d.day;
ins >> d.month;
ins >> d.year;
return ins;
}
int main(){
Date today;
cout<<today<<endl;
Date d1(1,2,1950);
Date d2(3,5, 2004);
cout << "dates equal? " << (d1 == d2)<< endl;
Date difference(10,2,0);
cout << " d1 after 10 days and two months " << (d1 + difference) << endl;
cout << d2;
cout << " after prefix increment " << (++d2) << endl;
cout << d2;
cout << " after adding 29 days " << d2.addDays(29) << endl;
cout << "please enter the difference you wish:" << endl;
cin >> difference;
cout << "difference is now " << difference<< endl;
cout << "days: " << d2[1] << endl;
system("PAUSE");
return 0;
}و لما طفشت فصلت الكود الى الملفات :wacko: راح احطها في ملف مرفق
الله يخليكم انا محتاجه معاي احد فاهم وباله طويل
لاني لازم اسلمه بعد العيد مباشره
