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


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

Pascal の初心者用の質問・相談所



1 名前:デフォルトの名無しさん [02/01/02 01:46]
Pascal の初心者用の質問・相談所
コンソールのみ。GUI は扱いません。
「Cをやったけど難しいので、やっぱりPascalからぼちぼちやるぅ」という人向け。

コンパイラダウンロード
www.vector.co.jp/vpack/filearea/win95/prog/pascal/index.html

ちなみにDelphiは
「モナーの *やさしい* Delphi質問スレ」
pc.2ch.net/test/read.cgi/tech/1003113413/

496 名前:デフォルトの名無しさん [03/03/29 11:11]
10年程前にPC-DOS+Turbo Pascal 7で作ったプログラムを動かしたいのですが、困ったことに最近のパソコンはEMSメモリが使えないものが多いのです。
新型パソコンでEMSメモリ使用可能なものがあったら教えてください。


497 名前:デフォルトの名無しさん mailto:sage [03/03/29 11:14]
DOS 上で動かすか、エミュレータ上で動かせば。

498 名前:デフォルトの名無しさん mailto:sage [03/03/29 11:21]
>>496
DOS5.0の時とかXMSをEMM386でEMSに化けさせてたと記憶してるけど。

499 名前:デフォルトの名無しさん [03/04/01 21:59]
496です。
497さん498さんレスありがとうございます。

>DOS 上で動かすか、エミュレータ上で動かせば。

ハードの問題なのでどちらの方法でも動かないのでは?
システムコマンダーでWinとDosのデュアルブートにするつもりなのですが





500 名前:デフォルトの名無しさん mailto:sage [03/04/01 22:08]
>>499
間を取ってWindows3.1とかどうだ?

って言うかVMWareでも使った方が楽ちんな予感。

501 名前:デフォルトの名無しさん mailto:sage [03/04/01 22:21]
EMS だけの話なら EMS をエミュればOK!
昔やった記憶があるが具体的には忘れた。
ただ楽するなら、500(おめ!)さんの
言うようにVMWareでも使った方がいい。

502 名前:デフォルトの名無しさん mailto:sage [03/04/02 09:02]
現在Pascal勉強中の初心者です。

Pascalって実用性が無いんですか?
CGIをやるのに適してるって聞いたんだけど・・・

503 名前:デフォルトの名無しさん mailto:sage [03/04/02 12:48]
趣味でやるぶんにはかまわないでしょ。

504 名前:デフォルトの名無しさん mailto:sage [03/04/02 14:04]
実用性はあるが、CGIってのは多分Perlと混同してる(w

Pure Pascalじゃなくて有償版Delphi/Kylixなら高機能なCGIも作れないでもない



505 名前:デフォルトの名無しさん mailto:sage [03/04/02 23:07]
>Pure Pascalじゃなくて有償版Delphi/Kylixなら高機能なCGIも作れないでもない

アホがいます。


506 名前:デフォルトの名無しさん mailto:sage [03/04/02 23:14]
WebSnapとかIntraWebとか、まあ知らないなら知らないでいいけどさ

507 名前:デフォルトの名無しさん mailto:sage [03/04/03 06:10]
>>506
何でもかんでもライブラリがないと何もできないかわいそうな人がいます。


508 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [03/04/12 16:13]
こういう書き込みの後でなんですが,
Cのscanfに相当する機能を実現する関するのライブラリって
どこかにありませんでしょうか.
以前自作したのですが作りが下手なのか処理が重すぎて….
テキスト解析はちゃんと本を読んで勉強しないとダメかな.


509 名前:デフォルトの名無しさん mailto:sage [03/04/12 20:05]
>>508
> Cのscanfに相当する機能を実現する関するのライブラリって
> どこかにありませんでしょうか.

scanf のソース見てポーティングすればいいとおもうけど。
可変引数の扱いをどうするかが問題かと思うが。

510 名前:デフォルトの名無しさん mailto:sage [03/04/12 20:58]
>>509
オープン配列とかで何とかならない?

511 名前:山崎渉 mailto:(^^) [03/04/17 15:47]
(^^)

512 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [03/04/22 22:42]
>>509-510
レスが遅くなってごめんなさい….

scanfのソースは探してみます.ありがとうございます.
ちなみに可変引数は前に作ったときは配列型で対応していました.
var指定が出来なかったのでポインタを渡す仕様にしていました.


513 名前:デフォルトの名無しさん [03/04/25 04:18]
JIS PASCAL水準1準拠の処理系ってありませんか。
またpacked array[0..7] of booleanを1バイトに詰め込んでくれたり、set of 0..256が書けたりするのも…。
どれも実装が面倒なんだろうか…

514 名前:bloom [03/04/25 04:26]
homepage.mac.com/ayaya16/



515 名前:デフォルトの名無しさん mailto:sage [03/04/25 04:40]
そういえば規格では set of Charが集合の最大サイズでしたっけ。
ってことはCharがWideCharになるDelphi.NETではset of 0..65535が可能に!?

516 名前:513 [03/04/25 05:05]
そうかset of charが集合の最大サイズなのか…
JIS規格書が会社なんで確認できないな。
基底型は任意の順序型だと思っていた。

517 名前:デフォルトの名無しさん [03/04/25 05:17]
>>502
実用性がないとかまことしやかに言われていますが、そんなことはないです。
CGI は、言語が標準入力と標準出力をサポートしていれば、どんな言語でも可能です。


518 名前:デフォルトの名無しさん [03/04/25 05:44]
www.gnu.org/brave-gnu-world/issue-12.ja.html より:

GNU Pascal は Borland Pascal 7.0 という「標準のようなもの
(quasi-standard)」だけでなく、ISO 7185 Pascal Standard を完全に
サポートしている唯一のコンパイラです。


519 名前:デフォルトの名無しさん [03/04/25 05:46]
>>517
適用範囲を限定すればJIS PASCALでも実用性が見いだせるということですね
逆に何らかの拡張を施さないと適用範囲は広がらないと。

520 名前:513. [03/04/25 06:05]
>>518
ありがとう。
危うく自前でコンパイラ作りそうだったよ。
GNU PASCAL検討してみます。

521 名前:デフォルトの名無しさん mailto:sage [03/04/25 06:11]
CodeWarrior Pascal
packed array[0..7] of booleanを1バイトに → 出来る。
set of 0..256が書けたり → set of 0..2047までOK。 (256byte)

THINK Pascal
packed array[0..7] of booleanを1バイトに → 不可
set of 0..256が書けたり → set of -32768..32767までOK。

522 名前:デフォルトの名無しさん [03/04/25 06:14]
>>519
JIS Pascal と厳密にやると、分割コンパイルができないなど不便はありますが、
JIS/ISO 互換でやりたいなら、Turbo Pascal や Delphi のようなものを使って、
分割コンパイルは拡張機能を利用し、コード自体は、できる限り JIS/ISO 標準で
書くということなら、ISO C 言語程度の実用性は出てきます。
Turbo Pascal や Delphi が完全に ISO/JIS に準拠しているわけではありませんが、
かなり標準 Pascal の文法をサポートしています。
この本は、Turbo Pascal や JIS/ISO 標準 Pascal その他の文法に差異があるところに
注釈が入っていてよい本です。

演習PASCALとその応用
www.saiensu.co.jp/books-htm/ISBN4-7819-0507-2.htm

523 名前:デフォルトの名無しさん [03/04/25 06:25]
>>513
手元の Linux に入っていた GNU Pascal 2.95.4 でやってみましたらできるようです。
サンプル・ソース:

program iso(input, output);

var
a : packed array[0..7] of boolean;
b : set of 0..65535;

begin
writeln('hello');
end.

gpc -o iso iso.p

とやったら、

iso.p:5: warning: integer set size limited to 65535 elements from low bound
iso.p:5: warning: use `--setlimit=NUMBER' to change the limit at compile time

と出たので、

gpc --setlimit=65536 -o iso iso.p

としたら、エラーも警告もなくコンパイルできました。
動作は未確認ですが (^^
ちなみに、GNU Pascal は cygwin を使えば Windows でも動きます。

524 名前:動画直リン [03/04/25 06:26]
homepage.mac.com/hitomi18/



525 名前:デフォルトの名無しさん mailto:sage [03/04/25 06:30]
こうしてみるとDelphiって基礎部分が貧弱ですねぇ。
確か標準ってオープン配列で

procedure A(const B: array[L..H] of Integer);

なんて構文も使えませんでしたっけ?

526 名前:513. [03/04/25 06:44]
>>521
ありがとう
最近の処理系は制限が少しずつ取れてきてるのですね
packed set of -maxint..maxintはどうだろう。
コンパイル出来ても実行は出来なくて当然だとは思うが…
CのビットフィールドとPASCALの詰めあり構造型の性質がそっくりなのは偶然?

527 名前:デフォルトの名無しさん [03/04/25 06:45]
あ、でも packed array[0..7] of boolean は 2 バイトになりました。0..15 まで
2 バイトで、0..31 は 4 バイト。これじゃだめですかね。
オプション指定もあるのかもしれませんが。


528 名前:デフォルトの名無しさん [03/04/25 06:46]
>>527
GNU Pascal でのことです。


529 名前:デフォルトの名無しさん [03/04/25 06:55]
GNU Pascal マニュアルでつ。
www.gnu-pascal.de/gpc/index.html


530 名前:513. [03/04/25 06:58]
>>527
多分それは各要素に不定値を表すビットが含まれているんじゃないかと。

531 名前:デフォルトの名無しさん [03/04/25 07:04]
GNU Pascal で c : set of -10..65535; とおりました。


532 名前:デフォルトの名無しさん mailto:sage [03/04/25 07:05]
>>530
単に2byte単位でしか割り当て出来ないだけのような

533 名前:513. [03/04/25 07:14]
>>530
そういわれればそうだな。はやとちりでした。
実行環境に適切な境界迄余分なバイトが詰められるのは構わないです。

534 名前:デフォルトの名無しさん [03/04/25 07:26]
www.k-514.com/




535 名前:デフォルトの名無しさん [03/04/25 08:09]
GNU Pascal で set -65535..65535 は gpc --standard-pascal --setlimit=131071 でとおりました。


536 名前:521 mailto:sage [03/04/25 08:28]
訂正;THINK Pascalでもpacked array[0..7] of booleanは1byteでした。

>>526
>packed set of -maxint..maxintはどうだろう。
>コンパイル出来ても実行は出来なくて当然だとは思うが…
maxintが32767なのでTHINK Pascalでコンパイル&実行できます。
集合はもともと1bit扱いなのでpackedがついてもつかなくても
変数のサイズは同じです。

エラトステネスのふるいで素数を求めるプログラム、
set of 0..maxint (32767)でコンパイル&実行できました。
最後の3つの素数 = 32717 32719 32749

537 名前:デフォルトの名無しさん [03/04/25 08:52]
>>536
エラトステネスのふるいって、集合型でどうやるんですか?
0 から n までの配列を用意して、素数なら true、合成数なら false にしていく、
というものだと思うんですが。


538 名前:別人 mailto:sage [03/04/25 08:59]
set of Xもarray[X] of Booleanも、言語仕様上はともかく役割としては変わらないよ。
配列で A[i] → 集合で i in A
A[i] := True → Include(A, i)
A[i] := False → Exclude(A, i)

Adaなんか開き直ってBoolean配列に集合演算の能力持たせてるし。

539 名前:デフォルトの名無しさん mailto:sage [03/04/25 09:07]
やってることは配列を使うのと大差ない。
はじめに[2,3,4,5,6..maxint]という集合を用意しておいて
nの倍数を集合から除去していくだけ。

540 名前:デフォルトの名無しさん [03/04/25 11:12]
エラトステネスのふるい、集合型バージョン。こんなんでできました。

コンパイル・コマンド: gpc --standard-pascal --setlimit=65536 -o primenumber primenumber.p

program primenumber(input, output);
const
n = 65535;
var
prime : set of 0..n;
i : integer;
j : integer;
begin
prime := [0..n];
for i := 2 to n do
if prime >= [i] then
begin
j := i + i;
while j <= n do
begin
prime := prime - [j];
j := j + i;
end
end;
for i := 2 to n do
begin
if prime >= [i] then
writeln(i);
end
end.

541 名前:デフォルトの名無しさん [03/04/25 11:16]
空白が崩れた。スマソ。
program primenumber(input, output);
const
   n = 65535;
var
   prime : set of 0..n;
   i     : integer;
   j     : integer;
begin
   prime := [0..n];
   for i := 2 to n do
      if prime >= [i] then
      begin
         j := i + i;
         while j <= n do
         begin
            prime := prime - [j];
            j := j + i;
         end
      end;
   for i := 2 to n do
   begin
      if prime >= [i] then
         writeln(i);
   end
end.


542 名前:デフォルトの名無しさん mailto:sage [03/04/25 11:32]
>>541
&ensp;の嵐で何が書かれているのかさっぱりわからん。

543 名前:デフォルトの名無しさん [03/04/25 12:02]
>>542
あれ、そうですか。私 Opera なんですけど、大丈夫です。
ブラウザ依存なんでしょうか。すみません。


544 名前:デフォルトの名無しさん [03/04/25 12:03]
>>543
IE 6 では大丈夫です。




545 名前:デフォルトの名無しさん [03/04/25 12:44]
そうそう、>>541 の結果ですけれど、最後の 3 つは、65497、65519、65521 でした。


546 名前:513 [03/04/26 02:07]
型T=set of 0..maxintの各元表記全体からmaxint+1ビットの符号無し整数への1対1写像は定義できるよな?
もし定義できるのならinteger型の範囲は遙かに越えてしまうな
で、更に(有限)整数上の加法と一致するように型T上の加法をうまく定義して…(略)
普通はintegerの配列で実現する多倍長整数とは一風変わった整数(環)が出来そう
これをリストに持たせてもっと大きな数に対する〜のふるいが…
工夫しないとメモリ不足になりそうだな
或いはset of -maxint..maxintを基数2の固定小数点表現とみなすのも面白そうだ
体調が回復したらやってみよう

547 名前:デフォルトの名無しさん mailto:sage [03/04/29 18:56]
We Love Pascal.

548 名前:山崎渉 mailto:(^^) [03/05/22 05:01]
━―━―━―━―━―━―━―━―━[JR山崎駅(^^)]━―━―━―━―━―━―━―━―━―

549 名前:山崎渉 mailto:(^^) [03/05/28 12:52]
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

550 名前:デフォルトの名無しさん mailto:sage [03/05/28 21:24]
community.borland.com/museum/ のTP5.5のとこからTurboPascalのOOP入門が落とせる。
AppleのObject Pascalレポートの名前が書いてあるので、
やっぱObjectPascal="object"型のあるPascal、でいいらしい。

だからどうした、と言われると困るが

551 名前:デフォルトの名無しさん mailto:age [03/06/13 17:06]
良スレの予感

552 名前:デフォルトの名無しさん mailto:age [03/06/26 22:36]
その教科書のどこかにある list 型構造体の定義を見直してみてくれ。

553 名前:デフォルトの名無しさん mailto:sage [03/07/03 18:50]
Lazarusの落とし方がわからん...

554 名前:デフォルトの名無しさん [03/07/03 20:20]
初心者から質問です

10人分の学生の成績データを打ち込み、
次に10点区切りでヒストグラムを出力するプログラムを書こうとしています。
現在ヒストグラムの作り方がちとわかりません。どんな形のヒストグラムでもいいのでプログラムソースを教えてもらえないでしょうか?



555 名前:デフォルトの名無しさん mailto:sage [03/07/03 20:34]
if (点数 => 0) and (点数 < 10) then ヒストグラム[1] := ヒストグラム[1] + 1;
if (点数 => 10) and (点数 < 20) then ヒストグラム[2] := ヒストグラム[2] + 1;
...

と並べて書くとか。

556 名前:デフォルトの名無しさん [03/07/03 20:39]
>>554
学校の課題だろうと思うんで、ここでいきなり答えを書くのはちょっとね。
自分でどこまでやったん?

557 名前:デフォルトの名無しさん mailto:sage [03/07/03 20:43]
PROGRAM Histogram;
VAR
 data: ARRAY[1..5] OF INTEGER;
 i, j: INTEGER;
BEGIN
 data[1] := 0; data[2] := 1; data[3] := 4; data[4] := 2; data[5] := 1;
 FOR i := 1 TO 5 DO
  BEGIN
   Write('Fraction ' + IntToStr(i) + ':');
   FOR j := 1 TO data[i] DO
    Write('*');
   WriteLn;
  END;
END.

558 名前:デフォルトの名無しさん [03/07/03 20:43]
まず、「ヒストグラム」とは何か、わかっているか。
プログラムの流れとしては
(1)データの入力
(2)集計
(3)ヒストグラムの出力
に分かれるわけだが。

559 名前:デフォルトの名無しさん mailto:sage [03/07/03 20:48]
スマソ>556

560 名前:デフォルトの名無しさん mailto:sage [03/07/03 22:42]
集合型はフラグくらいにしか使ったことなかったけど
なかなかエレガントな使い方があるものだね
感心しますた

561 名前:デフォルトの名無しさん [03/07/11 15:43]
学校の課題で『ブラックジャック』作ることになったんですが
どなたか、教えていただけませんか。

562 名前:デフォルトの名無しさん mailto:sage [03/07/11 21:34]
>561
取り敢えず「手塚治虫」で検索しとけ。

563 名前:デフォルトの名無しさん [03/07/12 23:44]
>>561
カードゲームなら実際のカードを使って一人遊びすれば必要な構造が見えてくるぞ。

564 名前:デフォルトの名無しさん [03/07/13 00:06]
一人遊び? ハァハァ



565 名前:名無し@沢村 [03/07/13 00:08]
>>562

取りあえずじゃねーんだよ!!
おまいはタンスとかあってなっとらんぞ!!!

jbbs.shitaraba.com/computer/7294/

566 名前:デフォルトの名無しさん mailto:sage [03/07/13 00:11]
A  U  T  H  O  R   D  A  T  A

本田 守さん

--------------------------------------------------------------------------------

名前
本田 守/ほんだ まもる

ハンドル
Mr.あねさん

ホームページ
www2.neweb.ne.jp/wd/wonder/
hp.vector.co.jp/authors/VA015412/

MESSAGE
プログラムの勉強をはじめて1年とちょっとになります。まだまだ高度なものを作るには程遠いですが、先だっては某社のプログラミングコンテストに入賞させていただきました。

--------------------------------------------------------------------------------

S  O  F  T  W  A  R  E

--------------------------------------------------------------------------------

Windows95/98/Me/アミューズメント
●KIKU おど〜る
 音楽CDをかけるとキャラクターが踊ります

567 名前:デフォルトの名無しさん [03/07/13 03:20]
集合型にシフト演算子があったらなぁ

568 名前:デフォルトの名無しさん mailto:sage [03/07/13 05:41]
それは集合なのか?

569 名前:デフォルトの名無しさん [03/07/13 12:46]
ビットの集合です

570 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [03/07/13 14:37]
>>562
あの漫画の題名はトランプのそれとは無関係だそうです.

…じゃなくて,どうしてプログラミングを教えている学校の先生は
生徒の理解度を無視してこういう課題を出すのか理解に苦しみます.
とりあえず>561はじゃんけんゲームは作れますか?


571 名前:561 mailto:sage [03/07/14 00:38]
>570
もちろん作れません
何かヒントでもいいんでおねがいします。

572 名前:デフォルトの名無しさん [03/07/14 08:12]
>>571
ゲームのルールをよく吟味して場にある有形、無形のものを列挙してみんさい

573 名前:デフォルトの名無しさん mailto:sage [03/07/14 09:00]
カードをとってくる関数と
勝敗を判定する関数と
手に持ったカードを表示する関数と
入力を受け付けてカードをとるか終了するか決める関数を書けばいい。

574 名前:デフォルトの名無しさん [03/07/14 11:30]
データ構造決めなきゃ片手落ち



575 名前:デフォルトの名無しさん [03/07/14 13:50]
綺麗なお姉さんのパイパンおま○こ生写真を発見!
plaza16.mbn.or.jp/~satchel/omanko_marumie/

これはタマラン…(´Д`;)ハァハァ


576 名前:561 mailto:sage [03/07/14 14:05]
>>573
関数が使っている教科書にあまり載ってないんで
何かいいサイトあったら教えてください

577 名前:ななしへたぐらま ◆XcB18Bks.Y mailto:sage [03/07/14 14:46]
>>571
簡単なゲームプログラムを解説したサイトか入門書を見つけてみて.

やりたい処理をプログラムというカタチにするというのは一番基本的な能力であり,
一つや二つのヒントで解決する問題ではありません.
でもこれさえクリアすればプログラミングは半分マスターしたようなものです.


578 名前:デフォルトの名無しさん mailto:sage [03/07/14 16:06]
ルール見たけど結構複雑。ま、そこまで要求してないのかもしれんが。
「無限デック使ってます」って言えばカードの残り考えなくてもすむかも。
(ハートのAが10枚出てきても知らんふり。)

579 名前:山崎 渉 mailto:(^^) [03/07/15 09:45]

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄

580 名前:デフォルトの名無しさん mailto:sage [03/07/23 20:52]
良スレ保守

581 名前:デフォルトの名無しさん mailto:age [03/07/24 18:19]
Pascalの集合型と混同してるのかな。このプログラムは集合型は関係ないよ。

582 名前:デフォルトの名無しさん mailto:sage [03/07/25 01:14]
どのプログラム?

583 名前:デフォルトの名無しさん [03/07/27 17:35]
grape.astron.s.u-tokyo.ac.jp/~makino/kougi/jousho/kougi-98Ww/note12.html
ここの練習1なんですが、どのように回答するのがスマートなんでしょうか。
学生番号用のソート手続きをもうひとつ加えて場合分けするのはあまりよくないような気がするんですが、
他に思い浮かばないんです。

584 名前:デフォルトの名無しさん mailto:sage [03/07/27 21:04]
比較用関数を複数作って関数ポインタで切り替えて使う。



585 名前:デフォルトの名無しさん mailto:sage [03/07/27 21:06]
ソート用の手続きをつくる。
引数は点数でソートするか学生番号でソートするかを示す。

「student_record」と「ソートの引数」を引数にとる関数をつくる。
返り値は点数か、学生番号。
この関数をつかってソートをつくる。

あんまり効率よくなさそうだけど。

586 名前:デフォルトの名無しさん mailto:sage [03/07/27 21:45]
function CompareTensu(var S1, S2: student_record): Boolean;
function CompareBango(var S1, S2: student_record): Boolean;
って比較する関数を適当に作って。
var
 Compare: function(var S1, S2: student_record): Boolean;
begin
 if 点数でやるなら then
  Compare:=CompareTensu
 else
  Compare:=CompareBango;
 あとはCompareで比較してソートで良いと思うよ。
end;

587 名前:デフォルトの名無しさん [03/07/27 22:45]
iアプリ作りたいんですけどどーしてよいか・・
作成講座ページ紹介してください。
あと質問なんですが、これだけでも作れますか?ブロック崩し(505対応版)
win98(HSPダウンロード済み)

588 名前:デフォルトの名無しさん mailto:sage [03/07/27 22:51]
iアプリはi-mode Javaでしょ。
HSPじゃ無理。

DoCoMo Net - 製品・サービス - i-mode - iアプリコンテンツの作成について
www.nttdocomo.co.jp/p_s/imode/java/index.html


589 名前:583 mailto:sage [03/07/27 23:14]
なるほど。ありがとうございます。
>>585>>586の手法は同じではないですよね。
かなり参考になりました。

ですが、585さんの
>ソート用の手続きをつくる。
>引数は点数でソートするか学生番号でソートするかを示す。
これを具体的にどうしたらよいのかぜんぜんわからないんです・・・
例題だと、
if student[i].score < student[j].score then begin
で点数で比較してますよね。
これを点数だけではなく番号でも比較できるにするためにはどうしたらいいのでしょうか。





590 名前:デフォルトの名無しさん mailto:sage [03/07/27 23:29]
procedure sort(x: ...);
...
if hoge(student[i], x) < hoge(student[j], x) then begin
って書いて、hogeも書く。

591 名前:デフォルトの名無しさん mailto:sage [03/07/27 23:40]
>>589
比較部分を関数にするだけだって
function CompareTensu(var S1, S2: student_record): Boolean;
begin
CompareTensu:=(S1.score < S2.score);
end;
function CompareBango(var S1, S2: student_record): Boolean;
begin
CompareBango:=(S1.id < S2.id);
end;

>>586のようにCompareTensuとCompareBangoのどっちか使いたい方をCompare変数に入れる。
どっちの比較方法を使うかはコマンドラインオプションで切り替えたりすると良い。
例えば
Compare:=CompareTensu;
for I:=1 to ParamCount do
begin
if ParamStr(I)='/b' then
begin
Compare:=CompareBango;
Break;
end;
end;
でコマンドラインに/bを付ければCompareが番号で比較、付けなければ点数で比較になる。
あとは
if Compare(student[i], student[j]) thenに変えて終わり。

Delphiで動作確認済み

592 名前:デフォルトの名無しさん mailto:sage [03/07/27 23:55]
if (x = Tensu and student[i].score < student[j].score) or
(x = Bango and student[i].id < student[j].id) then begin
ってベタに書いてもいいし。

条件式を関数にまとめて
if x = Tensu then Result := student[i].score < student[j].score
else if x = Bango then Result := student[i].id < student[j].id
else Result := false;
とか。(case文忘れてしまったよ)

593 名前:デフォルトの名無しさん mailto:sage [03/07/28 00:35]
なるほどなるほど。
かなりよくわかりました!

ここは本当にすごい人が来るんですね。
驚きました。

594 名前:デフォルトの名無しさん mailto:sage [03/07/28 00:47]
すごくはないよ。基本的なことだし。

動的な関数を作りたいなと思って
Pascalの上で実現してしまったとかならすごいと思うけど。



595 名前:デフォルトの名無しさん mailto:sage [03/07/30 12:17]
Lazarusの落とし方知ってるひといますか?

596 名前:デフォルトの名無しさん mailto:sage [03/07/30 14:39]
「ハノイの塔」とやらの問題解決プログラムを教えて下さい。
本気で何がなにやら・・・。






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

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

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