[表示 : 全て 最新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


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 ]
解決できました。
これで来週の提出に間に合いそうです

710 名前:デフォルトの名無しさん mailto:sage [2007/12/23(日) 23:38:54 ]
ダイアを描くプログラムですが、これを壁に当たれば入射角=反射角で跳ね返るように動かすことはできませんか?
procedure TForm1.Button1Click(Sender: TObject);
const max=50;
procedure line(x1,y1,x2,y2:integer);
begin canvas.MoveTo(x1,y1);canvas.lineTo(x2,y2) end;
procedure dia(x0,y0,r,n:integer);
var xs,ys:integer;{始点}
xe,ye:integer;{終点}
i,j:integer; {ループ変数}
t:real; {角度}
begin
t:=2*pi/n;
for i:=1 to n-1 do begin
xs := x0 + round(r*cos(t*i));
ys := y0 + round(r*sin(t*i));
for j:=i+1 to n do begin
xe := x0 + round(r*cos(t*j));
ye := y0 + round(r*sin(t*j));
line(xs,ys,xe,ye)
end
end
end;
begin
dia(100,400,70,11)
end;

end.






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

前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