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
609 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 22:44:50 ] >>607 >roundは四捨五入 ダウト roundは Banker's rounding >>608 エラーメッセージが示す通り
610 名前:606 mailto:sage [2007/10/09(火) 22:47:16 ] >>607 処理系は?
611 名前:デフォルトの名無しさん [2007/10/09(火) 22:58:11 ] >>668 を短くしたんですが、まだエラーっす program PR0311(input,output); ver D1,D2:integer; begin read(D1,D2); writeln(' odd(',D1,')=',odd(D1));writeln(' odd(',D2,')=',odd(D2)); writeln('even(',D1,')=',even(D1));writeln('even(',D2,')=',even(D2)); end. エラーメッセージ Free Pascal Compiler version 2.2.0 [2007/09/09] for i386 Copyright (c) 1993-2007 by Florian Klaempfl Target OS: Win32 for i386 Compiling PR0311.pas Fatal: Syntax error, "BEGIN" expected but "identifier VER" found Fatal: Compilation aborted Error: C:\FPC\2.2.0\bin\i386-Win32\ppc386.exe returned an error exitcode (normal if you did not specify a source file to be compiled)
612 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:10:27 ] ver . ~
613 名前:611 [2007/10/09(火) 23:21:03 ] orz<d
614 名前:デフォルトの名無しさん [2007/10/09(火) 23:40:05 ] >>609 Banker's rounding とは??
615 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 23:41:59 ] 全板全スレ全質問対応テンプレ Q.○○って何ですか? A.ググレカス
616 名前:光速エスパー世代774RR mailto:sage [2007/10/10(水) 21:09:07 ] Q.ググレカスって何ですか? A.再帰汁
617 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 03:41:28 ] www.radiumsoftware.com/0503.html
618 名前:大学の課題 [2007/10/18(木) 12:20:53 ] 大学の課題ですが、よく分らないのでお願いします。 ディスプレー上から、A, a, Bなどを入力し,ord()にて 順序型に変換したらどのような数字が表れるかを検討せよ. プログラムを作成したのち、そのファイルの最後に検討結 果を記述し、提出せよ。 以上が、課題です。 大変困っています。 よろしくお願いします。
619 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 17:52:27 ] まず大学名と学部、学科を
620 名前:光速エスパー世代774RR mailto:sage [2007/10/18(木) 19:29:18 ] Program ILoveWirth(input, output); var c : char; begin repeat read(c); writeln(ord(c)) until c = ' ' end. (* results and discussion *) (* conclusion *)
621 名前:デフォルトの名無しさん [2007/10/18(木) 20:24:20 ] 本当に、有難うございました。 もう一つ、課題が出されたのですが、光速エスパー世代774RRさんにやってい ただいたのを参考に、もう一度やってみたいと思います。 また、よろしくお願いします。
622 名前:デフォルトの名無しさん [2007/10/24(水) 13:01:33 ] ディスプレー上から、A, a, Bなどを入力し,ord()にて順序型に変換したらどのような数字が表れるかを検討せよ. A君,B君,C君の3人が,programming(プログラミング基礎),algebra(代数),circuit(電気回路),english(英語),electromagnetics(電磁気学)の5科目のうちのいくつかを選択している。 3人が一緒になる授業、A君が一人のみで出席する授業を調べるプログラムを作成せよ。 但し、3人が選択している科目は各自設定してよい。 教えてください。
623 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:47:18 ] 65,97,66
624 名前:デフォルトの名無しさん mailto:sage [2007/10/24(水) 13:53:05 ] programming = 16; algebra = 8; circuit = 4; english = 2; electromagnetics = 1; a = algebra + english + electromagnetics; b = programming + circuit + english; c = algebra + circuit + english; 3人一緒 = a & b & c; a君のみ = a & ~b & ~c;
625 名前:たく [2007/10/24(水) 14:32:25 ] XPでvisualstudioを使ってます。 問題:長さ100のint型配列 int a[100]がある。a[0]〜a[99]には整数が収められているする。 この100個の中で一番小さい数を求め、画面に出力するプログラムを作成せよ。 出力形式は「ans.=???」とせよ。???の部分は答え。 なんですが、全くわからないので教えて下さい。
626 名前:デフォルトの名無しさん [2007/10/24(水) 18:29:39 ] 大学の課題で、 ニュートン法により2の立方根(三乗根2)を少数点以下第5位まで求めるプログラムを作りなさい。 と出たのですが、全く分からずにとても困っています。 よろしくお願いします。
627 名前:光速エスパー世代774RR mailto:sage [2007/10/24(水) 20:50:24 ] >>625 XPて何ですか intって何ですか (C)void >>626 にゅーとん法はやったことがないなあ。いま書類書きで脳があぼんしてるので 気力が出たらやってみる。
628 名前:デフォルトの名無しさん [2007/10/24(水) 20:58:20 ] ニュートン法って最初に与える初期値の妥当性はどうやって検証したらいいのですか?
629 名前:光速エスパー世代774RR mailto:sage [2007/10/24(水) 21:05:42 ] >>624 折角なので集合型を使いましょうやw Program Viva2chan(output); type courses = (programming, algebra, circuit, english, electromagnetics); coursset = set of courses; var studentA, studentB, studentC : coursset; procedure DispSet(s : coursset); begin if programming in s then write('Programming'); if algebra in s then write('Algebra'); if circuit in s then write('Circuit'); if english in s then write('English'); if electromagnetics in s then write('Electromagnetics'); writeln end; begin studentA := [programming, algebra, electromagnetics]; studentB := [programming, english, electromagnetics]; studentC := [english, circuit, electromagnetics]; DispSet(studentA * studentB * studentC); DispSet(studentA - (studentB + studentC)) end.
630 名前:625 [2007/10/24(水) 21:56:06 ] >>627 windowsXPです。 intは整数って事ですかね。 明日締め切りなんです。お願いします!
631 名前:デフォルトの名無しさん [2007/10/24(水) 23:33:00 ] 失礼します〜 program PR0501(input,output); var C:char;N:integer; begin readln(N); c:=chr(N); writeln(N-1,' ',chr(N-1),' ',N,' ',chr(N),' ',N+1,chr(N+1)); writeln(N-1,' ',pred(N),' ',N,' ',chr(N),' ',N+1,' ',cuss(N)); end. これ、なにがちがうんでしょう?そもそも何をやっているのかわかってないのですが…
632 名前:デフォルトの名無しさん [2007/10/24(水) 23:34:30 ] cussじゃなくてsuccだったwww
633 名前:光速エスパー世代774RR mailto:sage [2007/10/25(木) 12:59:16 ] >>630 ヘ_ヘ ミ・・ ミ ( )〜 Pascalは滅んだことにしたいのですね(C)void (まあ事実だけどさwww) >>631 勝手に解説すると(俺は電線マンか) ・Pascalには順序型というものがある ・文字型も整数型も順序型である(論理型も>>629 の courses も順序型だよん) ・succは順序型の「次の要素」、predは「前の要素」を返す関数である ということを理解しろというわけ。これって結構大事でさ、順序型はfor文の 制御変数に使えるとか、case文に使えるとかあるから。 他にも、例えば文字型と文字列型の区別がない言語が結構あるんだけど、 ある文字列の「次の文字列」なんて簡単には定義できないから、 そういう言語ではfor c := 'a' to 'z' do なんてのは考えることが難しい。
634 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 03:36:29 ] var atai : word; から上1バイト下1バイトを取得する場合は ue := atai shr 8; shita := word(atai shl 8) shr 8; これでよいのでしょうか?
635 名前:デフォルトの名無しさん [2007/10/30(火) 17:36:40 ] ・正の整数nを読み込み 1+(1/1!)+(1/2!)+.....+(1/n!) の値を計算して出力するプログラムを作りなさい。 だれか教えてください。計算式が作れません。
636 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:40:26 ] function factorial(i : integer) : real; を別に作ると楽。
637 名前:デフォルトの名無しさん [2007/10/30(火) 17:50:20 ] 今こんな感じです。どう直せばいいですか? function factrial(i:integer): real; begin if n=1 then begin factrial := 1; end else begin factrial := i*factrial(i-1); end; begin write('Enter n : '); readln(n); For i:=1 to n do begin ANS:=1+(1/factrial); end; end;
638 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:52:48 ] ANS:=1; For i:=1 to n do ANS:=ANS+(1/factorial(i));
639 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 17:53:24 ] あ、申し訳ない ANS:=1; は要らないや
640 名前:デフォルトの名無しさん [2007/10/30(火) 18:01:31 ] エラーが消えません。どうしたらいいですか? たびたびすいません i : real; n : integer; ANS : real; function factrial(i:integer): real; begin if n=1 then begin factrial := 1; end else begin factrial := i*factrial(i-1); end; begin write('Enter n : '); readln(n); For i:=1 to n do begin ANS:=ANS+(1/factorical(i)); end; end; begin writeln('N = ', ' ANS = ', ANS:8:6); end.
641 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 18:05:20 ] 1を1. ←小数点付き にしたらどう?
642 名前:デフォルトの名無しさん [2007/10/30(火) 18:07:58 ] だめでした・・・どこが間違ってるのかわかりません
643 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 18:13:28 ] 俺もわからなくなったからdelphi立ち上げて作り直したよ var i, n : integer; ANS : real; function factorial(i:integer) : real; begin if i = 1 then factorial := 1 else factorial := i * factorial(i - 1) end; begin write('Enter n : '); readln(n); For i := 1 to n do ANS := ANS + (1. / factorial(i)); writeln('N = ', n, ' ANS = ', ANS:8:6); readln; end.
644 名前:デフォルトの名無しさん [2007/10/30(火) 18:15:48 ] いけました!ありがとうがざいました。
645 名前:デフォルトの名無しさん [2007/10/30(火) 19:09:17 ] >>634 ですが、 良いのか悪いのか、他に方法があるのか 教えてください
646 名前:光速エスパー世代774RR mailto:sage [2007/10/30(火) 19:21:08 ] >>634 >var atai : word; から上1バイト下1バイトを取得する場合は >ue := atai shr 8; >shita := word(atai shl 8) shr 8; >これでよいのでしょうか? 単に shita := atai and $FF でいい。 Turbo Pascal以来のおまけ関数にhi、loってのがあるから、 Unit Reference Manual を詠むといいよ。hi、loってMT+にもあった気がする。
647 名前:光速エスパー世代774RR mailto:sage [2007/10/30(火) 19:26:46 ] >>640 >i : real; >n : integer; >ANS : real; > >function factrial(i:integer): real; >begin >if n=1 then begin >factrial := 1; begin endを使いすぎてるw まあそーゆー趣味的な所はおいといて、 なぜエラーになる(多分暴走するか、スタックあっぷあっぷで停まる)か判った?
648 名前:634 [2007/10/30(火) 19:29:53 ] >>646 ありがとうございました。感激です!
649 名前:デフォルトの名無しさん [2007/11/02(金) 13:14:37 ] 日本円を他の国の通貨に変換するプログラを記述せよ。ただし、用いるレートは次の通りである USD 118.94 GBP 186.53 CNY 13.93 EUR 129.60 RUB 3.73 なお、補助単位もつけよ。 誰か↑をやってください、お願いします。
650 名前:デフォルトの名無しさん [2007/11/02(金) 13:20:49 ] 実行例が ******************** d--USDOLLAR P--British Pound y--Chinese Yuan(gen) e--Euro r--Russian Rouble ***************** Exchange to :d Enter the amout of money in JPY : 1000 USD = $ 8.40
651 名前:デフォルトの名無しさん [2007/11/02(金) 15:07:14 ] 解りにくい説明ですいません。
652 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 17:33:04 ] ルーブリは元の綴りがрубльだから、roubleってのはちょっち違和感があるzo 補助単位って、円に対する銭、ドルに対するセントみたいな奴だっけ。 8.40ドルみたいな十進の小数で書いていいなら簡単だと思うけど、 昔は(今でも?)60進法とかそういうのってあったよな、 そういうのに対応するならめんどいな。 あるいは日本だったら銭・厘・毛の形で出せとか。 type currencies = (YEN, USD, GBP, CNY, EUR, RUB); var exchangerates : array(currencies) of real; begin exchangerates[YEN] := 1; exchangerates[USD] := 118.94; ... なんてやっといて、日本円 / exchangerates[変換先通過] を計算させればいい。 Turbo Pascal方言を使っていいなら、わざわざ代入分書かないで、いきなり初期値ぶちこみでいいよ。
653 名前:デフォルトの名無しさん [2007/11/02(金) 17:47:39 ] const USD = 118.94; GBP = 186.53; CNY = 13.93; EUR = 129.60; RUB = 3.73; var JPY : integer; currency : char; money1 : real; money2 : real; money3 : real; money4 : real; money5 : real; begin write('***************'); write('d -- US Dollar'); write('p -- British Pound'); write('y -- Chinese Yuan (Gen)'); write('e -- Euro'); write('r -- Russian Rouble'); write('Exchange to : '); readln(currency); write('Enter the amout of money in JPY : '); readln(JPY); begin Case currency of d : money1:=JPY/USD; write('USD = $ ',money1:8:5); p : money2:=JPY/GBP; write('GBP = p ',money2:8:5); . . . end; { case } 今こんな風にやってるんですけど・・・どうすればいいでしょうか?
654 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:00:44 ] >>653 俺もそんな感じになったよ。 Cならポインタが使えるのでもう少し簡潔になるんだが
655 名前:デフォルトの名無しさん [2007/11/02(金) 18:05:40 ] >>654 エラーがまだ12〜3個残っててもうお手上げ状態です。
656 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 18:11:33 ] だから配列を使えってば。 今のレベルでは配列 = 表だと考えるといい。 そのうち、Cみたいな配列 = ポインタという捉え方もできるようになる。
657 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:18:22 ] const USD = 118.94; GBP = 186.53; CNY = 13.93; EUR = 129.60; RUB = 3.73; var c : char; j, k : real; begin repeat writeln('********************'); writeln('d--USDOLLAR'); writeln('P--British Pound'); writeln('y--Chinese Yuan(gen)'); writeln('e--Euro'); writeln('r--Russian Rouble'); writeln('*****************'); write('Exchange to : '); readln(c); until (c = 'd') or (c = 'P') or (c = 'y') or (c = 'e') or (c = 'r'); write('Enter the amout of money in JPY : '); readln(j); case c of 'd' : begin k := j / USD; writeln('USD = $', k : 8 : 2) end; 'P' : begin k := j / GBP; writeln('GBP = ', k : 8 : 2, ' pound') end;
658 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:18:37 ] 'y' : begin k := j / CNY; writeln('CNY = ', k : 8 : 2, ' Yuan(gen)') end; 'e' : begin k := j / EUR; writeln('EUR = ', k : 8 : 2, ' Euro') end; 'r' : begin k := j / RUB; writeln('RUB = ', k : 8 : 2, ' Rouble') end; end; readln end.
659 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 18:25:41 ] たとえばこういうやり方がある。次は換算表(=配列)をファイルから読むとか、 ネットから得るとか、そういう風に発展させる。 Program Viva2chan2; type currencies = (YEN, USD, GBP, CNY, EUR, RUB); RateTable = array[currencies] of real; var CurrencyName : array[currencies] of string = ('Yen', 'USD', 'GBP', 'CNY', 'EUR', 'RUB'); JpyToRate : RateTable = (1, 118.94, 186.53, 13.93, 129.60, 3.73); source : real; target : currencies; begin source := 1000; for target := YEN to RUB do writeln(CurrencyName[target], source / JpyToRate[target] : 8:2) end. Borland Pascal 互換前提な。FPCでテスト済み
660 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 18:28:08 ] それとさ、 (c = 'd') or (c = 'P') or (c = 'y') or (c = 'e') or (c = 'r') は c in ['d', 'P', 'y', 'e', 'r'] でいい。BASICでもCでもねえんだから。
661 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:30:37 ] >>660 能書き垂れるだけならフルソース書けよ 人の書いたソースにケチを付けるだけなら誰でも出来る
662 名前:デフォルトの名無しさん [2007/11/02(金) 18:31:52 ] 光速エスパー世代774RBさん、657,658の人、ありがとうございます! おかげでできそうです。
663 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 18:32:39 ] >>661 俺は棺桶に片足突っ込んでるロートルだといつも書いてるだろw そーゆー面倒なことを期待するなww
664 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:35:25 ] >>663 だったら最初から余計な口を突っ込むな ここは宿題スレだ 回答者はフルソースのみを求めている 部分的な口出しなど不要
665 名前:光速エスパー世代774RR mailto:sage [2007/11/02(金) 18:38:04 ] なるほど、そういう所だったか。なら俺の誤解だったな。 申し訳なかった。これで消えることにする。
666 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 18:39:21 ] わかったら消えろ
667 名前:デフォルトの名無しさん mailto:sage [2007/11/05(月) 19:52:38 ] 堀ちえみ
668 名前:デフォルトの名無しさん [2007/11/06(火) 14:56:37 ] 3次元の配列を用意し、その中にx*y*zのデータを格納せよ。 そして格納されたデータを出力する。ただし、データ値(x、y、z)の それぞれの範囲は1〜9とする。 この問題をお願いします。
669 名前:デフォルトの名無しさん [2007/11/06(火) 15:42:57 ] 入力されたデータ集合から,n番目に大きな数字を出力し,同時にその個数も 出力するプログラムを作成せよ。(集合型変数ではなく配列を用いること) ただし,同じ大きさのデータが複数個あるときは同じ順位とする。 例 入力されたデータが(2,45,5,9,32,5,6,1,4)の集合のとき, 入力されたデータ集合の1番目から4番目の順番は(45,32,9,6)になる。 しかしこの集合には5が2個あり,このとき5が5番目と6番目になり 4は7番目になる。つまり6番目のデータを呼び出したときは5が返される。 この問題もお願いします。
670 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 22:16:37 ] >>668 program prog1(input, output); var i,j,k : integer; a:array[1..9] of array[1..9] of array[1..9] of integer; begin for i := 1 to 9 do for j :=1 to 9 do for k :=1 to 9 do a[i,j,k]:=i*j*k; for i := 1 to 9 do begin writeln('i=',i); for j := 1 to 9 do begin for k :=1 to 9 do write(a[i,j,k]:6); writeln(); end end end.
671 名前:デフォルトの名無しさん [2007/11/08(木) 04:10:24 ] ニュートン方で√x(xの二乗根)と√3x(xの三乗根)を求めるプログラムを教えてください。
672 名前:デフォルトの名無しさん mailto:sage [2007/11/08(木) 12:24:28 ] >>671 program prog1(input, output); var x,c: real; function f(x,c : real) :real; begin f := x*x-c; end; function fd(x : real) :real; begin fd := 2*x; end; begin writeln('xの平行根の近似値を求めます'); write('x : '); read(c); x := c; while abs(f(x,c)) >0.0001do begin writeln(x,' ',f(x,c)); x := x-f(x,c)/fd(x); end; writeln(c,'の平行根の近似値は',x); end.
673 名前:デフォルトの名無しさん [2007/11/11(日) 20:58:09 ] 1つ以上の任意の個数の正の値を入力として受け取り、それらの値を第1引数として与えた配列変数に、要素数を第2引数として与えた(普通の)変数にそれぞれ格納する手続き(手続き名は read_array とすること)。 ただし、入力は 0 以下の値によりその完了を表わすものとする。また、入力された要素の数が n個であったとき、それらを格納する配列の添字は 1 〜 n であるものとする。 をお願いします
674 名前:デフォルトの名無しさん [2007/11/13(火) 15:02:29 ] 10文字以内の文字列を読み込み、次のように変換するプログラムを作成せよ。ただし 、入力された文字がアルファベット以外の時はそのまま出力すること。 (a) すべて大文字 (b) 最初の1文字のみ大文字、あとはすべて小文字 (c) すべて小文字 出力例 Enter a word : KeYWOrD a : KEYWORD b : Keyword c : keyword で困っているのでお願いします。
675 名前:デフォルトの名無しさん mailto:sage [2007/11/17(土) 22:01:04 ] 鶴亀算のプログラムをつくりたいのですが・・
676 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 00:12:52 ] 色々解き方がありますがどのような方法がお好みですか? (1)普通に解く(小学生のやり方) (2)鶴と亀の数を変化させて解く(力技、これが一番簡単) (3)ただの2元連立1次方程式だろGuss〜法を使うまでも無い。クラメールの公式で解いちゃえ (4)真面目?にGuss〜法などを使って解く (5)その他
677 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 01:32:00 ] では(1)をお願いします。
678 名前:デフォルトの名無しさん mailto:sage [2007/11/18(日) 19:39:17 ] >>677 鶴亀算は忘れたので以下を参考にした ttp://www.kanshin.com/keyword/33148 program prog1(input, output); var kame, turu, goukei, asi, tasi,sa: integer; begin write('鶴と亀の数は?'); readln(goukei); write('足の数は?'); readln(asi); tasi :=2*goukei; writeln('全部鶴だと仮定すると足の数は',tasi); sa := asi-tasi; writeln('実際の足の本数との差は', sa); writeln('鶴の代わりに亀が一匹入ると2本足が増える'); kame := trunc(sa/2); writeln('だから亀の数は', sa, '÷2=',kame); turu := goukei-kame; writeln('鶴の数は',turu); end. >>676 のGussはGaussのタイプミス
679 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 00:25:35 ] >>678 できました。 本当にありがとうございます。
680 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 18:39:06 ] プログラム途中で行き詰ったのでどなたかご教授おながいすます 数当てゲーム: 1.数字の入力は5回まで 2.各入力に対して、入力した数字が「当たり」か「大きい」か「小さい」かをディスプレイに出力 3.当たっていたら(5回入力しなくても)終了 というものなんですが・・・ program ensyu9(input,output); var i,data,answer : integer; begin randomize; answer := random(5); if data = answer then for i:=1 to 5 do begin readln(data); if data > answer then writeln('大きい') else if data < answer then writeln('小さい') else if data = answer then writeln('当たり') end; end. まで考えたんですが、当たっていたときに終了させる方法が どうしてもわからないんです。よろしくお願いします
681 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 21:57:18 ] >>680 for文ではなくwhile文を使う。 あたりカウントを数える変数を宣言して、あたり毎に増やしてwhileの判断条件にする。 これで何とかなると思う。
682 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 22:16:34 ] >>680 >>681 がWhileなら俺はrepeat〜untilで行こうかな。 program ensyu9(input,output); var i,data,answer : integer; begin randomize; answer := random(5); i:=1; repeat readln(data); if data > answer then writeln('大きい') else if data < answer then writeln('小さい') else if data = answer then writeln('当たり'); i:=i+1; until (i>5) or (data = answer) end. Pascalの良い教科書無い?
683 名前:681 mailto:sage [2007/11/19(月) 23:14:01 ] >>682 標準なら以下2冊。 PASCAL(K.イェンゼン・N.ヴィルト)培風館 アルゴリズム+データ構造=プログラム(Niklaus Wirth)日本コンピュータ協会 多分両方とも絶版
684 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:24:50 ] >>681-682 ありがとうございます。参考にさせて頂きます。 因みにif文だけでも可能でしょうか?
685 名前:デフォルトの名無しさん mailto:sage [2007/11/19(月) 23:59:55 ] 5回までと上限が分かってるなら単純にループ内を展開すればおk。
686 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 00:53:36 ] >>683 d アルゴリズム+データ構造=プログラムってなかなか面白そうな本ですね。 古本屋探してみます。
687 名前:デフォルトの名無しさん [2007/11/20(火) 15:59:48 ] 分からないのでお願いします。 問1 ひと月ごとにバイト代を払うための学生アルバイトの労務管理システムを作りたい。 全てのアルバイトデータが、日付、学生氏名、職種、労働時間の3項目を持つ場合に これらのデータを格納する型をレコード型により定義せよ。 ただし、職種はr(レジ係),p(配送係),i(接客係),c(清掃係)のいずれかとする。 この問いで困っているのでお願いします。
688 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 16:05:55 ] tarbo pascalです。 あるクラスの身長データを入力し、以下のような平均を計算して、 人数とともに出力する。 170cm以上の 人数n1 平均値a1 170cm未満の 人数n2 平均値a2 全体の 人数n 平均値a (入力データ) 167,187,173,158,188,171,178,168,154,-1 こんな感じの問題です。最後の-1はプログラムを終了させるためにあるようです。 使用する処理は、while ifあたりを指定されています。 自分は以下のように作ったのですが、runtime error 200 at 0001:017E というエラーが表示されてしまい、実行できませんでした。
689 名前:688 mailto:sage [2007/11/20(火) 16:07:52 ] program kadai06(input,output); uses wincrt; const kijun=170; var n,n1,n2:integer; a1,a2,a,x,s1,s2:real; begin n1:=0; n2:=0; a1:=0; a2:=0; read(x); while x>=0 do begin if x>=kijun then begin s1:=a1*n1; n1:=n1+1; a1:=(s1+x)/n1; end else begin s2:=(a2*n2); n2:=n2+1; a2:=(s2+x)/n2; end;
690 名前:688 mailto:sage [2007/11/20(火) 16:09:03 ] n:=n1+n2; a:=((a1*n1)+(a2*n2))/n; end; writeln('身長170cm以上の学生の人数',n1,'人の平均身長は',round(a1),'cmです。'); writeln('身長170cm未満の学生の人数',n2,'人の平均身長は',round(a2),'cmです。'); writeln('学生全体の人数',n,'人の平均身長は',round(a),'cmです。'); end. 長々と書いてしまい申し訳ありません。 正直、プログラムのことはよくわからないので、へんな部分が多いと思いますが、 よろしくお願いします。
691 名前:デフォルトの名無しさん mailto:sage [2007/11/20(火) 18:26:13 ] >>685 できますた。 ありがとうございました。
692 名前:デフォルトの名無しさん [2007/11/21(水) 23:05:49 ] 687の問題をお願いします。m(_ _)m
693 名前:デフォルトの名無しさん mailto:sage [2007/11/21(水) 23:19:23 ] なぜインデントを下げないのか いくら宿題でもこれはひどい
694 名前:デフォルトの名無しさん [2007/11/21(水) 23:45:25 ] >>693 貼り付ける前はインデントしてるよ。2chの仕様で消えてるだけ。 前はインデントを再現するようにしてたが今は面倒なのでしてない。 まあ大した手間じゃないけどな。&nbsp;×4(&は半角)でタブを全置換するだけ
695 名前:デフォルトの名無しさん [2007/11/21(水) 23:51:16 ] >>693 Vimにコピペして gg=G これサイキョウ。
696 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 00:56:26 ] >>687 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5314.txt 課題は型を定義するだけだから必要なのはTypeの部分だけ、他はテストプログラム
697 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 01:03:04 ] >日付、学生氏名、職種、労働時間の3項目 どう見ても4項目あるんだが
698 名前:デフォルトの名無しさん mailto:sage [2007/11/22(木) 01:57:36 ] >>688 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5315.txt 処理の流れを考えないでプログラム組むからおかしくなるんだよな。 フロ−チャート書けとは言わないけど流れを良く考えて欲しい。 どうこう言える立場じゃないけどそう感じた。
699 名前:698 mailto:sage [2007/11/22(木) 02:17:40 ] >>688 偉そうな事を言って置きながら、重大なミスを見逃してましたよ。 >>698 はn,n1,n2が0だと平均値の計算でerrorを吐く。n,n1,n2が0の時は 平均値を計算せずに0とするようにしときました。もうミスは無いよな? ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5316.txt
700 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 21:25:47 ] Pascalは現役なのに、子孫の方はアレだな。
701 名前:デフォルトの名無しさん [2007/12/01(土) 02:45:16 ] 大学の課題がわからないのでお願いします。 線形リスト上、スタックを使う問題なのですが @整数データを昇順に挿入する手続きを示せ。 A与えられた整数データを検索し、そのデータがリスト内にあれば削除する。 です。PUSHやPOPといった手続きを使うとのことですが、@の「昇順に挿入」 からして詰ってしまいました。 どうかお願いします。
702 名前:デフォルトの名無しさん [2007/12/04(火) 02:36:15 ] age
703 名前:デフォルトの名無しさん [2007/12/04(火) 15:36:14 ] 7マスのニムゲームの対戦プログラムを作成するので困っているので教えて下さい。 ちなみに規則は、プレイヤーは交互にマスに左端から書き込む。一度に書き込める マスの数は1〜3だそうです。 お願いします。
704 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 11:14:49 ] 初項がa、公差がbの等差数列をつくり、最初の20項を表示させる という内容のプログラムをつくりたいです。 お願いします。
705 名前:デフォルトの名無しさん mailto:sage [2007/12/16(日) 12:00:47 ] >>704 program prog1(input, output); var n,a,b : integer; begin write('初項a : '); read(a); write('公差b : '); read(b); for n := 1 to 20 do writeLn(n:3, (a+b*(n-1)):10); end.
706 名前:デフォルトの名無しさん [2007/12/16(日) 23:29:34 ] 日付データを入力したらその前の月の日付データを出力するプログラムを作りたいのですがよくわかりません。 12/16(日)だったら11/16(金)てな感じです。前の月に同じ日が無い場合はその月の最後の日のデータを出力する。 月と曜日は列挙型にしろとのことです。 よろしくお願いします。
707 名前:704 mailto:sage [2007/12/17(月) 21:14:25 ] >>705 ありがとうございます! しかしやってみたところ初項と公比を入力したあと画面が消えてしまうのですが・・
708 名前:デフォルトの名無しさん mailto:sage [2007/12/17(月) 22:56:34 ] >>707 コンソールから実行するか、For文の後に以下のコードを付け加えればOK write('整数を入力すると終了します'); read(a); 詳しい環境を書いて置けば誰かが他の解決策を提示してくれるかもな。
709 名前:704 mailto:sage [2007/12/19(水) 21:55:59 ] 解決できました。 これで来週の提出に間に合いそうです