Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
Tags
- java정리
- 백준
- 코스닥
- 자바정리
- Python
- 코테
- SNS
- 개인프로젝트
- 개발
- java
- Project
- 코딩
- 빅데이터
- 개발자
- 프로그래밍
- 코딩테스트
- 풀스택프레임워크
- 프로그램
- 자바
- C++
- backend
- 이웃한 칸
- frontend
- 모의 주식
- 코딩독학
- 주가예측
- Reflex
- 자바독학
- 프로그래머스
- 사물인터넷
Archives
- Today
- Total
Creative Code
[C++]디데이 계산기 본문
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
class Date {
int year_;
int month_; // 1부터 12까지.
int day_; // 1 부터 31까지.
public:
void SetDate(int year, int month, int date) {
year_ = year;
month_ = month;
day_ = date;
}
void AddDay(int inc) {
int regular_year[13] = { 0, 31, 59, 90, 120, 151, 181, 212, 243, 273, 304, 334, 365 };
int inregular_year[13] = { 0, 31, 60, 91, 121 ,152 , 182, 213, 244, 274, 305, 335, 366 };
if (inc > 365 || inc < 1) {
std::cout << "범위를 초과하였습니다." << std::endl;
}
else {
day_ = inregular_year[month_ - 1] + day_ + inc;
if ((year_ % 4 || year_ % 400) && ~(year_ % 100)) {
if (day_ > 366) {
day_ -= 366;
year_++;
for (int i = 0; i <= 11; i++) {
if (regular_year[i] < day_ && regular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - regular_year[i];
}
}
}
else {
for (int i = 0; i <= 11; i++) {
if (inregular_year[i] < day_ && inregular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - inregular_year[i];
}
}
}
}
else {
if (day_ > 365) {
day_ -= 365;
year_++;
if ((year_ % 4 || year_ % 400) && ~(year_ % 100)) {
if (day_ > 366) {
day_ -= 366;
year_++;
for (int i = 0; i <= 11; i++) {
if (regular_year[i] < day_ && regular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - regular_year[i];
break;
}
}
}
else {
for (int i = 0; i <= 11; i++) {
if (inregular_year[i] < day_ && inregular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - inregular_year[i];
break;
}
}
}
}
else {
for (int i = 0; i <= 11; i++) {
if (regular_year[i] < day_ && regular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - regular_year[i];
break;
}
}
}
}
else {
for (int i = 0; i <= 11; i++) {
if (regular_year[i] < day_ && regular_year[i + 1] >= day_) {
month_ = i + 1;
day_ = day_ - regular_year[i];
break;
}
}
}
}
}
}
void AddMonth(int inc) {
month_ += inc;
if (month_ > 13) {
int count = 0;
while (month_ >= 1 && month_ <= 12) {
month_ -= 12;
count += 1;
}
year_ += count;
}
}
void AddYear(int inc) {
year_ += inc;
}
void ShowDate() {
std::cout << "날짜 : " << year_ << " 년 " << month_ << " 월 " << day_ << " 일 " << std::endl;
}
};
int main() {
Date day_calculator;
int setting_year;
int setting_month;
int setting_day;
int addday;
int addmonth;
int addyear;
std::cout << " Date클래스 테스트 입니다." << std::endl;
std::cout << std::endl;
std::cout << " 날짜를 설정해주세요 !" << std::endl;
std::cout << " 연도 : ";
std::cin >> setting_year;
std::cout << " 월 : ";
std::cin >> setting_month;
std::cout << " 일 : ";
std::cin >> setting_day;
day_calculator.SetDate(setting_year, setting_month, setting_day);
std::cout << "실행할 항목을 선택해주세요! " << std::endl;
std::cout << "1. 일수 더하기" << std::endl;
std::cout << "2. 월수 더하기" << std::endl;
std::cout << "3. 년수 더하기" << std::endl;
int user_select;
std::cout << "선택 : ";
std::cin >> user_select;
std::cout << std::endl;
switch (user_select) {
case 1 :
std::cout << std::endl;
std::cout << "몇 일을 더할까요 : ";
std::cin >> addday;
day_calculator.AddDay(addday);
std::cout << std::endl;
day_calculator.ShowDate();
break;
case 2:
std::cout << std::endl;
std::cout << "몇 월을 더할까요 : ";
std::cin >> addmonth;
day_calculator.AddMonth(addmonth);
std::cout << std::endl;
day_calculator.ShowDate();
break;
case 3:
std::cout << std::endl;
std::cout << "몇 년을 더할까요 : ";
std::cin >> addyear;
day_calculator.AddYear(addyear);
std::cout << std::endl;
day_calculator.ShowDate();
break;
default:
return 0;
}
return 0;
}
'혼자 만든 Code' 카테고리의 다른 글
[C]축구선수 관리 프로그램 (0) | 2023.08.28 |
---|---|
[C]디데이 계산기 (0) | 2023.08.28 |
c (0) | 2023.08.08 |
[JAVA] 리모컨 프로그램 (0) | 2022.07.20 |
[java]거주가능한 행성을 찾는 프로그램 (0) | 2022.07.19 |