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


552 名前:光速エスパー世代774RR mailto:sage [2007/08/04(土) 18:15:10 ]
>>543
時刻表ってのは基本的に列車の配列なのな。
列車をどうデータ化するかが問題じゃな。
別線を通ったり、優等列車だったりして特定の駅に停まらないことを表現するのも
忘れてはいけないのな。

駅乙にある時刻までに到着する、
駅乙に到着する前に駅甲に停車する列車のうちで、
駅甲の発車時刻が一番遅いものを見つける。この操作を二回繰り返せばいい。

553 名前:デフォルトの名無しさん [2007/08/06(月) 17:29:56 ]
>>548です。ありがとうございます。
実際に実行してみました。
Enter term: の後に a b & c \ | と入力すると
TRUE FALSE FALSE TRUE
FALSE TRUE FALSE TRUE
TRUE TRUE FALSE TRUE
FALSE FALSE TRUE FALSE
TRUE FALSE TRUE FALSE
FALSE TRUE TRUE FALSE
TRUE TRUE TRUE TRUE
FALSE FALSE FALSE TRUE
と表示されました。これは左から a, b, c, [(a and b) or (not c)]
となっているとわかりました。
実はプログラムへの要求事項があって
入力された論理式を,通常の式のように表示する機能
(例えば 入力が「a b |」 ならば 出力で「(a∨b」と表示される)
論理式が true となる(すべての)変数値割当てを表示する機能
の二つの機能、まとめると
「F = a∨b が true になるのは
a=true, b=true のとき
a=true, b=false のとき
a=false, b=true のとき
よって F は充足可能である」
こういうような形で表示しなければならないらしいんです。
こうするにはどうしたらいいのでしょうか?
何度もすみません^^;





554 名前:光速エスパー世代774RR mailto:sage [2007/08/07(火) 00:35:55 ]
「普通の式」で書くのは549-550のを久美こんでくれたまへ
もひとつのは、式の評価がtrueな時だけ出力すればいいから簡単。

ただねえ、10変数まで許すんでしょ、変数の値の集合には1024個の
元があって、式(変数1)を真にするのは500個、変数1-10の論理和をとれば
1023個で真になる。そんなのを表示しろというのも、若干野蛮な問題だと
思うなww


555 名前:デフォルトの名無しさん [2007/08/07(火) 15:51:13 ]
>>553です。ありがとうございます。
教えていただいたプログラムに549ー550を加えてみました。
Program Viva2chan;
const maxvar = 'c';
type
pnode= ^node;
node = record
value : boolean; term : string; next : pnode
end;
var
stack : pnode;
variables : array ['a'..maxvar] of boolean;
i : integer; s : string; c : char;

procedure push(v : boolean);
var nd : pnode;
begin
new(nd);
nd^.value := v; nd^.next := stack; stack := nd
end;

function pop : boolean;
var v : boolean; nd : pnode;
begin
nd := stack; v := nd^.value; stack := nd^.next; pop := v;
dispose(nd)
end;



556 名前:デフォルトの名無しさん [2007/08/07(火) 15:52:20 ]
procedure ope(operation : char);
var operand : boolean;
begin
if operation in ['&', '|'] then operand := pop;
with stack^ do
case operation of
'&' : value := value and operand;
'|' : value := value or operand;
'\' : value := not value
end
end;








557 名前:デフォルトの名無しさん [2007/08/07(火) 15:53:13 ]
function disp(source : string) : string;
var i : integer; c : char;
begin
for i := 1 to length(source) do begin
c := source[i];
if c in ['a'..maxvar] then pusht(c)
else if c in ['&', '|', '#', '\'] then term(c)
end;
disp := popt
end;

function powerof(n : integer) : integer;
begin
if n > 0 then powerof := powerof(pred(n)) * 2
else powerof := 1
end;

begin
stack := nil;
write('Enter term :'); readln(s);
for i := 1 to powerof(ord(maxvar) - ord('a') + 1) do begin
SetVarSet(i);
for c := 'a' to maxvar do write(variables[c], ' ');
writeln(calc(s))
end
end.

558 名前:デフォルトの名無しさん [2007/08/07(火) 15:54:01 ]
5ー7行目を549のように書き換えました。
60ー83行目に549ー550を追加しました。
コンパイルすると
push, pop, ope, calc, SetVarSet, term
"datakozo.p", line 62: Warning: Symbol 'POPT' is not defined [221]
"datakozo.p", line 62: Warning: Mixing non-strings with strings [170]
, disp
"datakozo.p", line 80: Warning: Symbol 'PUSHT' is not defined [221]
"datakozo.p", line 83: Warning: Symbol 'POPT' is not defined [221]
"datakozo.p", line 83: Warning: Mixing non-strings with strings [170]
, powerof, Viva2chan

Translation completed.
datakozo.c: 関数 `term' 内:
datakozo.c:116: `popt' が宣言されていません (この関数内で最初に利用)
datakozo.c:116: (未宣言の各変数については、それが最初に現われたそれぞれの関数
datakozo.c:116: に対して一度だけ報告されます。)
datakozo.c: 関数 `disp' 内:
datakozo.c:162: `popt' が宣言されていません (この関数内で最初に利用)

となりました。この場合はどうなのでしょうか?
あと、trueのときだけを表示するには下から4行目を換えればいいのかなと思ったのですがどうでしょうか?

559 名前:デフォルトの名無しさん [2007/08/23(木) 16:57:39 ]
約分をするプログラムの作り方を教えてください


560 名前:光速エスパー世代774RR mailto:sage [2007/08/24(金) 01:34:38 ]
最近はBASIC屋に化けてるww

約分ってのは分母子を最大公約数で割ればいいわけだから、
よーするに最大公約数を求める問題にいきつく。
これは二千年以上前から判っている方法で溶ける。FPCでテスト墨。

Program Euclid;

function GCD(m, n : integer) : integer;
begin
if n = 0 then GCD := m
else if m mod n = 0 then GCD := n
else GCD := GCD(n, m mod n)
end;

begin
writeln(GCD(123, 12))
end.

エウクレイデス先生はとても偉かったし、算法も高効率だが、
このコード自体の効率はわるいよ。




561 名前:デフォルトの名無しさん [2007/08/24(金) 16:43:39 ]
有賀と

562 名前:nao [2007/08/24(金) 17:03:06 ]
data.txt(100個の英単語がアルファベット順)というファイルに、
新しく単語を入力、またはそのファイルから単語を削除するプログラムを
どなたか作ってください。お願いします。


563 名前:デフォルトの名無しさん [2007/08/24(金) 17:24:41 ]
おい!誰ぞ!

パスカルの後継言語ヘクトパスカル作れよ!

564 名前:デフォルトの名無しさん mailto:sage [2007/08/24(金) 17:59:51 ]
そこはあえてバールと言おうぜ。

565 名前:光速エスパー世代774RR mailto:sage [2007/08/24(金) 21:40:07 ]
どんなに気圧が低くても、愛の風は風力3w

566 名前:デフォルトの名無しさん [2007/09/20(木) 18:01:08 ]
program EX01(input,output);
var D1,D2,S,D,P,Q:integer;
begin
read(D1,D2);
S:=D1+D2;D:=D1-D2;P:=D1*D2;Q:=D1 dir D2;
writeln(D1,D2);
writeln(S,D,P,Q);
end.
整数の四則演算なのですが、Windowsで保存するときの拡張子を教えてください。

567 名前:566 [2007/09/20(木) 22:50:15 ]
急いでいたので、言葉が足りなかったかもしれません…。
今日から大学での講義がスタートして、教科書もなんにもなく、いきなり出された宿題なので、さっぱり分かんないのです。
C言語でやっていたように、Windowsのメモ帳でプログラムを作って、
【.cpp】ではない何かで保存→コマンドプロンプトで実行
というようにやりたいのですが、いろいろと教えていただきたいです。

568 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 22:51:10 ]
EX01.pasじゃだめなの?

569 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:06:12 ]
>>567
開発環境、つか、コンパイラは何を使っているんですか?

570 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:07:14 ]
コマンドプロンプトでは、
C:\Documents and Settings\user>cd My Documents
C:\Documents and Settings\user\My Documents>bcc32 EX01.pas
C:\Documents and Settings\user\My Documents>EX01.exe
って感じでおkですか?



571 名前:567 mailto:sage [2007/09/20(木) 23:10:24 ]
>>569
見てみたら、C++ Builderってやつでした。
これじゃPascalは無理か…

572 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:30:40 ]
>>566
そのソースプログラムをFree Pascal Compiler 2.0で
コンパイルしてみたらエラーが出たよ。dirはdivだね。

誤 Q:=D1 dir D2;
正 Q:=D1 div D2;

573 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:38:05 ]
>>571
ぼくはLinuxユーザーですが、
Free PascalにはWindows用のものもあるようですから
Free Pascalをインストールして試してみられてはいかがでしょう?

www.freepascal.org/
このサイトのDownloadというリンクをクリックしてみてください。
Win32, Win64 and WinCEというのがあるはずです。

574 名前:デフォルトの名無しさん mailto:sage [2007/09/20(木) 23:42:41 ]
ちなみに、Free Pascalについてはこのページが参考になります。
ttp://www.ss.u-tokai.ac.jp/~onishi/lecture/freepascal.html

575 名前:567 mailto:sage [2007/09/21(金) 00:00:08 ]
>>572
板書の写し間違いですね。ありがとうございます。

>>573
dです!今すぐダウンロード&インストールします!

576 名前:567 mailto:sage [2007/09/21(金) 01:00:56 ]
うおおおおおおおおお!!!!!!!!
できました!!!!!!!!マジdクス!

来週からもよろしくお願いしますwww

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方言を使っていいなら、わざわざ代入分書かないで、いきなり初期値ぶちこみでいいよ。






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

前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