K.Mohammadreza
یک شنبه 10 اردیبهشت 1391, 20:21 عصر
با سلام من با برنامه c free کار میکنم و یک console app با زبان c++ نوشتم یک کلاس برای تاریخ تعریف کردم به شکل زیر
#include <iostream>
#include <fstream>
#include <cctype>
#include <iomanip>
using namespace std;
class Date
{
public:
Date();
void SPrint();
float DPrint();
void SetDay(int = 1);
void SetMonth(int = 1);
void SetYear(int yr = 1900){year = yr;}
int GetDay(){return day;}
int GetMonth(){return month;}
int GetYear(){return year;}
private:
int month; // 1-12
int day; // 1-31 based on month
int year; // any year
};
Date::Date()
{
day = 1;
month = 1;
year = 1900;
}
float Date::DPrint()
{
return(year*10000 + month*100 + day);
}
void Date::SPrint()
{
cout<<year<<"/"<<month<<"/"<<day;
}
void Date::SetDay(int dy)
{
static const int daysPerMonth[ 13 ] =
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ( dy > 0 && dy <= daysPerMonth[ month ] )
{
day = dy;
}
if ( month == 2 && // February: Check for leap year
dy == 29 &&
( year % 400 == 0 ||
( year % 4 == 0 && year % 100 != 0 ) ) )
{
day = dy;
}
}
void Date::SetMonth(int mn)
{
if ( mn > 0 && mn <= 12 ) // validate the month
{
month = mn;
}
else
{
month = 1;
}
}
مشکل تابع SPrint() می باشد میخوام بجای چاپ تاریخ به آن شکل دقیقا به همان شکل به عنوان خروجی تابع فرستاده شود یعنی
char *SPrint()
و زمانیکه تابع SPrint() را فراخوانی مبکنم متغیر منصوب مقداری شبیه 1391/02/10 گرفته باشد.
با تشکر
#include <iostream>
#include <fstream>
#include <cctype>
#include <iomanip>
using namespace std;
class Date
{
public:
Date();
void SPrint();
float DPrint();
void SetDay(int = 1);
void SetMonth(int = 1);
void SetYear(int yr = 1900){year = yr;}
int GetDay(){return day;}
int GetMonth(){return month;}
int GetYear(){return year;}
private:
int month; // 1-12
int day; // 1-31 based on month
int year; // any year
};
Date::Date()
{
day = 1;
month = 1;
year = 1900;
}
float Date::DPrint()
{
return(year*10000 + month*100 + day);
}
void Date::SPrint()
{
cout<<year<<"/"<<month<<"/"<<day;
}
void Date::SetDay(int dy)
{
static const int daysPerMonth[ 13 ] =
{0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if ( dy > 0 && dy <= daysPerMonth[ month ] )
{
day = dy;
}
if ( month == 2 && // February: Check for leap year
dy == 29 &&
( year % 400 == 0 ||
( year % 4 == 0 && year % 100 != 0 ) ) )
{
day = dy;
}
}
void Date::SetMonth(int mn)
{
if ( mn > 0 && mn <= 12 ) // validate the month
{
month = mn;
}
else
{
month = 1;
}
}
مشکل تابع SPrint() می باشد میخوام بجای چاپ تاریخ به آن شکل دقیقا به همان شکل به عنوان خروجی تابع فرستاده شود یعنی
char *SPrint()
و زمانیکه تابع SPrint() را فراخوانی مبکنم متغیر منصوب مقداری شبیه 1391/02/10 گرفته باشد.
با تشکر