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
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 は言いたいんだろう。
337 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 23:05:04 ] >>329
338 名前:332 mailto:sage [2006/07/05(水) 23:20:13 ] いや、式がおかしいです。 モロゆとり世代ですんません
339 名前:デフォルトの名無しさん mailto:sage [2006/07/05(水) 23:36:31 ] 4πr^2って球の話なの^^
340 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 18:01:24 ] >>339 >>332 のは 1/4 だから 点の数の比を計算するのに 4πr^2 になるってだけの話だと思う
341 名前:323 mailto:sage [2006/07/06(木) 21:05:51 ] おかげさまで課題できました。 皆さんお世話になりました。
342 名前:デフォルトの名無しさん [2006/07/06(木) 22:07:28 ] パスカルの問題でわからないのですが、教えてください。 ・学籍番号と点をデータとして入力し、これを得点の高い順に並べ替え、 順位をつけて表示する。 高い順に並べ替えるまではできるのですが、それを点じゃなくて学籍番号 で表示することができません。
343 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:14:41 ] 配列2個用意して、両方並べ替える。 Delphi的に正しいのは record 使う。
344 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:15:12 ] 学籍番号と得点を組にして持って、並べ替えるときに一緒に動かすんだ。
345 名前:デフォルトの名無しさん [2006/07/06(木) 22:15:53 ] ワーォ
346 名前:デフォルトの名無しさん [2006/07/06(木) 22:36:50 ] すいません。よくわかりません。
347 名前:デフォルトの名無しさん mailto:sage [2006/07/06(木) 22:37:41 ] とりあえずコード書いて晒してみれ。
348 名前:デフォルトの名無しさん [2006/07/07(金) 17:20:06 ] これであと学籍番号を一緒に表示したいにですが、どうすればいいですか? SysUtils; type rec=record name:String; ten:integer; end;var stud:array[1..5]of rec; i,j,w:integer; begin { TODO -oUser -cConsole Main : この下にコードを記述してください } for i:=1 to 5 do begin write('no.',i,' 学籍番号:'); readln(stud[i].name); write('no.',i,' 点数:'); readln(stud[i].ten) end; for i:=1 to 5-1 do for j:= i+1 to 5 do if stud[j].ten>stud[i].ten then begin w:=stud[i].ten; stud[i].ten:=stud[j].ten; stud[j].ten:=w end; writeln; for i:=1 to 5 do writeln(stud[i].ten); writeln; readln; end.
349 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 19:50:11 ] ここまで出来ててなんでそれが出来ないんだw
350 名前:デフォルトの名無しさん mailto:sage [2006/07/07(金) 20:24:19 ] 分からんままコピペしただけかな? 最後の for i:=1 to 5 do writeln(stud[i].ten); に、点数を出力する文を加えればいい。
351 名前:デフォルトの名無しさん [2006/07/07(金) 22:12:36 ] みなさんのおかげで何とかできました。 ありがとうございました。
352 名前:デフォルトの名無しさん [2006/07/08(土) 01:52:57 ] 手続きや関数での変数宣言で、varをつけるのとつけないのの違いがよくわからないです。 誰か教えてください。
353 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 01:56:06 ] 参照渡しと値渡し
354 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 01:44:09 ] アホですみませんがこの2つの問題がわかりません ぜひ教えてください 5教科のテストを行いました。それぞれのテストの点数を入力してもらい、 それぞれの点数と5教科の合計と平均をわかりやすく表示するプログラムを作成しなさい。 プログラムを作成していて、次のような関数"printAns()"が必要となりました。 printAns()は第一引数としてint型を受け、受け取った整数に50をかけて ”答えは○○です”と表示してから、その答えをint型で返します。 このような関数printAns()を製作してください。 メインとなるプログラムは次のものを流用するように。 var a,b:Integer; begin Write(Output,'n ? |'); Read(Input,a); Writeln(Output,'ここから関数'); b :=Culculate(a); Writeln(Output,'ここまで関数'); Writeln(Output,'戻り値は ',b); end.
355 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 02:30:58 ] いくらなんでも丸投げ過ぎ
356 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 02:57:04 ] 解答者がやりたくなるような質問の仕方を研究して来い 話はそれからだ
357 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 06:41:46 ] >>354 >>348 を改良すれば作れるよ。
358 名前:デフォルトの名無しさん [2006/07/14(金) 01:40:21 ] 課題内容: 新幹線に乗るために阪急電鉄・石橋駅から梅田経由で地下鉄御堂筋線・新大 阪駅まで行きたいとする.新大阪駅に到着したい時刻を入力すると,石橋駅 で何時何分発の列車に乗ればよいかを教えてくれるプログラムを以下の3段 階に分けて作成せよ.ただし,以下の2つの条件を満たすこと. 条件: (1) 手続きもしくは関数を用いること. (プログラムを分かりやすくするため) (2) 少なくとも以下の情報を出力すること. (ユーザが使いやすいように,出力を工夫すること) ・阪急電鉄・石橋駅の発車時刻 ・阪急電鉄・梅田駅への到着時刻 ・地下鉄御堂筋線・梅田駅の発車時刻 ・地下鉄御堂筋線・新大阪駅への到着時刻 .
359 名前:デフォルトの名無しさん [2006/07/14(金) 01:41:18 ] 段階: (1) 平日ダイヤのみに対応する.阪急は急行しか利用しない(普通列車な ど,急行以外の列車は無視する). (2) 段階 (1) に加えて,阪急の全列車(特急,特急日生エクスプレス, 通勤特急,急行,準急,庄内・曽根通過待ちなしの普通,庄内・曽根 通過待ちありの普通)を利用可能にする.ただし,普通列車が後発の 特急などに追い越される可能性は無視する(追い越される普通列車を 出力してよい).さらに,土曜・休日ダイヤに対応する. (3) 段階 (2) に加えて,後発の特急などに追い越される普通列車でなく, 後発の特急を出力するようにする
360 名前:デフォルトの名無しさん [2006/07/14(金) 01:52:31 ] 358、359の者なんですが、PASCALの課題で下のような時刻表を与えられていてこれ以外にもたくさんあって、 配列に一つ一つ打ち込むにはあまりに多すぎるんで、どうにかファイルを呼び出したいんですが、 教科書のようなものを読んでみていじってみても上手くいきません。 どなたか少しわかりやすく説明していただけたら嬉しいんですが…
361 名前:デフォルトの名無しさん [2006/07/14(金) 01:53:44 ] 急行 6 4 22 33 44 51 7 1 829 49 56 9 7 16 27 39 49 59 10 9 19 1558 16 8 18 28 38 48 58 17 7 16 26 36 46 56 18 6 17 26 36 48 57 19 8 17 28 37 48 57 20 8 17 28 38 48 58 21 8 18 28 38 48 58 22 8 18 28 38 48 23 2 14
362 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 03:55:01 ] >>318 リストだけに超絶に難しい。 >>360 >>228-232 あたりに載ってる。 実用的な問題ですね。
363 名前:デフォルトの名無しさん mailto:sage [2006/07/14(金) 12:47:24 ] 1行ずつスキャンして、ansiナントカで解析していけばよい
364 名前:デフォルトの名無しさん [2006/07/14(金) 23:49:29 ] 二分探索法を手続き宣言して使用する場合、 procedureとfunctionのどちらを使えば良いでしょうか? また、それらに処理に必要なデータを引数として渡すようにする場合、 どういった形式が望ましいのでしょうか? いろいろ試してみましたが、うまくいかないので… 応えて頂けると幸いです。
365 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 00:53:39 ] とりあえずCとかのサンプルコードを移植したら? それからDelphiスタイルに変えればいいかと。
366 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 08:25:12 ] Pascal過疎ってるなぁ。
367 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 15:01:00 ] >>364 procedure(手続き)とfunction(関数)は値を返すか返さないか の違いだけしかないから、値を返したいんだったらfunctionにして 値が要らないんだったらprocedureにすればいいのでは。 処理に必要なデータは渡さなきゃならないけど、どうやって渡す かは実装する人の自由だから、好きにすればいいと思う。
368 名前:デフォルトの名無しさん [2006/07/15(土) 22:06:51 ] 長文で失礼します。 (1) 配列にしまわれたいくつかの整数をデータとして, 棒グラフを作成するプログラムをかけ。 (入力データ x は 0<= x <=100 をみたすとする。) Hint: 以下の作業を,i=1 から i=n まで, n 回繰り返す ( for 文や repeat 文を用いる) 作業: x 方向に位置をずらしながら, a[i] に応じた高さの細長い長方形を n 個描く 50 未満のデータに対する「棒」は赤色で表示し, 50 以上のデータに対する「棒」は青色で表示するようにせよ。 という課題なのですが
369 名前:デフォルトの名無しさん [2006/07/15(土) 22:07:29 ] var n : integer; a : array[1..20] of integer; procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add(Edit1.Text); n := n + 1; a[n] := StrToInt(Edit1.Text); Edit1.Clear; Edit1.SetFocus; end; procedure TForm1.Button2Click(Sender: TObject); var i : integer; begin with PaintBox1.Canvas do begin for i= 1 to n do //棒グラフ作成?
370 名前:368 369 [2006/07/15(土) 22:08:25 ] end; procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Clear; Edit1.Clear; Edit1.SetFocus; end; end. という状態です。 ここまでに誤りがあるのか、また、肝心の空欄部分はどうすればいいか 教えていただけたら幸いです。
371 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 22:17:31 ] 垢と阿保はどうすれば出ますか?
372 名前:デフォルトの名無しさん mailto:sage [2006/07/15(土) 22:50:27 ] >>368-370 nは初期化されている? PaintBox1.Canvasはクリアされている? 棒グラフを書く前に座標軸を書かなきゃ。 棒グラフはまず「グラフ用紙に自分出てで書いて」みれば、どう 書けばいいか分かると思う。その書く手順そのままCanvasに 書けばいいだけ。 手で書く時に位置情報(ピクセル単位)を意識しながら書けば 簡単に出来ると思う。
373 名前:364 mailto:sage [2006/07/16(日) 10:18:47 ] いくつかのご指摘ありがとうございます。 なんとかがんばってみます。
374 名前:デフォルトの名無しさん [2006/07/17(月) 01:53:46 ] C言語で書かれたプログラムをpascalに変換する何かってないですか?
375 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 02:53:35 ] Cを読む事が出来、pascalを書く事が出来る人間の脳と手
376 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 10:13:21 ] 簡単だから自分で覚えた方がいいよ Pascalがいかに面倒かってよく分かる
377 名前:デフォルトの名無しさん [2006/07/17(月) 11:21:48 ] すごく間抜けた質問かもしれませんが pascalのプログラムを家で作成したいのですがどこか置いてるサイトとかありますか?
378 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:32:06 ] Pascalコンパイラがどこにあるかってこと?
379 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:36:13 ] www.jp.freepascal.org/download.html 16bit だったような気がするけど
380 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:39:35 ] 純正 pascal にこだわらないなら Delphi / kylix あたりでいいんじゃない?
381 名前:377 [2006/07/17(月) 11:53:57 ] >>379 >>380 どうもありがとう。 >>379 のはなんか落とせないから>>380 のやつみてみます。
382 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 11:55:10 ] pascalのコンパイラで有名なのは 1、Delphi 6 www.vector.co.jp/soft/win95/prog/se205882.html 登録が必要 www.borland.com/downloads/download_delphi.html 2、FreePascal www.jp.freepascal.org/ IDEで有名なのはlazarus www.lazarus.freepascal.org/ 3、HelloPascal members.jcom.home.ne.jp/yurizaka/soft/ 4、カベソン www.tokumaru.org/plang/cabezon/cabezon.htm 5、gpc GNU Pascal Compiler
383 名前:377 [2006/07/17(月) 12:22:37 ] >>382 すごく参考になりました。どうもありがとう。
384 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 08:53:43 ] うわーカベソンで今もあったんだ。 なつかしー
385 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 20:58:22 ] Pascalとか、わけわかないっすお
386 名前:デフォルトの名無しさん [2006/07/18(火) 22:08:05 ] for文くらいまでしか理解してません、もうダメポorz 誰か助けてください。。。○投げですいませんOTL (i) 自然数(整数)で表記される「キー」、および、8文字までの文字列で表現される「データ」を、2分木の構造で管理するプログラムであること。 *常に左右のバランスを保つAVL木であること。 (ii) プログラムの実行開始直後に、可能な操作のメニューが表示され、自在に選択でき、1つの操作が実行された後、そのメニューが再表示され、入力待ち状態になること。 (iii) 「キー」「データ」の値を入力することによりデータの登録ができること。 (iv) 二重登録を防止し、その際警告メッセージを出すこと。 (v) 「キー」の値の入力することにより、データの削除ができること。 (vi) 登録されていないデータを削除しようとすると、メニューに戻る前に警告メッセージを出すこと。 (vii) 「キー」の値を入力することにより、そのキーの値をもつデータを参照できること。 (viii) 2分木の構造(頂点間の接続関係)を表示できること。 (ix) 登録されている全データを、キーの小さい順に列挙できること。 (x) 2分木内の各頂点の(木の根からの)深さを表示できること。 --------------------------------------- *はできるとボーナス点 要解説書。手続きの処理内容、変数の説明など 解説書〆7/24 プログラムソース〆7/21 orz
387 名前:デフォルトの名無しさん [2006/07/18(火) 22:11:39 ] ↑ Pascalです。。。
388 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 22:15:41 ] recordを使う
389 名前:デフォルトの名無しさん mailto:sage [2006/07/18(火) 22:21:03 ] 俺もレポートやんないと
390 名前:デフォルトの名無しさん [2006/07/22(土) 13:26:54 ] これpascalにしてください。 ime.st/zetubou.mine.nu/itoshiki/nozomu/zetubou26032.txt
391 名前:デフォルトの名無しさん mailto:sage [2006/07/23(日) 07:33:13 ] ime.st のまま貼るなよ
392 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 12:25:21 ] Pascalでプログラムの実行実時間を調べるコマンドがわからないのですが、 誰かご存知でしょうか?
393 名前:デフォルトの名無しさん mailto:sage [2006/07/26(水) 20:23:22 ] 開始時と終了時に時間を取得して差を求める
394 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 05:26:56 ] WindowsならtimeGetTimeがms単位で測定できる。
395 名前:774RR [2006/08/31(木) 20:25:00 ] やっとXcodeでFPC走るようにしたよん。記念にたまにはあげよう。 >394 それが信頼できるかはまた別物。リアルタイム処理を今のビジネス/ホビー用パソコンでやるのは かなり無理があるよ。 DOSでTurbo Pascal使った方がいいくらい。
396 名前:デフォルトの名無しさん mailto:sage [2006/08/31(木) 20:27:43 ] で?
397 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 15:24:53 ] Turbo Delphi で Pascal のコンパイルは出来ますか?
398 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 00:17:39 ] できます
399 名前:デフォルトの名無しさん [2006/10/06(金) 04:12:13 ] integerで扱える範囲を越えた数値を代入すると、 誤った値を返したりすることってありますか? また、そういうことを防ぐ、というかせめて 間違った値が出るということを予測できるといいなあと思うのですが どういう文献を調べればよいのかも教えていただけると助かります!
400 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 15:33:01 ] integerの範囲を超えないように注意することで防げます。
401 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 15:49:03 ] ふつうは例外が出ると思う
402 名前:デフォルトの名無しさん [2006/10/06(金) 17:51:51 ] >>400 integerの範囲?
403 名前:デフォルトの名無しさん mailto:sage [2006/10/06(金) 23:07:14 ] low(integer)..high(integer)
404 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 03:38:29 ] 引数のパラメータにconstを付けるのは、どういう意味(違い)があるのですか。 varなら分かりますが。
405 名前:デフォルトの名無しさん mailto:sage [2006/10/08(日) 12:49:14 ] const も var も参照渡しだが、constは値の変更ができない。
406 名前:デフォルトの名無しさん [2006/10/15(日) 21:14:10 ] すんません 手元にパスカルないんですけど パスカルにおける論理式が真の時の返り値って 1でしょうか、それともー1でしょうか?
407 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 21:47:39 ] 実装によりますが-1が多いです。
408 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 21:51:18 ] True です。
409 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 22:26:48 ] >>407 いやdelphiでもfpcでもord(true)は1だろ。
410 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:30:28 ] PInteger(@b)^ だと $FFFFFFFF
411 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:42:31 ] BooleanとIntegerではバイト長が異なるのでそのキャストは無意味
412 名前:デフォルトの名無しさん mailto:sage [2006/10/15(日) 23:57:14 ] PByte(@b)^ だと $FF
413 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 00:18:18 ] >>408 が正しいと思う。論理式は論理値しか返さないから、true もしくはfalseしかない。1か-1かで比較すると「型が違います」と 怒られる。
414 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 00:47:39 ] Booleanは順序型だよ
415 名前:デフォルトの名無しさん [2006/10/16(月) 00:56:54 ] だから何?
416 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:21:44 ] 全ての順序型は数値とと互換性がある
417 名前:デフォルトの名無しさん [2006/10/16(月) 01:24:20 ] そう。良かったね。
418 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:28:51 ] >>413 ord使えよ
419 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 01:33:50 ] それで?
420 名前:デフォルトの名無しさん mailto:sage [2006/10/16(月) 09:04:17 ] >>406 0以外としか定義されてないよ。だからどっちかは風任せ
421 名前:774RR mailto:sage [2006/10/16(月) 18:02:05 ] 言語としては>408が正解だろう。 実装としては>420の言う通り取説嫁としかいいようがない。 fpcだと boolean - false : 0 / true : 1 bytebool, wordbook, longbool - false : 0 / true : 0以外のなんでも となっている。
422 名前:デフォルトの名無しさん [2006/10/17(火) 00:16:06 ] ふーん、それが何か?
423 名前:デフォルトの名無しさん [2006/10/26(木) 17:14:30 ] ユーグリッド互除法のプログラムを変更することにより正整数x、yを読み取りux+vy=gcd(x,y) を満たす整数の組(u,v)を一つ出力するプログラムを作れ。ただし配列は用いない。 わからないのでお願いします!
424 名前:423 [2006/10/26(木) 17:42:23 ] program gcd(input, output); var x0, y0, x, y, w, a1, b1, a, b, q1, u, v : integer; begin readln(x0, y0); if (x0 > 0) and (y0 > 0) then begin x := x0; y := y0; a := 1; b := 0; while x <> 0 do begin w := y mod x; y := x; x :=w; q1 := y0 div x0; a1 := b - q1 * a; b := a; a := a1 end; u := b; v := ( y - u * x0 ) div y0; writeln('gcd(', x0:1, ', ', y0:1, ') = ', y:1); writeln('(u,v)=(', u:1, ',', v:1, ')') end end. こう作ったんですけど、x、yの値が大きくなると正しく動きません。 添削してください。
425 名前:デフォルトの名無しさん [2006/11/14(火) 02:20:00 ] ポインタを使った2つの線形リストにそれぞれアルファベットを入れて、 その2つの共通部分を別の線形リストに入れて出力するプログラム を書きたいのですが、よくわかりません。 まず、線形リストに文字を入力して、それを出力するだけのプログラムを 書いたのですが、コンパイルはできるものの実行すると無限ループになります。 何がいけないのかご指摘いただけると助かります。 ↓↓つづく↓↓
426 名前:デフォルトの名無しさん [2006/11/14(火) 02:20:58 ] program intersection(input,output); type pointer = ^celltype; celltype = record element : char; next : pointer; end; var listA,listB,listC : pointer; x : char;
427 名前:デフォルトの名無しさん [2006/11/14(火) 02:22:42 ] procedure insert(var p : pointer; a : char); var q : pointer; begin new(q); q^.element:=a; q^.next:=p; p:=q; end; { insert } procedure print(p : pointer); begin while p<>nil do begin write(p^.element,' '); print(p^.next) end end; { print }
428 名前:デフォルトの名無しさん [2006/11/14(火) 02:24:02 ] begin readln(x); while x<>'.' do begin insert(listA,x); readln(x) end; if listA^.element<>'.' then begin print(listA) end; writeln(); dispose(listA) end.
429 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 02:45:11 ] >while p<>nil do begin >write(p^.element,' '); >print(p^.next) >end pが変化してないようだが。while→ifじゃ無いか?
430 名前:デフォルトの名無しさん [2006/11/14(火) 02:57:57 ] >>429 ifにしたらうまくいきました!! 逆順に出力されるけど・・・ 共通要素を探す手続きのほうもがんばって作ってみます。 ありがとうございました。
431 名前:デフォルトの名無しさん [2006/11/14(火) 22:31:52 ] で、その共通要素を探す手続きなのですが・・・ これのどこがだめなのかご指摘願います。 procedure search(var p,q,r : pointer); var found : boolean; begin while p<>nil do begin found:=false; while q<>nil do begin if p^.element=q^.element then found:=true else q:=q^.next end; if found then begin new(r); insert(r,p^.element) end; p:=p^.next end end; { search }