請教這個程式碼中第二個else代表什麼意思? |
答題得分者是:Justmade
|
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
以下的是想像喔 :
function DaysOfMonth(Month) : Integer; Case Month of 1,3,5,7,8,10,12 : result := 31; 4,6,9,11 : result := 30; 2 : if IsLeapYear(iYear) then Result:=29 else // if Result:=28; else // case Result:=0; end; // case若是這樣的話,第二個 else 就是 case (或另一個外層的 if ) 的而不屬於 if IsLeapYear 的。 |
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: 以下的是想像喔 :哇厲害我的程式show不完全還能猜對 那對以下這個程式能指點我一、二嗎(引用 Flyup兄的文章) http://delphi.ktop.com.tw/topic.php?topic_id=25433 我有三個問題註解在以下程式碼旁: function MonthDays(iYear,iMonth:Word):Word; begin case iMonth of 1,3,5,7,8,10,12: Result:=31; 4,6,9,11: Result:=30; 2://如果是閏年 if IsLeapYear(iYear) then Result:=29 else Result:=28 else Result:=0; end; end; function GetLeapMonth(iLunarYear:Word):Word; var Flag:Byte; begin Flag:=gLunarMonth[(iLunarYear-START_YEAR) div 2]; //這個if..else..end內的程式是什麼意思 if (iLunarYear-START_YEAR) mod 2=0 then Result:=Flag shr 4 else Result:=Flag and $0F; end; //以下的if ilunaryearbegin有錯請教如何改且這個lunarmonthdays function是什麼意思又最下面的makelong這個涵數delphi中找不到 makelong有什麼作用? function LunarMonthDays(iLunarYear,iLunarMonth:Word):Longword; var Height,Low:Word; iBit:Integer; begin if iLunarYearbegin Result:=30; Exit; end; Height:=0; Low:=29; iBit:=16-iLunarMonth; if (iLunarMonth>GetLeapMonth(iLunarYear)) and (GetLeapMonth(iLunarYear)>0) then Dec(iBit); if (gLunarMonthDay[iLunarYear-START_YEAR] and (1 shl iBit))>0 then Inc(Low); if iLunarMonth=GetLeapMonth(iLunarYear) then if (gLunarMonthDay[iLunarYear-START_YEAR] and (1 shl (iBit-1)))>0 then Height:=30 else Height:=29; Result:=MakeLong(Low,Height); end; function LunarYearDays(iLunarYear:Word):Word; var Days,i:Word; tmp:Longword; begin Days:=0; for i:=1 to 12 do begin tmp:=LunarMonthDays(iLunarYear,i); //hiword和loword在delphi中找不到是什麼作用能用lo或hi代替嗎? Days:=Days HiWord(tmp); Days:=Days LoWord(tmp); end; Result:=Days; end; aricfunction DaysOfMonth(Month) : Integer; Case Month of 1,3,5,7,8,10,12 : result := 31; 4,6,9,11 : result := 30; 2 : if IsLeapYear(iYear) then Result:=29 else // if Result:=28; else // case Result:=0; end; // case若是這樣的話,第二個 else 就是 case (或另一個外層的 if ) 的而不屬於 if IsLeapYear 的。 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
哇..中計...答了題目還來些難的...呵呵
引言: function GetLeapMonth(iLunarYear:Word):Word; var Flag:Byte; begin Flag:=gLunarMonth[(iLunarYear-START_YEAR) div 2]; //這個if..else..end內的程式是什麼意思 if (iLunarYear-START_YEAR) mod 2=0 then Result:=Flag shr 4 else Result:=Flag and $0F; end;由於 gLunarMonth[0..74]內每個 byte 都放2年的資料,這個 if else 就是找出 iLunarYear 是單數年還是雙數年然後提出前半或後半的資料 引言: makelong這個涵數delphi中找不到makelong有什麼作用? hiword和loword在delphi中找不到是什麼作用能用lo或hi代替嗎?makelong / hiword / loword 可能是他自定的 function, 不可用 hi / lo 代替因 makelong / hiword / loword 是針對 longword (32bit) 但 hi/lo 是針對 16 bit的。 理論上這三個 function 應如下 [code] function makelong(hiw, low : word) : longword; begin result := hiw * 65535 low; end function hi(longw : longword) : word; begin result := INT(longw / 65535) end; function lo(longw : longword) : word; begin result := Round(Frac(longw / 65535) * 65535); end; [code] 引言: 以下的if ilunaryearbegin有錯請教如何改這個我也不知道耶...那邊的 code 沒 define 這個參數... |
huangeider
高階會員 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
Funtion 名錯了修正如下
引言: 理論上這三個 function 應如下function makelong(hiw, low : word) : longword; begin result := hiw * 65535 low; end; function hiword(longw : longword) : word; begin result := INT(longw / 65535) end; function loword(longw : longword) : word; begin result := Round(Frac(longw / 65535) * 65535); end; |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |