Pascalの宿題は俺にやらせろ!!Part2at TECHPascalの宿題は俺にやらせろ!!Part2 - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト550:光速エスパー世代774RR 07/08/04 17:37:26 function disp(source : string) : string; var i : integer; c : char; begin for i := 1 to length(source) do begin c := source[i]; if c in ['a'..maxvar] then pusht(c) else if c in ['&', '|', '#', '¥'] then term(c) end; disp := popt end; push, pop類はスタックを実装している。RPNだから単純なスタックマシンで 好きなだけ複雑な式を計算させられる。calcが手抜きパーザで、変数名を見ると スタックに値を積み、演算子を見ると、opeで演算を行いスタックトップに値を残す。 最後にpopすれば式全体の値になる。 変数空間を舐めるのはSetVarSetで、0から始まる2^変数個の整数を生成して、 得られた整数の各ビットを変数の値に代入している。 551:光速エスパー世代774RR 07/08/04 17:54:07 for i := 1 to powerof(ord(maxvar) - ord('a') + 1) do はこれでもいいけど、 for i := 0 to pred(powerof(ord(maxvar) - ord('a') + 1)) do の方が見栄えがいいな。 「変数空間を舐めるのはSetVarSetで、0から始まる2^変数個の整数を生成して、 得られた整数の各ビットを変数の値に代入している。」は 「変数空間を舐めるために、0から始まる2^変数個の整数を生成して、得られた 整数の各ビットをSetVarSetで各変数の値に代入している。」 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch