示例#1
0
文件: Date.cpp 项目: kapyar/---
 void Date::fillDate(int d, Month m, int y) 
{
// Ця умова спрацьовує рівно один раз, 
// оскільки першим створеним об’єктом стане
// defaultDate, який буде створено
// до початку виконання програми
   if(!defaultSet)
   {
      defaultSet=true;
      setDefault();
#ifndef NDEBUG
      cout<<"Data constructor defaultDate: "<<*this<<endl;
#endif
// Встановили дату за замовчуванням — і виходимо
      return;
   }
// Тепер аналізуємо параметри:
// неіснуючі (вони нульові) беремо 
// з дати за замовчуванням,
// яка вже гарантовано була визначена
   _day=d? d :defaultDate._day;
   _month=m? m :defaultDate._month;
   _year=y? y: defaultDate._year;

// Готуємося визначити кількість днів у місяці
// 28, 29, 30 чи 31 
   int numberOfDays = numberOfDaysInMonth(_month);
// Перевірка коректності дня і року
   if((_day<1)||(numberOfDays<_day)||(_year<0))
      throw BadDate(_day, _month, _year);
#ifndef NDEBUG
   cout<<"Data constructor: "<<*this<<endl;
#endif
};
示例#2
0
/*
 *  the constructor of Date, it'll throw a BadDate exception if
 *  the input date is illegal.
 */
Date::Date(int dd, Month mm, int yy)
{
    dd = dd ? dd : default_date.d;
    mm = mm ? mm : default_date.m;
    yy = yy ? yy : default_date.y;

    if (mm < jan || mm > dec)
	throw BadDate("incorrect month");
	
    if (dd < 1 || dd > month_days(mm, yy))
	throw BadDate("incorrect day");
    
    d = dd;
    m = mm;
    y = yy;

    cache = new Cache();
    cache->valid = false;
}
示例#3
0
文件: Date.cpp 项目: kapyar/---
//повертає кількість днів у місці у поточній даті
int Date:: numberOfDaysInMonth(int month)
{
	int numberOfDays= 0;
	 switch(month)
   {
// У лютому враховуємо високосний рік
   case feb:
	   numberOfDays=28+leapYear(year());
      break;
   case apr: case jun: case sep: case nov:
      numberOfDays=30;
      break;
   case jan: case mar: case may:
   case jul: case aug: case oct: case dec:
      numberOfDays=31;
      break;
// Місяць виявився некоректним
   default:
      throw BadDate(_day, _month, _year);
   }
	 return numberOfDays;
}