총 게시물 103건, 최근 0 건
   
c 를 공부하다가
글쓴이 : 이도원 날짜 : 2003-11-13 (목) 11:11 조회 : 6715
저기여 요즘 c를 공부하면서 이것저것 코드 갖다 쓰면서 하는데요 전에 첫번째 만났을때 받은 책자여
거기에 jd 를 구하는 소스 가 있어서 해봤는데... 이상하게 1582년 전으로는 jd가 제대로 나오는대ㅔ
그 이후에 년도는 -1로 나오데요... 그래서 소스를 연구해보니까 return(-1)이 무엇인가 이상하기는 한데
자세하게 모르겠어요 알려주세요
#include
#include

double JD(int year, int month, int day, int hour, int minute, int second);

int main(void)
{
int year,month,day,hour,minute,second;

printf("Enter the year>");
scanf("%d",&year);
printf("Enter the month>");
scanf("%d",&month);
printf("Enter the day>");
scanf("%d",&day);
printf("Enter the hour>");
scanf("%d",&hour);
printf("Enter the minute>");
scanf("%d",&minute);
printf("Enter the second>");
scanf("%d",&second);

printf("JD is %lf",JD(year,month,day,hour,minute,second));

return(0);
}

double JD(int year, int month, int day, int hour, int minute, int second)
{
double jd;
if(year>=1582 && month>=10 && day>=15)
{
if (month<3){year--;month+=12;}<br /> jd=floor(365.2425*year)+floor(30.6*month-0.4)+day
+hour/24.0+minute/24.0/60.0+second/24.0/60.0/60.0+1721027.5;
}
else if (year<=1582 && month<=10 && day<=4)<br /> {
if(month<3){year--;month+=12;}<br /> jd=floor(365.25*year)+floor(30.6*month-0.4)+day
+hour/24.0+minute/24.0/60.0+second/24.0/60.0/60.0+1721025.5;
}
else
{
return(-1);
}

return jd;
}

오학주 2003-11-13 (목) 22:22
1582년 10월 5일~14일까지는 없는 날이니까 입력값이 그 안에 속하면 에러코드로 -1을 리턴하는거란다.
int result = JD( ... ); 이렇게 호출해보고..
result가 -1인지 검사해보면 에러인지 아닌지 알수있도록 하기 위해서야

근데 위에 JD 함수의 if조건들이 잘못된거 같구나..

if(year>1582 || (year==1582 && month>=10 && day>=15))
{...}
else if (year<1582 || (year==1582 && month<=10 && day<=4)) <br/>{...}
else
{
return(-1); /
}
이렇게 고치면 되지 않을까
댓글주소
형철 2003-11-20 (목) 13:13
return -1은 흔히 에러를 표시하는 것이지...
내가 예전에 머리로만 프로그래밍 할 때 틀리게 짠 것인데 그것이 아직
사람들을 괴롭히고 있나보구나...
댓글주소
형철 2003-11-20 (목) 13:13
그리고 위에 학주가 적은것도 틀렸다.

if(year>1582 || (year==1582 && month>10) || (year==1582 && month==10 && day>=15))
{...}
else if (year<1582 || (year==1582 && month<10) || (year==1582 && month==10 && day<=4)) <br/>{...}
else
{
return -1;
}

이렇게 해야 된다. 정말 틀리기 쉬운 오류이지.
학주가 한 방식으로는 1582년 9월 5일에 대해서 에러를 리턴한다.
댓글주소
죄동 2004-01-15 (목) 01:01
이건 뭐예요??? 어떤건지...;;; ???
댓글주소
이채홍 2004-01-15 (목) 11:11
와 어렵다
댓글주소
   

총 게시물 103건, 최근 0 건
번호 제목 글쓴이 날짜 조회 추천
 MatriXsLib 1.0 +7 이형철 06-15 21801 670
 MatriXsLib 예제 프로그램을 올립니다. +2 이형철 07-02 9395 32
103  안녕들하세요~^^ +1 이도원 06-22 7639 137
102  점찍기를 사용한 캐드 삼차원 지도 작업의 소… +1 이수욱 10-29 8060 146
101  matrix2 컴파일 실행 에러 문의입니다. +5 황태욱 01-08 8029 129
100  이렇게 좋은 소스가..^^ +2 황태욱 01-07 7280 109
99  요즘 다들 머하시나요? +5 이도원 12-10 7068 122
98  c 를 공부하다가 +5 이도원 11-13 6716 114
97  Astronomical Algorithm.. +4 김창환 10-31 7034 122
96  침체기 같네요... +3 이도원 09-22 6426 106
95  비공개 개시판에 우리 별자리선 자료 파일을 … +2 김창환 09-17 6838 127
94  우리 별자리선 자료 파일 김창환 09-17 7028 47
93  [개정]밑에있는 파일 다시올립니다. +1 이도원 09-16 5444 291
92  프로그램이 돌아가지 않을때 이파일을 받으… +2 이도원 09-16 6712 123
91  처음으로 만든 프로그램을 올립니다[시험용] +5 이도원 09-15 5812 126
90  학주형 형철이형 이것좀 고쳐주세요 +2 이도원 09-06 6046 128
89  [하하 잡담] 이로만 가면 좋은데... +3 이도원 09-01 4152 67
 1  2  3  4  5  6  7  맨끝
 
Since 2001.2.7 과학기술정보통신부 등록 비영리민간단체 천문노트. Copyright All rights reserved.
단체명 : 천문노트  |    고유번호 : 101-82-15888  |    대표자명 : 김태욱, 조우성  |    주소 : 138-804 서울특별시 송파구 가락동 93 금강빌딩 7층 710호  |    전화 : 02-543-3295  |    Fax : 02-6918-6888  |    통신판매신고번호 : 종로 제01-5696호  |    개인정보관리책임자 및 사이트관리자 : 지용호