// 月の日数. static const int days_of_month[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; // 指定した日付を元旦からの日数に変換. int Diary::DateToPage(int m, int d) const { // 正しい日付か判定. if (m < 1 || m > 12 || d < 1 || d > days_of_month[m-1]) { cerr << "Error of date: " << m << "/" << d << endl; return -1; } // 日数を計算. int days = 0; for (int i = 0; i < m - 1; i++) days += days_of_month[i]; return days + d; } // 指定したページの日記を読む. string Diary::Read(int p) const { return Notebook::Read(p); } // 指定した日付の日記を読む. string Diary::Read(int m, int d) const { return Read(DateToPage(m, d)); } // 指定したページに日記を書く. void Diary::Write(string str, int p) { Notebook::Write(str, p); } // 指定した日付の日記を書く. void Diary::Write(int m, int d, string str) { Write(str, DateToPage(m, d)); }