디시인사이드 갤러리

갤러리 이슈박스, 최근방문 갤러리

갤러리 본문 영역

형들 c++질문이야

살려줘(59.15) 2010.11.28 21:39:41
조회 96 추천 0 댓글 11

이런소스인데
내가 과제로 작성한거야
근데 계속 모든년이 윤년이라고 ..하네 제발좀 도와줘
C++고수횽아들 이거좀 해결좀해줘 ㅜㅜ

//년, 월, 일을 각각 입력받아 해당하는 날짜의 요일을 출력하는 프로그램
#include <stdio.h>

int GetYearFromUser(void);     //사용자로부터 연도를 입력받는 함수
int GetMonthFromUser(void);     //사용자로부터 월을 입력받는 함수
int GetDayFromUser(int year, int month); //사용자로부터 일을 입력받는 함수
void PrintDay(int year, int month, int day);//해당하는 날짜의 요일을 출력하는 함수
int DayOfDate(int year, int month, int day);//해당하는 날짜의 요일 인덱스를 넘겨주는 함수
int IsLeapYear(int year);     //윤년이면 True를 넘겨주는 함수
char* DayToString(int day);     //요일 인덱스를 문자열로 바꾸어 넘겨주는 함수

void main(void)
{
 int year, month, day;   //변수선언
 year=GetYearFromUser();   //사용자로부터 연도를 입력받는 함수 호출 후 해당 변수에 저장
 month=GetMonthFromUser();  //사용자로부터 월을 입력받는 함수 호출 후 해당 변수에 저장
 day=GetDayFromUser(year, month);//사용자로부터 일을 입력받는 함수 호출 후 해당 변수에 저장
 PrintDay(year, month, day);  //출력
}

int GetYearFromUser(void)
{
 int year; //연도에 대한 변수 지정
 while(1)
 {
  printf("연을 입력하세요 ==>");
  scanf("%d", &year);  //년을 입력받음
  if(year>=1900)
   return(year); 
  printf("입력오류 : 1900년 이상이어야 합니다.\\n다시입력하세요.\\n");
   //반복문과 조건문을 이용하여 년도입력범위를 확인(입력범위가 틀린경우 다시 입력받음)
   //단, 연도입력의 범위는 1900년 이상이어야 함
   //입력받은 년도를 return 함
 }
}
int GetMonthFromUser(void)
{
 int month;//월에 대한 변수 지정
 while(1)
 {
  printf("월을 입력하세요 ==>");
  scanf("%d", &month); //월을 입력받음
  if(1<=month && month<=12)
   return(month);  //반복문과 조건문을 이용하여 월의 입력범위를 확인(입력범위가 틀린경우 다시 입력받음)
  printf("입력오류 : 월은 1에서 12사이어야 합니다.\\n다시입력하세요.\\n");  //입력받은 월을 return 함
 }
}
int GetDayFromUser(int year, int month)
{
 int day, leapyear; //일과 윤달을 계산하기 위한 변수 지정
 while(1)
 {
  printf("일을 입력하세요 ==>");
  scanf("%d", &day); //일을 입력받음
  if(month ==1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
  {
   if(1<=day && day<=31)
    return(day);
   printf("입력오류 : 일은 1에서 31사이어야 합니다.\\n다시입력하세요.\\n");
  }
  else if(month == 4 || month == 6 || month == 9 || month == 11)
  {
   if(1<=day && day<=30)
    return(day);
   printf("입력오류 : 일은 1에서 30사이어야 합니다.\\n다시입력하세요.\\n");
  }
  else if(month == 2)
   if(leapyear == 0)
   {
    if(1<=day && day<=28)
     return(day);
    printf("입력오류 : 일은 1에서 28사이어야 합니다.\\n[윤년이 아닙니다]\\n다시입력하세요.\\n");
   }
   else
   {
    if(1<=day && day<=29)
     return(day);
    printf("입력오류 : 일은 1에서 29사이어야 합니다.\\n[윤년입니다.]\\n다시입력하세요.\\n");
   }
 }
}
 //반복문과 조건문을 이용하여 입력범위 확인(입력범위가 틀린경우 다시 입력받음)
 //if 1,3,5,7,8,10,12월인 경우 31일
 //else if 4,6,9,11월인 경우 30일
 //else if 2월인 경우 윤달을 계산 IsLeapYear() 함수 이용
 //입력받은 일을 return 함

void PrintDay(int year, int month, int day)
{
 char *week;        //캐릭터 포인터 형으로 변수선언
 int dayofdate;       //요일을 위한 변수 선언
 dayofdate=DayOfDate(year, month, day); //제라의 공식에서 나온 정수를 받아옴
 week=DayToString(dayofdate);   //제라의 공식으로부터 받은 정수를 한글 요일로 변환해줌
 printf("%d년 %d월 %d일 %s 입니다\\n", year, month, day, week); //출력
}

int DayOfDate(int year, int month, int day)  //제라의 공식
{
 int week; // 일(0), 월(1), 화(2), 수(3), 목(4), 금(5), 토(6)
 int a, b; // a: 년도의 앞 두자리, b: 년도의 뒤 두자리
 a = year/100;
 b = year%100;
 if(month == 1 || month == 2)
 {
  --year;
  month =+ 12;
 }
 week = ((21*a)/4 + (5*b)/4 + 26*(month+1)/10 + day - 1) % 7; // 제라의 공식 부분 소스를 작성
 return week;
}

int IsLeapYear(int year)
{
 int leapyear;  //윤년확인을 위한 플래그 0: 윤년아님, 1:윤년
 if (year%4 != 0)
  leapyear = 0;
 else if(year%4 == 0)
  {
   if(year%100 == 0)
   {
    if(year%400 == 0)
     leapyear = 0;
    else
     leapyear = 1;
   }// 윤년확인을 위한 소스를 작성
 }
 return leapyear; // 윤년이면 1을 반환하고, 아니면 0을 반환함
}

char* DayToString(int day)  //제라의 공식으로부터 나온 정수를 한글로 변환해주는 소스(포인터형을 배우지 않았기 때문에 소스를 공개함..)
{
 switch(day)
 {
  case 0:
   return "일요일";
   break;
  case 1:
   return "월요일";
   break;
  case 2:
   return "화요일";
   break;
  case 3:
   return "수요일";
   break;
  case 4:
   return "목요일";
   break;
  case 5:
   return "금요일";
   break;
  case 6:
   return "토요일";
   break;
 }
}

추천 비추천

0

고정닉 0

0

댓글 영역

전체 댓글 0
등록순정렬 기준선택
본문 보기

하단 갤러리 리스트 영역

왼쪽 컨텐츠 영역

갤러리 리스트 영역

갤러리 리스트
번호 제목 글쓴이 작성일 조회 추천
설문 연예인 안됐으면 어쩔 뻔, 누가 봐도 천상 연예인은? 운영자 24/06/17 - -
234722 4벌식 키보드는 이제 안팔아? ■■■갤로그로 이동합니다. 11.02.16 269 2
234720 컴공 3학년으로써!!!!! 위대하신 갤러님들 조언좀 [10] 한심한(118.33) 11.02.16 263 0
234719 이런놈도 있었지... [2] 꿀레(14.33) 11.02.16 161 0
234718 짐승에게 원래 먹이를 안주는 편이긴한데 [2] 일광면(119.198) 11.02.16 144 0
234717 글여러개써지넴 ㄷㅈ(121.88) 11.02.16 39 0
234715 ㅋㅋㅋ 이쉑이들 완전 눈깔 뒤집어져서 달려드네 [4] 코뻥(61.255) 11.02.16 111 0
234713 코뻥같은 새끼에겐 욕을 하면안됩니다. [1] ㄷㅈ(121.88) 11.02.16 85 0
234712 curl 써보고 로그따본형 있나요? 一ㅡ갤로그로 이동합니다. 11.02.16 69 0
234711 가상 세계에 몰두하고 있는데 가상세계의 기반이 무너진다 [1] 분당살람갤로그로 이동합니다. 11.02.16 82 0
234710 페이퍼님 계신가요? (예전 돈 백 봇 관련입니다.) [1] 100(182.208) 11.02.16 53 0
234709 프갤 왜이렇게 병신들만 잔뜩 모였냐? [10] 코뻥(61.255) 11.02.16 174 0
234707 우왕 10년된 스탠드 전구 5파장으로 갈아 키웠더니 [12] 코뻥(61.255) 11.02.16 195 0
234705 그림만보면 뭔지 모르는 그림 [2] 지나가는볍신(110.8) 11.02.16 153 0
234704 간단한 char 배열에 대한 질문 [1] ccc(165.243) 11.02.16 62 0
234703 디씨 매각됐다는 기사 뜸!! 확인요망!!! [1] 컴돌이(58.77) 11.02.16 94 0
234702 남자친구의 폭력성을 실험하기위해 바람을 피워봤습니다. [6] 뷁끼(59.7) 11.02.16 318 0
234701 java의 length에 해당하는게 c나 c++에 있음? [6] ccc(165.243) 11.02.16 133 0
234700 니들 따위가 UX를 논하다니.. [1] 코뻥(61.255) 11.02.16 123 0
234699 여자친구의 폭력성을 실험하기위해 바람을 피워봤습니다. [1] 뷁끼(59.7) 11.02.16 173 0
234698 매킨토시의 아버지라 불리는 Jef Raskin의 한마디 [2] LightEach갤로그로 이동합니다. 11.02.16 130 0
234697 업적왕 이명박 플레이어 언제 업데이트 되나요? [2] 빕뱟뱟갤로그로 이동합니다. 11.02.16 103 0
234696 디씨 같은 사이트는 뭘로 돈 벌까 [8] 분당살람갤로그로 이동합니다. 11.02.16 228 0
234695 디씨 매각에 대처하는 우리의 자세 [4] 분당살람갤로그로 이동합니다. 11.02.16 152 0
234694 미로 찾기가 궁금한 우장 오빠야는 보세요 [2] iljeomobolt갤로그로 이동합니다. 11.02.16 186 0
234693 안드로이드책 추천 바람 ㄴㅇㄹ(211.227) 11.02.16 126 0
234692 l이랑 I랑 헤깔린다.. 꿀레(14.33) 11.02.16 89 0
234688 프로그래밍 언어 가르쳐본 경험 있는 사람? [2] 뷁끼(59.7) 11.02.16 152 0
234686 프로그래밍을 공부하는방법 [2] 꿀레(14.33) 11.02.16 127 0
234684 c99 표준 공부했던게 참 유용하네 [3] 뷁끼(59.7) 11.02.16 135 0
234682 수원xx 나빠요 [3] 수원닭(112.216) 11.02.16 74 0
234681 10진수를 2진수로 출력할라면 어떤 알고리즘이 필요함? [16] ccc(165.243) 11.02.16 182 0
234680 안드로이드는 java랑 비슷한거지? [6] ㅇㅇ(165.243) 11.02.16 157 0
234679 c언어 간단 질문 return 0; 에 대해 [4] ㄱㅇㅇㅇ(165.243) 11.02.16 145 0
234678 동적메모리 해제 free! [3] Paradise갤로그로 이동합니다. 11.02.16 102 0
234677 오빠야들.. 팩토리알 종결자.. [5] iljeomobolt갤로그로 이동합니다. 11.02.16 210 0
234676 뇌를 자극하는 프로그래밍 원리힘 이책 쉽게 쓰여졌다잖아... [3] SODmaster갤로그로 이동합니다. 11.02.16 141 0
234674 으악 페도라에 vm웨어7.0.1 깔앗는데 모듈컴파일이이안되여 형들 김코더입니다갤로그로 이동합니다. 11.02.16 51 0
234673 자바 1..5랑 1.6이랑 같이 써도 되냐? [3] 코뻥(61.255) 11.02.16 116 0
234672 난 EOF가 [2] elwlwlwk갤로그로 이동합니다. 11.02.16 110 0
234670 쓰레딩 인터셉터 만들라고 하는데 어떻게 하냐? [4] 코뻥(61.255) 11.02.16 78 0
234669 이 무식한 넘드라. 이거 아냐? [1] 코뻥(61.255) 11.02.16 84 0
234668 능력자님들 내가 뭐 하나만 물어볼께여 [7] ㅇㅇ(210.218) 11.02.16 102 0
234667 오오 확실하게 글 싸는 방법을 알아냈다 땡칠도사갤로그로 이동합니다. 11.02.16 87 0
234665 책추천, 뇌를 자극하는 컴퓨터 원리(CPU부터 OS까지) [6] 116.44(116.44) 11.02.16 311 0
234661 아이폰 어플개발 하는데,, [3] 아이폰(110.45) 11.02.16 175 0
234660 Like a Shooting Star new gay[max]갤로그로 이동합니다. 11.02.16 60 0
234659 더더더더덕 땡칠도사갤로그로 이동합니다. 11.02.16 69 0
234658 리치박스 굵은글씨 어케 설정하져 준치◕‿◕갤로그로 이동합니다. 11.02.16 45 0
234657 루프문 동기화 [15] 김늅늅(218.153) 11.02.16 183 0
234655 Window₩tasks 폴더 비우기해도 돼? Sdsdccsd(211.245) 11.02.15 200 0
갤러리 내부 검색
제목+내용게시물 정렬 옵션

오른쪽 컨텐츠 영역

실시간 베스트

1/8

뉴스

디시미디어

디시이슈

1/2