1 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 00:45:25 ] 教育用(?)プログラムPascalの宿題をやって頂くスレ ■丸投げOK ■全く分かってない阿呆も放置しないで優しく対応 ■他言語はよそ逝け( ゚Д゚)ゴルァ ■DelphiもTurbo Pascalも完全対応 【本家】 www.borland.co.jp/delphi/ 【前スレ】 pc8.2ch.net/test/read.cgi/tech/1089719714 【関連スレ】 くだすれDelphi(超初心者用)その15 pc5.2ch.net/test/read.cgi/tech/1087823906/l50 Pascal の初心者用の質問・相談所 pc5.2ch.net/test/read.cgi/tech/1009903617/l50 【Delphi初心者】今から始めるDelphi Part01 pc5.2ch.net/test/read.cgi/tech/1062422335/l50
236 名前:デフォルトの名無しさん [2006/04/24(月) 06:10:31 ] こんな感じじゃないのか? program pe1_2(input,output); const dif = 1.0e-6; var i : integer; f,z : array [1..30] of real; function fibonacci(n: integer):integer; begin if (n >=0) and (n <=1) then fibonacci:=n else fibonacci:=fibonacci(n-1)+fibonacci(n-2); end; { fibonacci } begin writeln('30項まで求めます'); for i :=1 to 30 do begin f[i]:=fibonacci(i); writeln('f(',i:2,')=',f[i]:1); end; for i:= 3 to 30 do begin z[i]:=(f[i-1]-f[i-2])/(f[i]-f[i-1]); writeln('z(',i:2,')=',z[i]); if (i > 3) and (dif >= abs(z[i]-z[i-1])) then break; end; end.
237 名前:デフォルトの名無しさん [2006/04/24(月) 23:06:40 ] >>236 言われたとおりにしましたが前と同じ結果でした。 コンパイル結果 f(1)=0.0e+00 : : f(27)=0.0e+00 f(28)=0.0e+00 f(29)=0.0e+00 f(30)=0.0e+00 m=30 この後何も動きませんでした。 どこがおかしいのでしょうか? わかる人教えてくれませんか?
238 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 23:28:52 ] if (n <=1) then fibonacci:=n
239 名前:デフォルトの名無しさん [2006/04/25(火) 04:27:48 ] あんまり変わってないんじゃない?
240 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 06:56:08 ] ⇒ if (n >=0) and (n <=1) then fibonacci:=n >但し、 f(0) = 0, f(1) = 1 である。 if (n <=1) then fibonacci:=1; としても、ゼロになるというのは変だね もしかして ちゃんとループさせてないんじゃないの? >>236 をそのまま実行させてないでしょ それから integerのビット幅はいくら? 16bitだとビット数が不足するよ function fibonacci(n: real):real; begin if (n >=0) and (n <=1) then fibonacci:=1 else fibonacci:=fibonacci(n-1)+fibonacci(n-2); end; { fibonacci } begin writeln('30項まで求めます'); for i :=1 to 30 do begin f[i]:=fibonacci(i); writeln('f(',i:2,')=',f[i]:10:0); end; for i:= 3 to 30 do begin z[i]:=(f[i-1]-f[i-2])/(f[i]-f[i-1]); writeln('z(',i:2,')=',z[i]); if (i > 3) and (dif >= abs(z[i]-z[i-1])) then break; end; end.
241 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 15:18:46 ] function fibonacci(n: integer):real;
242 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 23:23:49 ] program kadai(input , output); type intri = ^real; var ip : intri; a : real; begin new( ip ); write( `値:` ); readln( a ); ip^ := a; writeln( ip ); dispose( ip ) end. 簡単なやつなんですが実行しても入力した値そのままが出力せず、5桁の数字が出力してしまうという状況です。 ご指摘お願いします。
243 名前:デフォルトの名無しさん [2006/04/26(水) 23:53:19 ] program kadai(input , output); type intri = ^real; var ip : intri; a : real; begin new( ip ); write( '値: ' ); readln( a ); ip^ := a; writeln( ip^ ); dispose( ip ); readln; end.
244 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 21:58:58 ] >>243 ポインタをまだ理解しきれてなかったみたいです。 ありがとうございました。
245 名前:デフォルトの名無しさん [2006/05/04(木) 16:37:24 ] 本当に初歩的な質問なんですが… x:=6*(1+3div2)mod5 とあったら、6×(1+1)÷5=2...2より、答えは2でいいんでしょうか? また、m:=((x>z)and(y<z)) とあって、これはfalse and falseとなるんですが、 このあとは具体的にどうすればいいんでしょう? ちなみにmは整数です。 助けていただければ幸いです…。
246 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 16:47:42 ] 1、四則演算はカッコが最優先、乗除算がその次だからあってると思うよ 2、pascal は型に厳しいから 論理型を整数型に代入できないと思うのだが?
247 名前:デフォルトの名無しさん [2006/05/04(木) 16:57:42 ] ご回答ありがとうございます。 最初は合ってましたか…よかった。 次なんですが(すいません書くならば正しくはfalse and trueでした) mは整数、x,y,zは変数で、 具体的には m:=((2>10) and (5<10)) なんですが、これは…どうすればいいんでしょうか…。。。
248 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 17:05:19 ] 申し訳ありません。見間違えていました… mがbooleanでx,y,zが整数でした。本当にすいません… そうしたら結局mはfalseということでよいのでしょうか?
249 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 18:25:24 ] and だから false だよね
250 名前:デフォルトの名無しさん mailto:sage [2006/05/04(木) 21:24:02 ] どうもありがとうございました。そそっかしくてすいません…
251 名前:デフォルトの名無しさん [2006/05/11(木) 19:39:47 ] 2個の1次方程式が入力されたとき、その和を 出力するプログラムを作成しなさい。ただし、変数名はアルファベット1文字とし、 その係数値は整数1文字とせよ。 たとえば、2 x - 5 y を1文字ずつ入力(改行で区切る)し、ピリオド '.'が入力 されたならば、次の式、 - 9 y + 2 z を同じように入力する。プログラムはそれら の和、2 x - 14 y + 2 z を出力する。
252 名前:モグラ介 [2006/05/11(木) 19:49:23 ] すべてのパスワードを解読するプログラムがあったらすごい・・・ ありえないか。
253 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 20:03:30 ] すべてのって言うのが引っかかりますが、 総当りでやればいいんじゃないのか?
254 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 20:07:22 ] 総当りならどんな難解なパスワードも必ず解析できるね。 何百年とか掛かるかもしれないけど。
255 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 21:00:59 ] まともなシステムなら連続で複数回間違えた時点でパスワードが無効になるような対策がなされているから無理
256 名前:デフォルトの名無しさん [2006/05/12(金) 00:39:03 ] しばらくしたら正規のユーザーが管理者に申告して復活するでしょ
257 名前:デフォルトの名無しさん [2006/05/12(金) 21:57:42 ] >>251 の答えまーだ?
258 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 00:35:23 ] キーボードからいくつもの「文字」を入力した時、各文字が何回入力されたかを結果として返すプログラムを、入力データの記憶にリスト構造を利用して作れ。なお、入力は1文字ずつ return で区切って入力し、その終了は '.' (ピリオド) で示すものとする。 と、 課題4 - 1を参考にして、2個の1次方程式が入力されたとき、その和を出力するプログラムを作成しなさい。ただし、変数名はアルファベット1文字とし、その係数値は整数1文字とせよ。 たとえば、2 x - 5 y を1文字ずつ入力(改行で区切る)し、ピリオド '.'が入力されたならば、次の式、 - 9 y + 2 z を同じように入力する。プログラムはそれらの和、2 x - 14 y + 2 z を出力する。 2つの問題お願いします。
259 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 09:29:22 ] >>251 なんか良く判らんけど 適当に {構造体の定義} type TData=record c:char;a:Integer;next:Pointer;end; type PData=^TData; var root:PData; {リストの印刷} procedure writes; var p:PData; begin p:=root; while p<>nil do begin if p^.a>0 then write('+'); write(p^.a,p^.c); p:=p^.next; end; writeln; end;
260 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 09:31:29 ] procedure func(s:string); var w:TData; var p:PData; var sgn:-1..1; var num:string; begin sgn:=1; w.next:=nil; num:=''; while s<>'' do begin w.c:=s[1]; delete(s,1,1); case w.c of '+': begin sgn:= 1;num:=''; end; '-': begin sgn:=-1;num:=''; end; '0'..'9': begin num:=num+w.c; end; 'a'..'z','A'..'Z': begin if num<>'' then w.a:=sgn*StrToInt(num) else w.a:=sgn; p:=root; while p<>nil do begin if p^.c=w.c then begin p^.a:=p^.a+w.a; break; end; p:=p^.next; end; if p=nil then begin w.next:=root; root:=@w; func(s); exit; end; end; '.': writes; end; end; writes; readln(s); if s<>'' then func(s); {続けて処理するなら} end;
261 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 09:33:13 ] なんか、改行が多すぎますが厄介だなあ で、呼び出し部 var s:string; begin root:=nil; readln(s); func(s); end; 素直に、ヒープか配列使った方がいいかもね
262 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 19:27:11 ] このコード提出した奴からは、動作説明させるからな
263 名前:デフォルトの名無しさん [2006/05/13(土) 22:59:34 ] 偽者はだまれ!自分独り占めにするな! 本物ならここに書き込まず裏で減点しているわ!
264 名前:デフォルトの名無しさん mailto:sage [2006/05/13(土) 23:22:26 ] でも、単にメモリ確保の為にわざわざ再帰してるようなコードは、ちょっと目立つぞ
265 名前:デフォルトの名無しさん mailto:sage [2006/05/14(日) 01:01:30 ] だれかエラトステネス篩について、具体例を交えながら分かりやすく解説してくれませんか? もう訳が分かりません…
266 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2006/05/14(日) 01:24:54 ] エラトステネスの篩の概念は、次のようになります。 1 2 3 4 5 6 7 8 9 10 11 12 13 ... このような数値列を用意して まず最初の2は素数としてチェックして 2の倍数は素数じゃないから、フラグを立てます。 1 2 3 4 5 6 7 8 9 10 11 12 13 ... O X X X X X 次に素数の可能性のある3は素数としてチェックして、 3の倍数はやはり素数じゃないから、フラグを立てます 1 2 3 4 5 6 7 8 9 10 11 12 13 ... O X X X X X O X X X 4にはすでに×がついているので、素数ではなく 次に素数だと思われる5は素数としてチェック。 5の倍数は素数ではないフラグを立てて… 1 2 3 4 5 6 7 8 9 10 11 12 13 ... O X X X X X O X X X O X と続けていくとチェックされていない所に 〇がつき、素数列が求まるという手法です。
267 名前:ミ,,゚Д゚ミノ ◆A6VzDeLphI mailto:sage [2006/05/14(日) 01:29:05 ] 具体例を交えながらわかりやすく解説するほど 労力をかけたくないから、適当に勉強汁 www.google.com/search?hl=ja&lr=lang_ja&ie=UTF-8&oe=UTF-8&q=%E3%82%A8%E3%83%A9%E3%83%88%E3%82%B9%E3%83%86%E3%83%8D%E3%82%B9%E3%81%AE%E3%81%B5%E3%82%8B%E3%81%84&num=50 上記例では、1〜13の箱を用意するために Booleanの配列を定義して 1〜13全部をTrueにしてから 4,6,8,10,12の箱をFalseにして、 6,9,12の箱をFalseにして、 という処理をする方法よ。
268 名前:265 mailto:sage [2006/05/14(日) 13:48:56 ] どうもありがとうございました。 プログラムで読んだ時、なにがtrueやfalseなのかがよく分からなかったんですが、 やっとなんとかわかりました。ありがとうございました。
269 名前:269 mailto:sage [2006/05/20(土) 16:27:59 ] キーボードからいくつもの「文字」を入力した時、 各文字が何回入力されたかを結果として返すプログラムを、 入力データの記憶に2分木を利用して作れ。 なお、入力の終了は '.' (ピリオド) で示すものとし、 結果はアルファベット順に出力するものとする。 を program bi( input , output ); type tree = ^node; node = record moji : char; kaisu : integer; left , right : tree; end; var p , head : tree; a : char; procedure append(var t : tree; x : char ); begin if t = nil then begin new( t ); t^.moji := x; t^.kaisu := 1; t^.left := nil; t^.right := nil end else if t^.moji = x then t^.kaisu := t^.kaisu + 1 else if ord( t^.moji ) > ord( x ) then append( t^.left , x ) else append( t^.right , x ) end; { append }
270 名前:269 mailto:sage [2006/05/20(土) 16:28:56 ] procedure printl(t : tree ); begin if t <> nil then begin writeln( t^.moji , t^.kaisu ); printl( t^.left ); end end; { printl } procedure printr(t : tree ); begin if t <> nil then begin writeln( t^.moji , t^.kaisu ); printr( t^.right ); end end; { printr } begin new( head ); new( p ); head := nil; p := head; repeat write( '文字: '); readln( a ); append( p , a ) until a = '.'; printl( head ); write( p^.moji , p^.kaisu ); printr( head ); dispose( head ); dispose( p ) end.
271 名前:269 mailto:sage [2006/05/20(土) 16:35:39 ] キーボードから「整数」を読込み、 入力データを2分探索木に書込め。 書き込んだ結果を出力せよ。 なお、整数は正または負のデータとし、入力の終了は '0' (ゼロ) で 示すものとする。同じ値が入力されることはないものとせよ。 を program kadai5no2( input , output ); type tree = ^node; node = record kazu : integer; left , right : tree; end; var p , root : tree; a : integer; procedure data(var t : tree; x : integer ); begin if t = nil then begin new( t ); t^.kazu := x; t^.left := nil; t^.right := nil end else if t^.kazu > x then data( t^.left , x ) else data( t^.right , x ) end; { data } procedure printl(t : tree ); begin if t <> nil then begin if t^.right <> nil then begin write( t^.right ); printl( t^.right ) end else begin write( t^.kazu ); printl( t^.left ) end end end; { print }
272 名前:269 mailto:sage [2006/05/20(土) 16:36:48 ] begin new( root ); new( p ); root := nil; p := root; repeat write( ' 数: '); readln( a ); data( p , a); until a = 0; printl( p ); dispose( p ); dispose( root ) end. としたのですがどちらも出力をどうすればいいか分かりません。出力の他にも変なところがあれば指摘してくれると嬉しいです。
273 名前:デフォルトの名無しさん mailto:sage [2006/05/21(日) 18:28:02 ] とりあえず上はそれだと白丸のところが出力されないはず ● /\ ● ● /| |\ ● ○ ○ ● 火曜提出でしょ? もう少し悩んでみてもいいと思われ。 あと線形リストや二分木の先頭だけdisposeすると、 2番目以降は解放じゃなくて参照不可になるんじゃなかったっけ?
274 名前:273 mailto:sage [2006/05/21(日) 18:28:57 ] ウホッ、ずれまくったorz
275 名前:デフォルトの名無しさん [2006/05/23(火) 18:55:46 ] キーボードから「英文」を読込み、空白(スペース)を英単語の 区切りと見做して、英単語辞書を整順リストの形式で作成するプログラム を作りなさい。 なお、入力の終了は '.' (ピリオド) で示すものとし、 同じ英単語が入力される場合は辞書に登録してはいけない。 a. 英文はアルファベット小文字のみの単語、スペース、ピリオドだけで 作られている場合を、まず考えよ。各単語の文字数は20文字以内とせよ。 b. 次に、大文字が含まれる場合には、その文字を小文字に変換するよう に拡張せよ。 c. 最後に、数字、疑問符?、感嘆符!、クオート’、ダブルクオート"、 ハイフン-、コロン:、セミコロン;などの特殊文字が含まれている文 などを処理できれば完全である。
276 名前:デフォルトの名無しさん [2006/05/23(火) 18:56:56 ] 英単語辞書の問題において、 整順リストを2分木表現とするプログラムを作成せよ。 ポーランド記法で入力した四則演算式を2分木で表現し、 演算式の係数値を入力したときに、その計算結果を出力する プログラムを作れ。但し、演算式はアルファベット一文字の 変数と四則演算子のみで表現されている。 a.演算式が定数は含まない場合を考えよ。 b.整数の定数を含む場合に拡張せよ。
277 名前:デフォルトの名無しさん mailto:sage [2006/05/24(水) 02:38:31 ] 課題丸投げ早すぎw
278 名前:デフォルトの名無しさん [2006/05/24(水) 22:20:26 ] >>277 そんな突っ込みより 答えキボンヌ。
279 名前:デフォルトの名無しさん [2006/05/25(木) 20:51:54 ] 電通大C科乙w
280 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 22:08:22 ] >>279 去年につづきまたあそこか 馬鹿しかいないのか?
281 名前:デフォルトの名無しさん [2006/05/25(木) 22:36:28 ] 馬鹿が教えてるからしょうがない。
282 名前:デフォルトの名無しさん mailto:sage [2006/05/25(木) 22:46:23 ] >>281 言えてる…。
283 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 02:25:45 ] >>278 ヒント program database( input , output ); type a = ^b ; b = record c : packed array [1..20] of char ; d : a ; var e, f : packed array [1..20] of char ; bagin readln(e); readln(f); if e < f then begin writeln( e , f ); end else begin writeln( f , e ); end; end. 2単語入力のみ対応
284 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 03:29:15 ] 電通大生なんだが・・評判落とすような事はやめてくれ! 少しは考えろよ!! 言っておくが、これくらい普通に出来ないと後々の課題なんて出来ないぞ! その時はまた写すのか? お前それでいいのか?
285 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 03:39:15 ] >>284 、--‐冖'⌒ ̄ ̄`ー-、 /⌒` 三ミヽー-ヘ,_ __,{ ;;,, ミミ i ´Z, ゝ ''〃//,,, ,,..`ミミ、_ノリ}j; f彡 _) 〃///, ,;彡'rffッ、ィ彡'ノ从iノ彡 >';;,, ノ丿川j !川|; :.`7ラ公 '>了 _く彡川f゙ノ'ノノ ノ_ノノノイシノ| }.: '〈八ミ、、;.) ヽ.:.:.:.:.:.;=、彡/‐-ニ''_ー<、{_,ノ -一ヾ`~;.;.;) く .:.:.:.:.:!ハ.Yイ ぇ'无テ,`ヽ}}}ィt于 `|ィ"~ ):.:.:.:.:|.Y }: :! `二´/' ; |丶ニ ノノ ) :.: ト、リ: :!ヾ:、 丶 ; | ゙ イ:} 逆に考えるんだ { .:.: l {: : } ` ,.__(__,} /ノ ヽ ! `'゙! ,.,,.`三'゙、,_ /´ 「電通大の課題が 2ch ねらーのヒマ潰しになっている」と ,/´{ ミ l /゙,:-…-〜、 ) | ,r{ \ ミ \ `' '≡≡' " ノ 考えるんだ __ノ ヽ \ ヽ\ 彡 ,イ_ \ \ ヽ 丶. ノ!|ヽ`ヽ、 \ \ヽ `¨¨¨¨´/ |l ト、 `'ー-、__ \ `'ー-、 // /:.:.} `'ー、_ `、\ /⌒ヽ /!:.:.| `、 \ /ヽLf___ハ/ { ′ / ! ヽ
286 名前:デフォルトの名無しさん [2006/05/26(金) 08:48:45 ] >>283 b a g i n
287 名前:デフォルトの名無しさん [2006/05/26(金) 08:50:54 ] >>283 ほとんどヒントになってないし。 リスト構造も木構造も実装されてないし。 読み込み部分にしたって、 空白区切りをまったく無視してくれちゃってるし。 まったく、なにやってるんだか。
288 名前:デフォルトの名無しさん mailto:sage [2006/05/26(金) 20:00:58 ] >>287 丸写しするお馬鹿さんには関係ないこと。成績表を見て泣くだけ。
289 名前:デフォルトの名無しさん mailto:sage [2006/05/27(土) 10:12:38 ] up.nm78.com/data/up080235.jpg
290 名前:デフォルトの名無しさん [2006/05/28(日) 21:18:58 ] 答えまーだ?
291 名前:デフォルトの名無しさん mailto:sage [2006/06/02(金) 02:07:04 ] やっと落ち着いたか
292 名前:デフォルトの名無しさん [2006/06/04(日) 09:06:23 ] Javaなどの新しい言語がある中で、電通大が未だにPascalを使ってプログラミングの講義をしているのは一種の男気の現れですか?
293 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 09:31:21 ] 教えるヒトがそれ以外の言語を知らないので仕方がないのです。
294 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 17:23:42 ] 今まさにPascal習ってる電通大生ですよっと Pascal習う理由として、 @複数の言語を学んだほうが体系的に(で言葉あってるのか?)文法を理解できる。 APascalは教育用言語としてはふさわしい とか言ってた気がする。 ただ、俺は大学入って初めてプログラミングに触れるようになったため、 教授の考えがきちんと伝わっていないかも知れない。 要は公式見解ではないということ
295 名前:デフォルトの名無しさん [2006/06/04(日) 17:24:00 ] >>293 男気の正反対ですね。
296 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 17:25:52 ] 今プログラミング教育用として主流になってる言語って何ですかね?
297 名前:デフォルトの名無しさん mailto:sage [2006/06/04(日) 19:11:57 ] 授業で使われている数はc/c++とJavaが圧倒的でしょう。
298 名前:デフォルトの名無しさん [2006/06/06(火) 08:27:39 ] Javaはまだいいとして、C/C++って教育用途には向いてるんでしょうかね?
299 名前:デフォルトの名無しさん mailto:sage [2006/06/06(火) 10:22:47 ] Javaが向いてる?ご冗談を JavaよりC/C++の方が向いてるに決まってるじゃないか
300 名前:デフォルトの名無しさん mailto:sage [2006/06/06(火) 18:17:03 ] C++がプログラミング入門用として最適の言語。 とかのたまうメルマガ鵜呑みにして強引にC++から入った俺が来ましたよ。
301 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 08:24:55 ] Cは良いけどC++は教育用としてはどうかとおもう
302 名前:デフォルトの名無しさん [2006/06/10(土) 23:49:37 ] C++の方が明らかにCより使いやすいし。 教育用としても オブジェクト指向のC++の方がいいに決まってるし。
303 名前:デフォルトの名無しさん mailto:sage [2006/06/11(日) 05:55:38 ] PerlほどじゃないけどC++のオブジェクト指向もひどいぞ 「オブジェクト指向の教育」という観点からは薦められない
304 名前:774RR mailto:sage [2006/06/12(月) 19:47:05 ] 本物のプログラマはPascalを使わない。真の漢は黙ってFORTRAN77。
305 名前:デフォルトの名無しさん mailto:sage [2006/06/12(月) 20:57:38 ] 来年から電通はCになるらしいけどな まじで頭おかしいだろあそこ
306 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 07:31:40 ] Rubyにすればいいのに
307 名前:デフォルトの名無しさん [2006/06/13(火) 17:53:09 ] HSPにすればいいのに
308 名前:デフォルトの名無しさん [2006/06/15(木) 12:12:15 ] pascalの文法には、変数名とか関数名の非終端記号があるらしんだけど これはすべて名前(識別子)であって文法を簡単にするものであると。 原始プログラム中のその名前をみただけではどの名前であるか 判別できない。これの解決策はなにですか?
309 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 13:35:24 ] 俺のESPを試す時がきたようだ。 例えば次のようなソースがあるとします。 if (0 < hoge) then ... このhogeが変数なのか関数なのかはここから判別する事はできないと思います。 コンパイラはどうやっているんでしょうか? こんな感じか?
310 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 18:01:22 ] ネストしたスコープの話なのかな?
311 名前:デフォルトの名無しさん mailto:sage [2006/06/16(金) 00:50:41 ] pascalは事前に変数も関数も宣言する必要があるので問題無い。
312 名前:デフォルトの名無しさん [2006/06/26(月) 15:11:34 ] モンテカルロ法を用いて1/3を求めよ。 そのときモンテカルロ法を試行する回数を、プログラム実行時に選択できるようにせよ。
313 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 18:50:02 ] いやです。
314 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 19:28:36 ] やってやらんこともないが なぜ 1/3 なんだ?
315 名前:デフォルトの名無しさん [2006/06/27(火) 14:23:43 ] パスカルの問題でわからないので教えて下さい。 問1 任意の人数に対してBMI(肥満度を判定する指標)を計算し、その平均値を出力させる。ここで,BMIとは 体重/身長/身長 で定義されるため,体重および身長を人数分だけ標準入力せよ。ここで,人数の最大は10名としてよい。なお,関数あるいは手続きを用いること。 問2 10名分のクラスの学生名前(アルファベット)を配列に保存せよ。また、最後にそれを標準出力せよ。 また、ファイル出力の場合も考えよ。 *stringを使いなさい。
316 名前:デフォルトの名無しさん [2006/06/27(火) 14:25:35 ] パスカルの問題でわからないので教えて下さい。 問1 任意の人数に対してBMI(肥満度を判定する指標)を計算し、その平均値を出力させる。ここで,BMIとは 体重/身長/身長 で定義されるため,体重および身長を人数分だけ標準入力せよ。ここで,人数の最大は10名としてよい。なお,関数あるいは手続きを用いること。 問2 10名分のクラスの学生名前(アルファベット)を配列に保存せよ。また、最後にそれを標準出力せよ。 また、ファイル出力の場合も考えよ。 *stringを使いなさい。
317 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 23:08:41 ] このスレまだあったのか
318 名前:デフォルトの名無しさん [2006/07/01(土) 08:42:13 ] リスト構造ってむずい部類?
319 名前:デフォルトの名無しさん mailto:sage [2006/07/01(土) 17:20:31 ] >>318 リストによっては。 単純な線形ならそんなに難しくないけど、双方向になると少し難しくなって、 ツリー構造とかになると結構難しくなって。バランス木くらいになると相当 難しくなる。
320 名前:デフォルトの名無しさん mailto:sage [2006/07/02(日) 01:05:23 ] どうむずかしいの
321 名前:319 mailto:sage [2006/07/02(日) 10:29:29 ] >>320 自分で実装してみれば分かる。
322 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 02:05:51 ] なんで?
323 名前:デフォルトの名無しさん [2006/07/04(火) 01:23:08 ] Delphiの課題なのですが 乱数を生成して 正方形 と 円(四分円)の面積を比較することにより, 円周率 π の近似値を求める方法がある。 以下は,この方法に関する問いである。 (1) 乱数によって定まる点の分布の状況を PaintBox 上に図示せよ。 (2) 円周率 π の近似値を計算せよ。 という問題が出されました 取っ掛かりからわからないという初心者ぶりです ご教授願えませんでしょうか
324 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:38:04 ] > 乱数を生成して 正方形 と 円(四分円)の面積を比較することにより, > 円周率 π の近似値を求める方法がある。 この方法については理解してる?
325 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:42:41 ] ランダムに点を打ってくんじゃなかったか? まずアルゴリズムをはっきりさせること。
326 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:49:15 ] rを半径とすると、 円の面積は Pi*r*r 正方形の面積 r*r 円の公式 x*x + y*y <= r*4 を使うんじゃないの?
327 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 01:52:04 ] 1辺の長さがRの正方形とそれに内接する四分円とを描画する。 正方形内にランダムに点を打ち、打った点の総数と、 そのうち四分円の中に入った点の数をそれぞれカウントする。 あとはその比率から円周率を近似するくらいはわかるだろう。
328 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 17:21:07 ] もんてかるろ法だわな
329 名前:デフォルトの名無しさん mailto:sage [2006/07/04(火) 23:09:09 ] 円の公式は x*x + y*y <= r*r でした。
330 名前:323 mailto:sage [2006/07/05(水) 00:34:12 ] ご教授レスありがとうございました。 自宅にDelphiがないのですが(学校にある)、 取り敢えずモンテカルロ法について調べてみました。 結果イメージとしては理解できたのですが 点を打つ方法、点を数える方法がともにわかりませんでした。 (乱数関係から検索したのですが) 何もしてないと言われても仕方ない有様ですが、 どうかその二つの作業の方法だけでも教えていただけませんでしょうか。
331 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 00:37:35 ] >>330 ttp://www.wikihouse.com/DelphiVIP/index.php?%A5%B3%A5%E9%A5%E0%2F%A5%D1%A5%A4%A5%D1%A5%A4%A5%E2%A5%F3%A5%C6%A5%AB%A5%EB%A5%ED%A4%BF%A4%F3
332 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 01:37:50 ] >>330 >>331 にほとんど答えが載っているが せっかく文章練ったので。 sylphys.ddo.jp/upld2nd/pc2/src/1152029914998.png 乱数 x, y を別々に発生させ、>>329 の式で 4半円(図の白い部分)の中にあるか判定する。 4半円の中に入った点の数・外になった点の数をそれぞれ 変数にもって、判定結果に従ってカウントアップ。 ある程度の数の点を計算したら、点の数の比を計算すれば、面積比が出てくる。 後は、既知の円の面積の公式 4πr^2 からπを求める。 PaintBoxは自分でやってください。
333 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 07:30:25 ] 自分で考えないと馬鹿になるぉ
334 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 21:57:17 ] >既知の円の面積の公式 これがクセモノ トートロジー
335 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 22:44:29 ] 円の面積の公式も分からないとはいくらゆとり世代でも酷すぎる
336 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 23:01:56 ] >>335 というか、「Piを求めるのにPiを使った円の面積の公式を使う」 というのは問題じゃないのかと>>334 は言いたいんだろう。