2013-10-12 3 views
1

저는 SML을 처음 사용하고 있으며 2 년이 소요되며이를 비교 한 다음 2 개월이 소요되고 마지막으로 두 날짜가 소요되는 프로그램을 작성합니다.SML에서 작동하지 않는 중첩 된 if 문

나는 문제가있다. 해가 첫 번째보다 오래되면 틀린 것이지만, 내 논리가 아니면 확실하지 않은 몇 가지 방법은 월을 확인하고 날짜를 확인한 다음 사실을 반환한다. 그릇된.

연도가 거짓이면 해당 월만 확인하고 해당 월이 틀리면 그 날을 확인하십시오.

fun is_older(year1 : int, month1 : int, day1 : int, year2 : int, month2 : int, day2 : int) = 
if year1 < year2 andalso year1 > 0 
then true 
else 
    if month1 < month2 andalso month1 > 0 andalso month2 <= 12 
    then true 
else 
    if day1 < day2 andalso day1 > 0 andalso day2 <= 31 
    then true 

else false; 

답변

1

1 년 동안 두 개의 날짜를 비교하고 true/false 값을 반환한다고 가정합니다. 당신이 한 일은 대체로 정확합니다. 두 번째 if 문에서 인 경우에만 month1<month2인지 확인하고 싶습니다. 그렇지 않으면 year1 = 2014, year2 = 2013 일지라도 두 번째 if 문과 월이 일치하면 참값을 얻게됩니다.

마찬가지로 세 번째 if 문에서 year1=year2 andalso month1=month2 일만 확인하고 싶습니다.

+0

감사합니다. –