[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 11/30 08:14 / Filesize : 280 KB / Number-of Response : 889
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Pascalの宿題は俺にやらせろ!!Part2



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 }









[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<280KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef