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


577 名前:567 mailto:sage [2007/09/21(金) 01:14:12 ]
てへ、もういっちょ教えてくださいw
さっきのを、整数じゃなくて実数にするのですが、
program PR01(input,output);
real D1,D2,S,D,P,Q:integer;
begin
read(D1,D2);
S:=D1+D2;D:=D1-D2;P:=D1*D2;Q:=D1/D2;
writeln(D1,D2);
writeln(S,D,P,Q);
end.
だとエラーが出るんですけど、どこが違うのでしょう?

578 名前:567 mailto:sage [2007/09/21(金) 01:20:25 ]
2行目は
var D1,D2,S,D,P,Q:real;
ですね。でもまだ上手くいかない気が…。

579 名前:567 mailto:sage [2007/09/21(金) 02:11:32 ]
うお、S:6:2とかにしないと、桁数がおかしなことになるんですね。
解決しました!

580 名前:デフォルトの名無しさん [2007/09/30(日) 19:15:06 ]
 

581 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:21:35 ]
一番短いパスカルのプログラムってどんなのですか?
文字数が一番少ないものを作れという課題が出たのですが…


582 名前:デフォルトの名無しさん [2007/10/03(水) 00:22:35 ]
ageてしまえ

583 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 00:28:23 ]
program a;
begin
end.

584 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 13:45:25 ]
>>583
改行コードをスペースにすれば(環境によっては)1文字分減るかも。

585 名前:デフォルトの名無しさん [2007/10/03(水) 17:01:06 ]
短すぎてびっくりしましたw それでもいいんですね。ありがとうございます。
ついでにこれも…。
☆頭書きをBNF記法で表せ。
☆整数「43221」を読み込み、逆順にして、元のデータと共に出力せよ
☆次の余剰を調べよ
14 mod 4
-14 mod 4
14 mod -4
-14 mod -4



586 名前:光速エスパー世代774RR mailto:sage [2007/10/03(水) 18:35:48 ]
program a;begin end.

Pascalのセミコロンは区切り子なので、改行もスペースもいらない。

587 名前:デフォルトの名無しさん mailto:sage [2007/10/03(水) 19:09:53 ]
>>585
>☆頭書きをBNF記法で表せ。
何の頭書き?

>☆整数「43221」を読み込み、逆順にして、元のデータと共に出力せよ
正数を文字列にしてひっくり返せばいいの?

>☆次の余剰を調べよ
何が分からないの?その式をそのまま実行して出力したんじゃダメなの?

588 名前:デフォルトの名無しさん [2007/10/04(木) 00:44:16 ]
program PR0203(input,output);
var W,L,H,V,S:integer;
begin
readln(W,L);raldln(H);writeln(W,L,H);
V:=W*L*H;S:=2*(W*(L+H)+L*H);
writeln(V,S);
end.

これでエラーが出るのは何故なんでしょう?

PR0203.pas(4,21) Error: Identifier not found "raldln"
PR0203.pas(4,24) Error: Illegal expression
PR0203.pas(4,25) Warning: Variable "H" does not seem to be initialized
PR0203.pas(8) Fatal: There were 2 errors compiling module, stopping
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)

と出たのですが、よくわかりません。

589 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 00:46:47 ]
コンパイラ「raldln なんて関数ねーよ」

590 名前:光速エスパー世代774RR mailto:sage [2007/10/04(木) 00:47:49 ]
>>588
>raldln(H)

そらー単純にミスタイプづら。
「raldlnなんつー識別子はないどごるぁ」ってコンパイラが逝ってるじゃん。

591 名前:光速エスパー世代774RR mailto:sage [2007/10/04(木) 00:51:47 ]
>>589
うふっ、けこーんね♥
こんど一緒にゐると先生の所にいきませんこと?
ねぇってば、ねぇ、ねぇ

それにしても、どう指を動かすとイク^H^Hこんなtypoするんだろうなw

592 名前:デフォルトの名無しさん [2007/10/04(木) 00:54:51 ]
ひゃー、タイプミスはずかし…。
>>585の頭書きなんですけど、

program ●●●(input,output)

の事らしいです。BNFをぐぐってもいまいち理解出来なくて。

593 名前:デフォルトの名無しさん [2007/10/04(木) 01:08:58 ]
<頭書き> ::= <名前> "(input,output)"

こんなんでいいのけ??

594 名前:デフォルトの名無しさん [2007/10/04(木) 02:03:34 ]
imepita.jp/20071004/062300

とっさに書きました。
これをBNFに書き換えるのを教えてください!!
お願いします!!!!!

595 名前:デフォルトの名無しさん mailto:age [2007/10/04(木) 02:14:44 ]
videointroplayer.web.fc2.com/?ii9YN1kO-TK36%+WhqyiIrhz0F110%+Kjtps4byn7a119%+esA5NHPWRF1115%+026mGIi9Z4824%+@1@_KeyboardCrusher



596 名前:デフォルトの名無しさん [2007/10/04(木) 02:44:32 ]
>>585の2個目

program PR0231(input,output);
var D,X,S:integer;
begin
read(D);
X:=D;S:=0;

S:=10*S+X mod 10;
X:=X div 10;
S:=10*S+X mod 10;
X:=X div 10;
S:=10*S+X mod 10;
X:=X div 10;
S:=10*S+X mod 10;
X:=X div 10;
S:=10*S+X mod 10;

writeln(D,S);
end.

これで出ないのはなぜ、、、。

597 名前:デフォルトの名無しさん [2007/10/04(木) 07:05:52 ]
できました!
ありがとうです!!

598 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 09:03:54 ]
いいよいいよ。どんどん宿題をオープンにしちゃって! 他の人も勉強になるから。

599 名前:デフォルトの名無しさん mailto:sage [2007/10/04(木) 09:16:42 ]
バッカス・ナウア記法って、そういや昔『やさしいコンピュータ科学』を読んだときに
Turbo Pascalの概要が解説されているところで使われていたのを思い出した。
<> -> <> こんな感じの<>を使った記述。ちがったっけ?




600 名前:光速エスパー世代774RR mailto:sage [2007/10/04(木) 19:18:53 ]
>>596

>S:=10*S+X mod 10;
>X:=X div 10;
>S:=10*S+X mod 10;
>X:=X div 10;
>S:=10*S+X mod 10;
>X:=X div 10;
>S:=10*S+X mod 10;
>X:=X div 10;
>S:=10*S+X mod 10;

次は、「自動化ちうのをしたくて電算機プログラムやってるのに、
なんでオラさはこんな5回も6回もコピペしなきゃなんねえだべ」と思ってみよう。

手抜きとぐうたら根性こそプログラミングの推薬ww

601 名前:デフォルトの名無しさん [2007/10/08(月) 02:02:31 ]
exp(x)とかodd(x)みたいな感じで、even(x)って存在するの?

602 名前:デフォルトの名無しさん mailto:sage [2007/10/08(月) 07:27:53 ]
not odd(x) でいいーぶん

603 名前:デフォルトの名無しさん [2007/10/08(月) 10:02:52 ]
>>602
初めて知った!d!
ついでに。
なにが違うんじゃー
全部0って出てくるー

program PR0331(input,output);
var D1,D2:real;
var T1,T2,T3,T4,R1,R2,R3,R4:integer;
begin
read(D1,D2);
T1:=trunc(D1);T2:=trunc(D2);T3:=trunc(-D1);T4:=trunc(-D2);
R1:=round(D1);R2:=round(D2);R3:=round(-D1);R4:=round(-D2);
writeln('trunc(',D1:2:1,')=',T1:2,'trunc(',D2:2:1,')=',T2:2,'trunc(',-D1:2:1,')=',T3:2,'trunc(',-D2:2:1,')=',T4:2);
writeln('round(',D1:2:1,')=',R1:2,'round(',D2:2:1,')=',R2:2,'round(',-D1:2:1,')=',R3:2,'round(',-D2:2:1,')=',R4:2);
end.

あと、もうちょいシンプルにできないのかな、これw

604 名前:光速エスパー世代774RR mailto:sage [2007/10/09(火) 12:48:18 ]
>D1:2:1
少なくとも三桁は確保しないと表示できないと思われ。
負数だったら少なくとも四桁。

こういうのはシンプルにしようがないんだけど、元数値を別に表示すると少しは見やすいかな。

writeln('Data Entered : ', D1, D2);
writeln('Trunc''s of them are ', trunc(D1), ' and ', trunc(D2), ' respectivly.');
writeln('Trunc''s of negated them are ', trunc(-D1), ' and ', trunc(-D2), ' respectivly.');
writeln('Round''s of them are ', round(D1), ' and ', round(D2), ' respectivly.');
writeln('Round''s of negated them are ', round(-D1), ' and ', round(-D2), ' respectivly.');
writeln('Thus, both functions are (different from / same for) each other in case of (you must fill this parenthesis ).')

605 名前:デフォルトの名無しさん [2007/10/09(火) 21:31:21 ]
program PR0331(input,output);
const D1=0.4;D2=0.5;D3=-0.4;D4=-0.5;
var T1,T2,T3,T4,R1,R2,R3,R4:integer;
begin
T1:=trunc(D1);T2:=trunc(D2);T3:=trunc(D3);T4:=trunc(D4);
R1:=round(D1);R2:=round(D2);R3:=round(D3);R4:=round(D4);
writeln('trunc(',D1:4:1,')=',T1:2,' trunc(',D2:4:1,')=',T2:2,' trunc(',-D1:4:1,')=',T3:2,' trunc(',-D2:4:1,')=',T4:2);
writeln('round(',D1:4:1,')=',R1:2,' round(',D2:4:1,')=',R2:2,' round(',-D1:4:1,')=',R3:2,' round(',-D2:4:1,')=',R4:2);
end.

にしたら、

trunc( 0.4)= 0 trunc( 0.5)= 0 trunc(-0.4)= 0 trunc(-0.5)= 0
round( 0.4)= 0 round( 0.5)= 0 round(-0.4)= 0 round(-0.5)= 0

ってなっちゃう…やっぱり全部ゼロだ…



606 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 21:37:07 ]
>>605
えーと、何が問題なの?

607 名前:デフォルトの名無しさん [2007/10/09(火) 21:45:37 ]
0.4,0.5,-0.4,-0.5をtruncとroundで出力?したいのです。
truncは少数点以下切り捨てだから、全部0になっておkなのですが、
roundは四捨五入だから、

round( 0.4)= 0 round( 0.5)= 1 round(-0.4)= 0 round(-0.5)=-1

ってなるはずなんですよ。

608 名前:デフォルトの名無しさん [2007/10/09(火) 22:33:59 ]
program PR0311(input,output);
ver D1,D2:integer;
ver O1,O2,E1,E2:Boolean;
begin
read(D1,D2);
O1:=odd(D1);D2:=odd(D2);
E1:=even(D1);E2:=even(D2);
writeln(' odd(',D1,')=',O1);writeln(' odd(',D2,')=',O2);
writeln('even(',D1,')=',E1);writeln('even(',D2,')=',E2);
end.

これのどこがエラーなんでしょう??

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)をお願いします。






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

前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