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
744 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:50:54 ] それpascalの問題なのか?
745 名前:k [2008/05/24(土) 15:39:18 ] あの問題はもう諦めます。ありがとうございました。 次はこの問題で・・。 n 正整数Sを端末から読み込み、初めて1/i≧SとなるNを求めるプログラム なんですが・・・ i=1 狽フプログラムってなにをするんですか?
746 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 16:51:26 ] 取り憑かれちゃってるな。 実装はスレの性質上仕方ないがアルゴリズムも数学知識も人任せか。 そしてひとの説明を理解しようとする気さえないときてる。
747 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 17:04:51 ] Σの部分は function kansu(n:Integer):double; var i:Integer; begin Result:=0; for i:=1 to n do Result:=Result+1/i; end; になる。 これをループで呼び出して s と比較して大きくなれば終了とやればいい
748 名前:k [2008/05/24(土) 21:44:54 ] すみません・・・あとは自分で頑張ってやります。 function、double、Resultとかまだ習ってないのでわからないんです。 たぶん使わないでできると思うんですが・・・ とりあえず教科書読みながらやってみます。ありがとうございました。
749 名前:デフォルトの名無しさん [2008/05/25(日) 19:39:47 ] 標準入力から1行分だけ入力した文字が母音であるかを判定し、その下に(-)を付けるプログラミングを書きなさい。 ただし行の最後にはピリオドが入力されるとする。 <実行例> I am a pen. - - - - おそらくordを使うと思うんですが、まったく分かりません。 お願いします。
750 名前:デフォルトの名無しさん mailto:sage [2008/05/25(日) 20:07:11 ] var s: string; i: Integer; begin ReadLn(s); for i := 1 to Length(s) - 1 do if s[i] in ['a', 'i', 'u', 'e', 'o'] then Write('-') else Write(' '); end.
751 名前:デフォルトの名無しさん [2008/05/30(金) 02:25:58 ] 正方行列に対して、P,L,Uを与えるoctaveのプログラムを作成せよ。 お願いします。
752 名前:デフォルトの名無しさん mailto:sage [2008/05/30(金) 10:55:40 ] PLUってなんだ? 定義が出てないぞ。
753 名前:751 [2008/05/30(金) 13:27:00 ] 申し訳ありません。 Pが置換行列、Lが下三角行列、Uが上三角行列です。 お願いします。
754 名前:デフォルトの名無しさん mailto:sage [2008/06/09(月) 01:23:14 ] [l, p, u] = lu(A) 以上。
755 名前:デフォルトの名無しさん [2008/06/12(木) 15:28:24 ] a[1..n]を昇順で整列するプログラムを直接挿入整列、直接選択整列の二通りで作成せよ お願いします。
756 名前:デフォルトの名無しさん [2008/06/25(水) 11:40:29 ] 横入りすいません 学校の課題で、パスカルで課題が出たんですがさっぱりわかりません;; 教えてもらってもいいですか?
757 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 15:43:02 ] いいですよ。
758 名前:756 [2008/06/25(水) 16:53:39 ] バカなんで1から教えてください;; 今日の夜12時ぐらいに問題文うpします
759 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 21:35:35 ] 何様なのだ!
760 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 13:04:36 ] バカは努力すべきだ
761 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 22:45:18 ] 学校でパスカルやってるけどパスカルの限界を感じ始めた・・・ めんどくてもいいからまともなゲームの一つでも作れないのこの言語・・・
762 名前:デフォルトの名無しさん mailto:sage [2008/07/02(水) 23:25:06 ] うちの大学の課題が大量にあってワロタw
763 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 17:22:17 ] >>761 素のpascalは厳しいかもしれないけど DelphiやLazarusなら出来るでしょ。
764 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 19:21:54 ] Port[ ]、PortW[ ]、MemW[ ]の解説お願い。 ググってみても分らん。
765 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 19:56:51 ] Port/PortW は I/O 命令 でしょ? それは 16bitの頃の奴じゃないのか? 今そんなの使ってるの? 環境は何?
766 名前:デフォルトの名無しさん [2008/07/07(月) 12:26:26 ] カエサル暗号とは、各文字をアルファベット順で3つ後の文字に置き換える暗号方式である。 カエサル暗号を拡張し、標準入力から入力された数字だけ平文の文字をずらす暗号化を実現せよ。 平文(暗号化前の文章)が書かれたファイルを入力とし暗号化されたものを出力ファイルに書き出すプログラムを作成せよ。 (例) 6が入力された場合 I am a pen. →O gs g vkt. 長桁計算を行う手続きPowerReal(A,x,n)を完成させよ。 Nは整数であるが、xは実数であるものとする。また、Aはxのn乗の長桁表記であるとする。 整数部、小数部ともに100桁を超えないx, nが与えられると仮定してよい。 上の2つの問題をお願いします。
767 名前:デフォルトの名無しさん [2008/07/08(火) 23:45:20 ] ファイル変数fにどうやって自分の入れたいテキストファイルをいれたらいいのか分かりません。 大学のだとreset(f,'ファイル名');という方言(?)でよみこめるのですが、 自宅のだとこうしているとコンパイルが通りません 詳しい方教えてください ちなみにコンパイラはfreepascalをつかっています。
768 名前:デフォルトの名無しさん mailto:sage [2008/07/09(水) 00:13:39 ] >>767 解決しますた スルーでお願いいたします
769 名前:rat pt 01 [2008/07/13(日) 16:18:39 ] ハッシュ法でのデータ管理をするプログラムを作りたいんですが長いことPASCALに触ってなかったせいか全く分かりません。 どなたか教えていただけないでしょうか??問題の概要は以下のようなものです。 表に登録するデータについては、キーは英数字からなる長さ8までの文字列でデータ本体は整数(型名はintegerでよい)です。 ハッシュ表のサイズは11とします。 ハッシュ関数は文字列xの各文字のASCIIコードの総和を11で割った余りとします。 さらにメニュー表示として入力した文字により行う操作を決定します。 どの文字がどのような操作を行うのかは以下のとおりです。 's' の場合: ハッシュ表に登録されている全レコードを,ハッシュ関数値毎に(キーの値とデータの両方を)すべて表示します. 'r' の場合: さらに「キーの値」と「データ」を入力し,すでに同じキーをもつデータがあれば「二重登録」として検出し,そうでなければ,そのレコードをハッシュ表に登録します. 'e' の場合: さらに「キーの値」を入力し,そのキーをもつデータがハッシュ表に登録されているならば, そのデータを表示します.さらに削除するかどうかを入力させて,削除する選択をした場合にはそのレ コードを削除します.そのキーをもつデータがハッシュ表にない場合には「そのキーをもつレコードが ないこと」を出力しますが,ハッシュ表には操作を加えません. 'i' の場合: ハッシュ表に登録されている全レコードを,キーの値が小さい順に表示します.ここで「キー の値の順」とは,文字列の辞書順のことを意味します.Pascal では,文字列a,b に対して,a がb より 辞書的順序が先(小さい) ときには「a<b」で表現できます. 'd' の場合: 「'i' の場合」の逆で,キーの値が大きい順に表示します. 'q' の場合: プログラムを終了します.具体的には,実行文部の最後の「end.」の直前までジャンプ*2し ます. 長くなってすいません。ちょっとしたヒントでもいいので教えていただければ幸いです。
770 名前:デフォルトの名無しさん [2008/07/22(火) 16:32:51 ] 100!は?
771 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 16:05:04 ] 質問です。 nの値を入力してもらって n*nの二次元配列を作りたいのですがどうしたらいいでしょうか?
772 名前:デフォルトの名無しさん [2008/07/23(水) 23:58:15 ] >>766 の下の問題をお願いできませんか?
773 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 05:45:40 ] qはブーリアン型、x、yは整数で q := x = y てどういう意味ですか?
774 名前:デフォルトの名無しさん mailto:sage [2008/07/24(木) 13:01:07 ] x=yがtrueならばqにtrueを x=yがfalseならばqにfalseを代入
775 名前:デフォルトの名無しさん mailto:sage [2008/07/31(木) 06:21:34 ] >>766 阪大生乙
776 名前:デフォルトの名無しさん [2008/09/22(月) 11:17:39 ] case文と 部分列挙を使って星座を判断するプログラムを作るにはどーすれば??
777 名前:デフォルトの名無しさん mailto:sage [2008/10/13(月) 21:12:49 ] 何から星座を判断するんだ?
778 名前:デフォルトの名無しさん [2008/10/25(土) 15:47:12 ] Pascalで、要素の列挙によって配列を宣言することは 可能でしょうか?たとえば var ZeroToFour : array of integer =(0, 1, 2, 3, 4); のように。また可能な場合には添字の範囲はどうなるので しょうか?(上の例だと ZeroToFour[0]=0, ...ZeroToFour[4]=4 (0オリジン) となるのでしょうか。それとも ZeroToFour[1]=0, ...ZeroToFour[5]=4 (1オリジン) となるのでしょうか。) どうぞよろしくお願いします。
779 名前:デフォルトの名無しさん mailto:sage [2008/10/26(日) 18:40:55 ] >>778 処理系は何だろ?標準PASCALだとその宣言は出来ないはず。 type A = array[T1] of T2; が宣言方法だから、オリジンはT1の宣言による。っていうか、どうしたいか 自分で宣言する。
780 名前:デフォルトの名無しさん [2008/10/27(月) 19:25:43 ] パスカルの問題でわからないものがあるので教えていただけないでしょうか。 関数f(x0)=0、a 以上 x0 未満の値 x について f(x)<0 x0 より大きく b 以下の値 x について f(x)>0 の時、 f(a) と f(b) を通る直線と x 軸との交点を求め、その値を c としたとき f(c)<0 であれば c を新たな a とし、f(c)>0 であれば c を新たな b とする この操作を回数繰り返しいずれかの値を x0 とする。 関数 f としてはy=x2-x02 を用いて解け とあります。 かなり難易度の高い問題ですが、どうかこのプログラミングを教えていただけないでしょうか。
781 名前:デフォルトの名無しさん [2008/10/27(月) 19:55:18 ] この操作を回数繰り返し ↓ この操作を数回繰り返し 関数f=x^2−x。^2 です。 すみません。
782 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 23:07:36 ] >>780 問題が理解できないんだが… f(x) ってのは直線って書いてあるから一次関数ですよね? function f(x:integer):integer って事かな? x0 ってのがx:=0と解釈すると x=0の時、y=0の一次関数の事かな? で a<x<0 について f(x)のxに0からbの値を入れると f(x)は0より小さい値を返す f(a),f(b)とx軸との交点を求めと言われても f(x)がy=axの直線ならy=0となってしまい問題があまりにも簡単すぎます。 なにか文章を間違えている気がします。 普通の人が読んで理解できる文章にするか、 問題文のまる写しを乗せない事には解けません。 x^2はXの二乗って分かるけど、x。^2は見たことないです。
783 名前:デフォルトの名無しさん mailto:sage [2008/10/27(月) 23:14:15 ] あー大分理解できました。 前言撤回です。 x。^2だけ意味不明です。
784 名前:デフォルトの名無しさん [2008/10/28(火) 02:13:25 ] ご迷惑をおかけしてすみません。 表示がうまくいかなくて…。 x。:「エックスゼロ」です。 関数f(x0)=0、a 以上 x。 未満の値 x について f(x)<0 x。 より大きく b 以下の値 x について f(x)>0 の時、 f(a) と f(b) を通る直線と x 軸との交点を求め、その値を c としたとき f(c)<0 であれば c を新たな a とし、f(c)>0 であれば c を新たな b とする この操作を数回繰り返しいずれかの値を x。 とする。 関数 f としてはy=x^2-x。^2 を用いて解け 問題についてはこの通りに出題されており、 どうやら平方根を回りくどく求めろと言っているようです。 xの範囲を表すと a<x<x。<x<b となるのですが、これではxが2回出ており、 どのようにプログラムを書けばよいのか困っています。
785 名前:778 mailto:sage [2008/10/28(火) 11:41:24 ] >>779 うっかり遅くなりましたが御教示ありがとうございます。
786 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 14:59:04 ] //2点を通る直線とX軸の交点Yを求める function xCross(ax,ay,bx,by:Double):Double; var a,b:Double; begin a := (ay*bx - by*ax)/(bx-ax); b := ay - a*ax; Result:=-b/a; end; //問題中のf(x)式、初期値をx0とする。 function f(x,x0:Double):Double; begin Result:= x*x - x0*x0; end; //今回の問題を解くメインループ function test(x,a,b:Double):Double; var x0,c,fa,fb:Double; begin x0:=0; while ((a<x) and (x<x0) and (f(x,x0)<0)) or ((x0<x) and (x<b) and (f(x,x0)>0)) do begin c := xCross(a,f(a,x0),b,f(b,x0)); if f(c,x0)<0 then a:=c else if f(c,x0)>0 then b:=c; x0:=c; end; Result:=x0; end;
787 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 15:01:06 ] >>784 ,786 翻訳すると f(x0)=0 (a<x<x0)でかつf(x)<0 (x0<x<b)でかつf(x)>0 のどちらかの場合 f(a)とf(b)を通る直線とx軸との交点を求めcとおき f(c)<0 なら a:=c f(c)>0 なら b:=c という計算を繰り返す と解釈しましたこれはどう見ても平方根を求めていません。 ソースにするとこんな感じ、 何の計算式かはわかりません。 これ計算の目的を問題の最初に示すべきだと思います、目的が分かりません。
788 名前:デフォルトの名無しさん [2008/10/28(火) 15:58:43 ] ご教授ありがとうございます。 コンパイルしてみたのですが In function `xCross': についてのエラーが出てきて手直ししても動かないのですがどうすれば良いので しょうか。 あと、問題のタイトルには 以下の考え方に基づいて与えられた正の数の平方根の値を求めるプログラムを作 成せよ。
789 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 16:08:35 ] へぇ、これで平方根が求まるんですか ならば、平方根が求まるように手直ししておきます。 あとコンパイル環境を教えてください、私はDelphi7で動作を確認しました。
790 名前:デフォルトの名無しさん [2008/10/28(火) 16:31:00 ] ありがとうございます。 コンパイルはターミナルで行っています。
791 名前:デフォルトの名無しさん mailto:sage [2008/10/28(火) 17:54:59 ] >>784 これ、ニュートン法と呼ばれる平方根を求めるアルゴリズムですね 問題が非常に不鮮明で最初の一文が無いと到底理解できない設問です。 ハッキリ言って悪題ですね。 きわめてシンプルにするとこんな感じになります。 function fSqrt(x:Double):Double; var s,last:Double; begin Result:=0; if x<=0 then exit; if x>1 then s:=x else s:=1; repeat last := s; s := (x/s+s) * 0.5; until s<last; Result:=last; end; 原理は簡単なので「平方根、ニュートン法」で調べてください。 ターミナルはwindowsのネットワーク越しにコンパイルを行う通信クライアントだと思われます。 もしかしたら、コンパイラはPascalじゃなくCかもしれません。 使用言語やコンパイル自体が分からない場合は友達と相談してください。 でわでわ。
792 名前:デフォルトの名無しさん [2008/10/28(火) 18:40:46 ] 分かりやすい解説ありがとうございました。 非常に参考になりました。
793 名前:デフォルトの名無しさん mailto:sage [2008/10/29(水) 22:29:54 ] >>792 同じ学校の生徒かな? それならコンパイル環境はたぶんgpcって言えばおk にしてもf(x) = x^2 - (平方根を求める数)^2で f(c) = 0のときcを解をするって平方根を求める問題なのにおかしいよなjk
794 名前:793 mailto:sage [2008/10/30(木) 23:46:38 ] >>793 の下2行僕の勘違いでした、ごめんなさい
795 名前:デフォルトの名無しさん mailto:sage [2008/11/03(月) 01:50:51 ] 質問です テキストファイルに書かれた数字を 「文字」として読み込むのではなく「数」として読み込むときも file(f, c)として文字として読み込んだ後に ord('c')-ord('0')のようにして数に変換するんですか?
796 名前:ORZ [2008/11/06(木) 15:22:35 ] 大学でpascalの課題が出たのですが、配列に関してさっぱりわかりません。 こんな私ですが、教えてください。 問題「N x N 行列を2つ読み込み、その積を計算し、標準出力に出力するプログラムを作りなさい」 ただし、入出力の部分は関数か手続きを使用せよ、とのことです。 (Nは定数で10とする) よろしくお願いします。
797 名前:ORZ [2008/11/06(木) 15:26:52 ] ↑の続きですが、delphiを使っています。 何度もすみません・・・
798 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 23:25:37 ] 数学での行列の積は理解しているのか?
799 名前:ORZ [2008/11/08(土) 16:56:46 ] はい。計算の仕方はわかります。 それをどうやってプログラムするのかが浮かばなくて・・・
800 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 19:05:30 ] const n=10 type index=1..n; var a,b,c :array[index,index] of real; i,j,k : index; s :real for i:=1 to n do for j:=1 to n do begin s:=0; for k:=1 to n do s:=s+a[i,k]*b[k,j] c[i,j]:=s end
801 名前:デフォルトの名無しさん [2008/11/10(月) 16:45:07 ] 関数の問題なんですがまったくわかりません。 キーボードで入力された2つの整数の最大公約数を求める関数(function)を作り、 その関数を用いて分数の約分を行うプログラムを作成せよ。 (例) 分子を5、分母を10と入力した場合、結果として1/2を表示する。 とのことです。 よろしくお願いします。
802 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:15:43 ] ユークリッドの互除法と再起呼び出し
803 名前:デフォルトの名無しさん mailto:sage [2008/11/10(月) 17:22:57 ] >>87-
804 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 09:03:42 ] emacsでプログラム書いてるのですが、 error: invalid operands to `+' error: incompatible type for argument 2 of `ace' error: routine declaration error: result of function `check' not assigned ↑のエラーの消し方がわからないのです 教えていただけないでしょうか
805 名前:デフォルトの名無しさん [2008/11/13(木) 14:10:59 ] 閏年計算のプログラムですが、変数iが初期化されないというエラーが出ました Delphi6を使っています var i:integer; begin if ((i mod 4=0) and (i mod 100<>0)) or (i mod 400=0) then writeln('leap year') else writeln('NOT leap year') end. どこが間違っているでしょうか?
806 名前:デフォルトの名無しさん mailto:sage [2008/11/13(木) 15:07:37 ] 初期化すれば?
807 名前:デフォルトの名無しさん [2008/11/27(木) 13:51:47 ] どうやってプログラムしたらよいのか分かりません。 教えていただけないでしょうか。 配列の全要素のうち最小のものを配列の先頭の要素と入れ替える。 次に、配列 の 2 番目以降の要素のうち最小のものを配列の 2 番目の要素と入れ替える。 このような処理を配列の要素数から 1 引いた回数繰り返すと、すべての要素が 整列した状態となる。 このアルゴリズムに従って配列を整列させる(ソートする)プログラムを作成せ よ。 ただし、「配列の n 番目以降の要素のうち最小のものを配列の n 番目の 要素と入れ替える」という処理をサブルーチンとして作成すること。
808 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 09:05:02 ] 選択ソートで検索すればcで書かれたプログラムが沢山見つかるから それ参考にすればいいんじゃないかな 特に難しい事はないはず
809 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 09:09:59 ] ていうか>>488 で入れ替える所だけ関数にすればいいだけだね
810 名前:デフォルトの名無しさん mailto:sage [2008/11/30(日) 13:19:38 ] プログラミング以前に問題文を理解してないのでは? まずは手計算でやれるか試してみ
811 名前:デフォルトの名無しさん [2008/11/30(日) 16:19:39 ] アドバイスありがとうございました。 クイックソートのプログラム自体、なかなか理解しづらくて困っています。 「以下に示す2つのプログラムを完成させよ」という宿題で行き詰っています。 どうかプログラム例を示していただけませんでしょうか。 「T」 procedure quicksort( var ar: intarray; var i, j: integer ); var {b1 はサブリスト sub1 の始めの要素番号、e1 は終わりの要素番号} {b2 はサブリスト sub2 の始めの要素番号、e2 は終わりの要素番号} b1, e1, b2, e2: integer; begin if i < j then begin b1 := i; e2 := j; divide( ar, b1, e1, b2, e2 ); quicksort( ar, b1, e1 ); quicksort( ar, b2, e2 ); end; end;
812 名前:デフォルトの名無しさん [2008/11/30(日) 16:20:16 ] 「U」 procedure divide( var A: intarray; var b1, e1, b2, e2: integer ); var x, y, temp: integer; begin x := b1; y := e2; while x < y do begin if A[x] > A[x+1] then begin temp := A[x]; A[x] := A[x+1]; A[x+1] := temp; x := x + 1; end else begin temp := A[y]; A[y] := A[x+1]; A[x+1] := temp; y := y - 1; end; end; e1 := x - 1; b2 := y + 1; end;
813 名前:デフォルトの名無しさん mailto:sage [2008/12/01(月) 05:14:06 ] >>811-812 をそのまま使って program aaa(input, output); const n=10 ; type intarray= array[1..n] of integer ; var A : intarray; begin Aにデータ入力 quicksort(A,1,n); データ出力 end. でいいんじゃないかな
814 名前:デフォルトの名無しさん [2008/12/08(月) 03:22:22 ] A・B・Cの部屋があり、AとB、BとCは通路で繋がっている。 最初、ねずみはAの部屋にいるものとする。 その後、1秒ごとにねずみは隣の部屋に移るか同じ部屋にいる。 以下のような確率で動く時、ねずみが10秒後に、Aにいる確率を求めよ。 ・Aにいるとき、Bに移る確率は二分の一 ・Bにいるとき、A及びCに移る確率は共に三分の一 ・Cにいるとき、Bに移る確率は三分の二 二分法のところの問題です。答えがなくてこまっています。 教えていただけないでしょうか。
815 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:08:32 ] 10病後にAに居ない確率もとめれば
816 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:16:42 ] 求めてる方法と違うだろうけど 3*3行列 1/2 , 1/3 , 0 1/2 , 1/3 , 2/3 0 , 1/3 , 1/3 のn乗を計算して、初期位置がAなら 1 0 0 を掛ければ n秒後にABCにいる確率がそれぞれ a b c って出るよね?
817 名前:デフォルトの名無しさん mailto:sage [2008/12/08(月) 19:58:48 ] 二分法と言うのはこれのはずだが、合ってるだろうか? ja.wikipedia.org/wiki/%E4%BA%8C%E5%88%86%E6%B3%95 この方法と確率の計算は、関係ないのでは?
818 名前:デフォルトの名無しさん [2008/12/09(火) 05:35:56 ] >>816 よかったら解答のせてもらえませんか? 方針を理解したのですが、 行列のあたり苦手なのでコンパイルできません^^;
819 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 14:10:44 ] program test(input, output); const m=3;n=10; type index=1..m; var a : array[index,index] of real; x ,y : array[index] of real; i,k,h : index ; s :real ; begin {数値代入} a[1,1] := 1/2 ; a[1,2] := 1/3 ; a[1,3] := 0 ; x[1] := 1 ; a[2,1] := 1/2 ; a[2,2] := 1/3 ; a[2,3] := 2/3 ; x[2] := 0 ; a[3,1] := 0 ; a[3,2] := 1/3 ; a[3,3] := 1/3 ; x[3] := 0 ; { y =Ax の計算を10回} for h:= 1to n do begin { y =Ax の計算1回分} for i := 1 to m do begin s := 0; for k:=1 to m do begin s := s + a[i,k] * x[k] ; end; y[i] := s ; end; x:=y ; end; {n秒後にA,B,Cにいる確率、順に} for i := 1 to m do writeln(x[i]); end.
820 名前:デフォルトの名無しさん [2008/12/09(火) 17:24:10 ] Delphiの宿題があるのですが、ダイヤモンドパターンのプログラムを教えてください(泣)
821 名前:デフォルトの名無しさん mailto:sage [2008/12/09(火) 18:37:49 ] >>63-
822 名前:デフォルトの名無しさん [2008/12/12(金) 00:29:38 ] 課題で1〜nの総和計算の発展形の1〜n^2の総和計算を求める、というものがありました。 1〜nの挿話計算が var i,sum,n:integer; begin write('n='); readln(n); sum := 0; for i:=1 to n do sum := sum +i; writeln('Sum(1〜n)=',sum) end; となるのはわかったんですが、これをn^2にするときは、 上のプログラムのnをsqr(n)に変えるだけでできますか?
823 名前:デフォルトの名無しさん [2008/12/12(金) 00:58:27 ] 822です。引き続け申し訳ないですが、 6つの4,89,6,2,23,21という数字を小さいものから並び替えるプログラム procedure sort; const N = 6; const d: array[1 .. N] of integer = (4,89,6,2,23,21); var i, j, w: integer; sd: array[1 .. N] of integer; begin for i := 1 to N do sd[i] := d[i]; for i := 1 to N do for j := 1 to N - i do if sd[j] > sd[j+1] then begin w := sd [j]; sd[j] := sd[j+1]; sd[j+1] := w end; writeln('Sorted date :'); for i := 1 to N do write('sd[',i:3,'] '); writeln; for i := 1 to N do write(sd[i]:7,' ');writeln; readln end; を改良して、6つの数字のうち初めのM個だけを並び替えるという プログラムのつくりかたがわかりません。 どなたか教えていただけたら幸いです。
824 名前:デフォルトの名無しさん mailto:sage [2008/12/12(金) 03:43:02 ] >>822 sum := sum +sqr(i); >>823 const M = ; for i := 1 to N do sd[i] := d[i]; for i := 1 to M do for j := 1 to M - i do
825 名前:822 mailto:sage [2008/12/12(金) 03:50:58 ] >>824 ありがとうございます!助かりました!
826 名前:デフォルトの名無しさん [2008/12/13(土) 00:44:55 ] 文字列に対して、任意の位置に新たな文字列お挿入する。入力は、挿入対象の文字列(text1)、挿入文字列(text2)、挿入開始位置(pointer), 及び挿入する文字列の長さ(length)とし、出力は、挿入済みの文字列(text)とする。 挿入例 text1:=`abcdef____`; text2:=`ghi_______`; pointer:=4; length:=3; text=`abcghidef_` この問題を教えてください。
827 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 10:16:41 ] いやです
828 名前:デフォルトの名無しさん [2008/12/13(土) 15:45:28 ] 何故ですか?
829 名前:デフォルトの名無しさん mailto:sage [2008/12/13(土) 21:04:05 ] 日本語も満足に書けないやつがなんでプログラミングなんかやってんの?
830 名前:デフォルトの名無しさん [2008/12/14(日) 00:51:19 ] いや、教科書をそのまま載せたのですが…
831 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 02:02:03 ] 日本語も満足に書けないやつがなんで教科書なんか書いてんの?
832 名前:デフォルトの名無しさん mailto:sage [2008/12/14(日) 02:48:55 ] おめこ
833 名前:デフォルトの名無しさん [2008/12/17(水) 16:48:34 ] 再帰のプログラムが苦手で次の2つのプログラムの書き方が分かりません。 再帰を使用してプログラム例を示していただけないでしょうか。 1 値の配列を受け取り,その並べ替え(順列)をすべて出力する再帰の手法を 使用したプログラムを書きなさい.ただし,値は1からnまでの数値であり、 n<=10とする. n=1,n=2,n=3の場合についてプログラムを実行しなさい。 2 「ハノイの塔」のパズルを解く再帰の手法を使用したプログラムを書きなさ い。(円盤の枚数はnとする)n=2,n=3,n=4の場合についてプログラムを実行 しなさい。
834 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:54:16 ] 2 program prog1(input, output); var n : integer; procedure hanoi(var n:integer ; a,b,c:char); begin if n>0 then begin hanoi(n-1,a,c,b); writeln(n,'番の板を',a,'から',b,'に移動'); hanoi(n-1,c,b,a); end; end; begin write('円板の枚数n='); read(n); hanoi(n, 'a' , 'b' , 'c' ); end.
835 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:55:39 ] × procedure hanoi(var n:integer ; a,b,c:char); ○ procedure hanoi(n:integer ; a,b,c:char);
836 名前:デフォルトの名無しさん [2008/12/18(木) 11:42:26 ] >>834 すみません。 コンパイルをしてみたら「char」の部分がエラーになって動かないのですが・・・ なにぶん古いコンパイラですので・・・、お手数をおかけいたします。
837 名前:デフォルトの名無しさん [2008/12/18(木) 11:43:40 ] 835の通りに直しても動きませんでした。 どうやら定義されてない・・・みたいです。
838 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 11:44:54 ] なにが定義されてないって出たの?
839 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 12:35:23 ] 全角スペースのままとか?
840 名前:デフォルトの名無しさん [2008/12/19(金) 19:25:58 ] >>839 スペース消してみたら上手くいきました。 ありがとうございます。 「1」の方はやはり難しいのでしょうか。 1 値の配列を受け取り,その並べ替え(順列)をすべて出力する再帰の手法を 使用したプログラムを書きなさい.ただし,値は1からnまでの数値であり、 n<=10とする
841 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:18:37 ] >>840 アクセスでお菓子とジュース
842 名前:デフォルトの名無しさん [2008/12/20(土) 01:26:13 ] >>841 被るといけねーから少し中を変えとけよ
843 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 01:43:23 ] >>842 おkk
844 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 02:51:41 ] m,h, : permutation 与えられたリストの要素を並べ替えてできる全てのリストのリストを返す関数。 ほぼHaskell版のコピー。リストをシフトさえるshift関数などがちょっと違っている。 (* Standard ML *) fun permutation [] = [[]] | permutation list = let fun revolve [] = [[]] | revolve l = let fun shift 0 _ = [] | shift n (x::xs) = (x::xs) :: (shift (n-1) (xs@[x])) in shift (length l) l end fun permutation' [] = [[]] | permutation' (x::xs) = map (fn y => x::y) (permutation xs) in foldr (op @) [] (map permutation' (revolve list)) end; (* 実行結果 *) - permutation [1,2,3]; val it = [[1,2,3],[1,3,2],[2,3,1],[2,1,3],[3,1,2],[3,2,1]] : int list list - permutation [1,2,3,4]; val it = [[1,2,3,4],[1,2,4,3],[1,3,4,2],[1,3,2,4],[1,4,2,3],[1,4,3,2],[2,3,4,1], [2,3,1,4],[2,4,1,3],[2,4,3,1],[2,1,3,4],[2,1,4,3],...] : int list list -