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


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.

711 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 01:24:03 ]
問題を分離しよう
・描いた図形を動かす
・壁に衝突した事を検出
・角度とか
わからんのはどれよ



712 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 12:54:18 ]
>>711
嫌われる技術系の見本だな。出来るか出来無いか聞かれているんだから
出来る、出来無いで答えてやればいい。出来るならコードを添えると好感度UP

713 名前:デフォルトの名無しさん mailto:sage [2007/12/24(月) 22:41:40 ]
>711
書いた図形を動かすのはできるのですが、あとの二つができません。

714 名前:デフォルトの名無しさん mailto:sage [2007/12/26(水) 08:15:07 ]
だったらくだらねえカキコしないでおめーが書きゃいいだろ、フルソース厨の>>712さんよ。

715 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 11:53:47 ]
グラフィックの宿題です。
ボールの大きさが変化しながら動いていくプログラムを作りたいのですが、初心者で全くお手上げです。
お願いします。

716 名前:デフォルトの名無しさん [2008/01/16(水) 19:49:40 ]
p2cコンパイラをcygwin環境で使う場合どのようにすればいいんですか?

717 名前:デフォルトの名無しさん mailto:sage [2008/01/16(水) 20:02:05 ]
>>715
円を描くことは出来るんだよね?
だったら、
1、前回の中心と半径を覚えておく
2、次の半径と、中心座標を求める。
3、前に描いた円を消す。
 それには前に描いた中心、半径で
  背景と同じ色で塗ればいい。

4、新しい半径と中心の違う円を描く、

5、Sleepとかでお休みする。

これで許してくれるだろ。 チラツクとか言われたら困るが

718 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 10:24:09 ]
正三角形を描くプログラムを教えてください。

719 名前:デフォルトの名無しさん mailto:sage [2008/01/17(木) 11:41:57 ]
DelphiのVCLを使えるの? なら
procedure PaintAngle(Canvas:TCanvas;x0,y0,r0,deg:Integer);
var w:Extended;
i:Integer;
pt:array [0..2] of TPoint;
begin
w:=PI/180.0*deg;
for i:=0 to 3-1 do begin
pt[i].x:=round(x0+r0*sin(w));
pt[i].y:=round(y0+r0*cos(w));
w:=w+2*PI/3;
end;
Canvas.Polygon(pt);
end;
//試験コード
var x0:Integer=200;
y0:Integer=200;
r0:Integer=100;
deg:Integer=0;
///////////// タイマーを貼り付けてダブルクリック
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Invalidate;
deg:=deg+10;
end;
///////////// フォームのOnPaintに
procedure TForm1.FormPaint(Sender: TObject);
begin
PaintAngle(Canvas,x0,y0,r0,deg);
end;

720 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 01:03:54 ]
>>719
VCLなしバージョンをお願いしたいです・・

721 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 02:58:54 ]
>>720
計算部分は書かれてるんだからあとは何とでもなるだろ



722 名前:デフォルトの名無しさん [2008/01/28(月) 14:36:07 ]
配列でDELETE(p,L)をするプログラムを教えてください。


723 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 19:54:19 ]
ではまずDELETEとpとLを定義してください。

724 名前:デフォルトの名無しさん [2008/02/04(月) 16:36:18 ]
丸投げオッケーすか?

725 名前:デフォルトの名無しさん mailto:sage [2008/02/04(月) 16:46:48 ]
やってみればいいと思うよ。 出題側もこのスレ見てる筈で、
あなたは十分過ぎるリスクを背負ってるわけだから、
その勇気まで否定するものではない。

726 名前:デフォルトの名無しさん mailto:sage [2008/02/05(火) 00:29:02 ]
>>724
このコードを改造してくださいとか、やり方教えてくださいと
言う依頼より丸投げの方が良いな。

【質問テンプレ】
[1] 授業単元:
[2] 問題文(含コード&リンク):()
[3] 環境
 [3.1] OS: (Windows/Linux/等々)
 [3.2] コンパイラ名とバージョン: (Delphi6、FreePascal、GNU Pascal等)
 [3.3] GUI/CUI:
  (GUI:ウィンドウにボタンなどがあってマウスで操作するタイプ)
  (CUI:殺風景な画面に文字が表示されるタイプ)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、使用/使用禁止ライブラリ等)


727 名前:デフォルトの名無しさん [2008/02/07(木) 02:53:41 ]
探索ニ分木で、tree型の変数tが指している節の2つ上の親を表したい時はどうすればよいのでしょうか。


728 名前: [2008/05/21(水) 11:43:07 ]
元金M円と年利率xを端末から読み込み、M円を年利率xの複利で預けたときの1〜20年後の元利合計を計算して出力するプログラムなんですが・・・
program Fukuri(input,output);
{複利計算}
const Gankin=    ;
Nensu =     ;
var riritu, gokei : real;
begin
write(output, '利率は?'); readln(input, riritu);
gokei :=Gankin *exp(Nensu *ln(1+riritu));
writeln(output, Gankin:1, '円を' ,   *riritu:3:1, '%の利率で'
,Nensu:1, '年預けると',gokei:4:2,'円となる')
end.

ここまでやったんですが・・・式がわかりません教えてください。

729 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 11:52:29 ]
複利といっても、 log /exp 使っていいの?
手計算とあわせるなら円単位で丸める必要はないの?

で式が判りませんって、どういう意味?

730 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 12:21:44 ]
別に日割りとか必要はないんだろ?
そうなら単純に繰り返し文使えば良いんじゃないのか?

731 名前: [2008/05/21(水) 17:29:39 ]
1〜20年というのを繰り返し文でやるってことですか?




732 名前:デフォルトの名無しさん mailto:sage [2008/05/21(水) 20:25:59 ]
うん for 文使って M := M*(1+x/100) を繰り返すといい
ただ 小数点以下が出て来るから、これをどう丸めたらいいの?

733 名前: [2008/05/21(水) 22:11:50 ]
for文はどこにどうやってすればいいんですか?小数点はそのままでいいと思います。
へたにroundとかつかうと自分はわからないんで。。。

734 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 00:09:48 ]
program Fukuri(input, output);
{複利計算}
var
riritu, kingaku: Double;
Nensu: Integer;
begin
write(output, '利率は?'); readln(input, riritu);
write(output, '金額は?'); readln(input, kingaku);
writeln(output, kingaku: 4: 2, '円を', riritu: 3: 1, '%の利率で');
for Nensu := 1 to 20 do
begin
kingaku:=kingaku+kingaku*riritu/100;
writeln(output, Nensu: 1, '年預けると', kingaku: 4: 2, '円となる')
end;
end.


735 名前: [2008/05/22(木) 15:40:39 ]
ありがとうございます。まだたくさんあるんですが・・・

736 名前: [2008/05/22(木) 19:48:31 ]
正整数Nを読み込み、x^2≦N<(x+1)^2となる整数x、つまり√Nの近似値を求めるプログラムを、
sqrtなどの標準関数を使わないで作りなさいという問題なんですが。。。
わかりません。教えてもらえませんか?√のプログラムってなにをすればいいんでしょうか?



737 名前:デフォルトの名無しさん mailto:sage [2008/05/22(木) 21:15:32 ]
Delphiスレでサンプルコード書いてやったし
方法も書いてあげたでしょ?

738 名前: [2008/05/23(金) 17:12:51 ]
すみません・・・よくわからなかったんで。

739 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 17:18:30 ]
よくわからなかったら別スレに投げるのか?
常識的には同じスレに質問するものじゃないのか。

740 名前:デフォルトの名無しさん mailto:sage [2008/05/23(金) 19:41:00 ]
ああ $ ついた文字は何かって質問か?

ようするに整数の最大値の平方根までループすれば十分って事だ
で、pascalはループ抜けたらループ変数は不定だから
ホントは i を返すのは間違えている。

で、奇数を合計するのは昔は掛け算が遅かったからやってた事で
別に今なら x*x と比較したって同じだ。
順に x*x と比較してゆけばいい

741 名前: [2008/05/23(金) 21:57:09 ]
詳しい説明ありがとうございます。でも自分には難しすぎます。
まだ全然習ってないことがたくさんで。。。



742 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 07:21:44 ]
はあ、で、どこが判らないんだ?

743 名前: [2008/05/24(土) 12:19:18 ]
(1)2次方程式x2(二乗)+3x+k=0が異なる2つの実数の解をもつとき、定数kの値の範囲を求めよ。

(2)2次方程式x2(二乗)−2x+a−1=0が実数の解をもたないとき、定数aの値の範囲を求めよ。

(3)一個180円のケーキと一個240円のケーキを合わせて10個買い、代金を2000円以下にしたい。240円の
 ケーキをできるだけ多く買うとすれば、240円のケーキは何個買えるか。(消費税は考えない)

(4)A町から20キロメートル離れたB町へ行くのに、自転車で時速12キロメートルで走っていたが、途中
 で自転車が故障したので、それからは時速4キロメートルで歩いたところ、B町に着くまでの所要時
 間は3時間以下であった。自転車が故障したのは、A町から何キロメートル以上の地点か。

(5)一の位の数が6である2けたの自然数で、十の位と一の位の数の和を4倍すると、もとの数より大き
 くなるものがある。
 十の位の数をxとして不等式を作り、このような自然数をすべて求めよ。

744 名前:デフォルトの名無しさん mailto:sage [2008/05/24(土) 12:50:54 ]
それpascalの問題なのか?

745 名前: [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 名前: [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からnまでの数値であり、
n<=10とする. n=1,n=2,n=3の場合についてプログラムを実行しなさい。


「ハノイの塔」のパズルを解く再帰の手法を使用したプログラムを書きなさ
い。(円盤の枚数はnとする)n=2,n=3,n=4の場合についてプログラムを実行
しなさい。

834 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 18:54:16 ]

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から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
-


845 名前:841,843 mailto:sage [2008/12/20(土) 09:25:22 ]
>>842
どこで渡すー?

846 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:13:13 ]
program prog1(input, output);
 var i,n : integer;
   p : array[1..10] of integer ;

 procedure perm(i,n:integer);
  var j,t :integer;
  begin
   if i<n+1 then
    begin
     for j:=i to n do
     begin
      t:=p[i] ; p[i]:=p[j] ; p[j]:=t ;
      perm(i+1,n);
      t:=p[i] ; p[i]:=p[j] ; p[j]:=t ;
     end;
    end
   else
    begin
     for j :=1 to n do write(p[ j ],' ');
     writeln('');
    end;
  end;

begin
  write('n='); read(n);
  for i := 1 to n do p[i]:=i;
  perm(1,n);
end.

847 名前:デフォルトの名無しさん [2008/12/20(土) 10:32:15 ]
>>845
どこで?
おれはフツーにレポboxに放り込むけど…

848 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:40:57 ]
>>846
アルゴリズム事典かな?
もれも、ほとんど同じになった。



849 名前:デフォルトの名無しさん [2008/12/20(土) 10:46:37 ]
1、2共にちゃんと動作しました。
ありがとうございました。

850 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:47:40 ]
C言語によるはじめてのアルゴリズム入門の初版

851 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 10:58:01 ]
>>849
引数で配列渡すようにしないとだよ



852 名前:デフォルトの名無しさん [2008/12/20(土) 11:13:48 ]
そうなのですか?

853 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 12:14:24 ]
>値の配列を受け取り
って書かれてるから渡したほうがいいかなーと

854 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 19:25:00 ]
Pascal
jp.youtube.com/watch?v=yzJqYl9EHgA


855 名前:デフォルトの名無しさん mailto:sage [2008/12/20(土) 20:04:33 ]
>>846の8行目
×  if i<n+1 then
○  if i<n then
動作結果は同じだけど一応訂正

856 名前:デフォルトの名無しさん [2008/12/25(木) 20:10:48 ]
丸投げOKですか?
Delphi使用で、for、if、arrayまで習っています。

・生年月日と今日の日付を計算して、満年齢を計算する
・sin,cos,tanの数表を作る

857 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 20:14:24 ]
どうでもいいミスですが一応訂正

×生年月日と今日の日付を計算して、満年齢を計算する
○生年月日と今日の日付を入力して、満年齢を計算する

858 名前:デフォルトの名無しさん [2008/12/25(木) 20:34:15 ]
宿題の季節っつーか来年提出か
締切日は書いた方がいい

859 名前:856 [2008/12/25(木) 21:12:39 ]
>>858
すいません。締切は1月5日です。
諸事情で締切日までDelphiが使えない状態になりました。

860 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:30:36 ]
パスカルだけど
program prog1(input, output);
var birthday,today,y: integer ;
begin
writeln('ex. 20081226');
write('birthday = ');readln(birthday);
write('today = ');readln(today);
y:=trunc((today-birthday)/10000);
writeln(y);
end.

誕生日が来て1才年をとる場合なら簡単。
誕生日の前日に1才年をとる場合は難しいな

861 名前:デフォルトの名無しさん mailto:sage [2008/12/26(金) 12:35:53 ]
program prog1(input, output);
const pi=3.1415926535;
var i:integer;
s,c,t:real;
begin
writeln('deg','sin':8,'cos':10,'tan':10);
for i := 0 to 360 do
begin
s := sin(i*2*pi/360);
c := cos(i*2*pi/360);
if (i mod 15) = 0 then
begin
if (i mod 180 = 90) or (c= 0) then
writeln(i:3,s:10:5,c:10:5,'-------':10)
else
writeln(i:3,s:10:5,c:10:5,s/c:10:5) ;
end;
end;
end.



862 名前:856 [2008/12/26(金) 16:46:53 ]
どうもありがとうございました

863 名前:デフォルトの名無しさん [2009/01/08(木) 01:10:29 ]
来週火曜までにお願いします。Delphiです。

・誕生日まで何日あるかを計算する。ただしarrayでなくcase文を使って設定すること。
・何個かのデータをもらって、その平均、総和、最大値、最小値、標準偏差を計算する。
・プロ野球などのプロスポーツのデータ(勝ち数、負け数、引き分け数)を入力したら、
 各チームの勝率を計算し、順位をつける。
・学籍番号と得点をデータとして入力し、これを得点の高い順に並べ替え、順位を付けて表示する。

864 名前:デフォルトの名無しさん mailto:sage [2009/01/08(木) 15:23:00 ]
お断りします

865 名前:デフォルトの名無しさん [2009/01/10(土) 11:48:11 ]
>> 863
arrayではなくCaseを使って設定するって、どういう意味?

 

866 名前:デフォルトの名無しさん mailto:sage [2009/01/10(土) 12:12:23 ]
【 課題 】100マス計算をするプログラムを書いてください。
【 用語 】下記
【 期限 】1/15くらいまで
【 Ver  】
【 補足 】
プログラムがランダムに出題し、人間が100個の
マスに回答を入力し、確認ボタンを押すと
全問正解なら回答にかかった時間を表示して終了。
間違った場合は間違った場所にカーソルが止まり、
別の値が入力されるまで待ちます。
横10個、縦10個の数字は各々11〜99までの乱数、
演算は +,-,x のみでよいです。
よろしくおねがいします。


867 名前:863 [2009/01/11(日) 20:32:54 ]
>>865
以下のような設定は不可とのことです。

var days array[1..12] ofinteger;
var
:
:
begin
 days[1]:=31;days[2]:=29;...(同様に);days[12]:=31;

868 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 21:16:31 ]
>>863
で、どの課題が残ってるのかね?




869 名前:デフォルトの名無しさん mailto:sage [2009/01/12(月) 22:18:35 ]
program prog1(input, output);
var i ,x1,x2,x3,y1,m1,d1,y2,m2,d2: integer;

 function calcd(y,m,d:integer):integer;
 var i,leapday,years,days,mdays:integer;
 begin
  years := y-1;
  days := d;
  days := days + years * 365;
  days := days + trunc (years/4) - trunc (years/100) + trunc (years/400);
  if ( (y mod 4 =0) and (y mod 100 <>0) and (y mod 400 =0) ) then
    leapday := 1
  else
    leapday := 0;
  for i:=1 to m - 1 do begin
    case i of
     1,3,5,7,8,10,12 : mdays := 31;
     4,6,9,11 : mdays := 30;
     2 : mdays := 28 + leapday ;
    end;
    days := days + mdays;
  end;
calcd:=days;
 end;

begin
  writeln('next birthday'); write('year=');readln(y1); write('month=');readln(m1); write('day=');readln(d1);
  writeln('today'); write('year=');readln(y2); write('month=');readln(m2); write('day=');readln(d2);
  x1:=calcd(y1,m1,d1); x2:=calcd(y2,m2,d2); x3:=x1-x2;
  write('tanjobi made ',x3,' nichi');
end.

870 名前:デフォルトの名無しさん [2009/01/19(月) 02:10:07 ]
4行4列の行列の各要素を読み込み、ファイルへ行列形式で書き込ませるプログラムを作れ。

全然わかりません。お願いします。
火曜日までです。

871 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 02:16:16 ]
cat 行列1.txt > 行列2.txt



872 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 19:06:58 ]
ファイルの入出力関係って難しいよね

873 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 20:09:01 ]
高校数学では行列を教えなくなるらしいね。

874 名前:空落ち ◆SniperBHgo mailto:sage [2009/01/21(水) 20:17:38 ]
>>870
行列形式ってなんだろう

program Mat(input,output,ExtFile);
const
 COL = 4;
 ROW = 4;

type
 Matrix = packed array [1..COL,1..ROW] of integer;
 MatrixFile = file of Matrix;

var
 ExtFile : MatrixFile;
 i : 1..COL;
 j : 1..ROW;
 InputMatrix : Matrix;

begin
 rewrite( ExtFile, 'ExtFile' );
 for i := 1 to COL do begin
  for j := 1 to ROW do begin
   write( '[', i, ',', j, ']?:' );
   readln( InputMatrix[i,j] )
  end
 end;
 write( ExtFile, InputMatrix )
end.


875 名前:デフォルトの名無しさん [2009/01/27(火) 16:40:44 ]
Delphi6.0で
(1)2つの自然数nとmが与えられたとき、
nとmの最大公約数を出力するプログラムを書け。

(2)与えられた3×3行列の行列式を計算するプログラムを書け
(行列は2次元配列で表すこと。)

という課題はどうやってとけばいいのでしょうか?


876 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 18:36:09 ]
頭を使って解けばいいと思います

877 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 21:48:58 ]
頭じゃなくてDelphi6.0でって書いてあるのに・・・

878 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:31:19 ]
>>875
動作確認なんてしてないから間違ってたらすまん
改行大杉って怒られたんでつめて書く
type
  TMatrix3x3 = array[0..2][0..2]of Double;
function det3x3(Mat:TMatrix3x3):Double;
var
  i,j:Integer;
  hoge:Extended;
begin
  Result:=0;
//Plus
  for i:=0 to 2 do begin
    hoge:=1;


    for j:=0 to 2 do
      hoge:=hoge*Mat[j][(i+j)mod 3];

    Result:=Result+hoge;
  
end;
//Minus
  for i:=0 to 2 do begin
    hoge:=1;
    for j:=0 to 2 do
      
hoge:=hoge*Mat[j][(3+i-j)mod 3];
  
  Result:=Result-hoge;
  end;
end;

879 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 02:32:32 ]
我ながら改行とかインデント崩れすぎワロタ

880 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 08:59:15 ]
大丈夫、環境によってはキチンとインデントされて見えてるから。
半角2文字づつ綺麗にインデントされたやつが。

881 名前:デフォルトの名無しさん mailto:sage [2009/01/28(水) 10:09:12 ]
俺のとこもちゃんとなってるよ



882 名前:123 [2009/02/11(水) 17:58:34 ]
440!を881で割ったときの余りをRを求めよ。また、R2を881で割ったときの余りを求めよ。

883 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 01:16:47 ]
program prog1(input, output);
var i,ans:integer;
begin
ans := 1;
for i := 1 to 440 do
begin
ans := ans * i mod 881;
end;
writeln(ans);
readln;
end.


884 名前:123 [2009/02/12(木) 10:02:40 ]
さすがです!!!任務完了!

885 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:09:04 ]
[1] 授業単元:Pascal
[2] 問題文(含コード&リンク):
1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる
並べ方が全部で何通りあるかとその並びをすべて列挙する
[3] 環境:特になし
[4] 期限: 明日まで
[5] その他の制限:

534681297
685293714
948367125
153472869
426538971
261759483
817945632
379126548
792814356

886 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:25:52 ]
547 名前: デフォルトの名無しさん [sage] 投稿日: 2009/02/12(木) 17:07:40
Python の宿題ここで答えます Part 1
pc11.2ch.net/test/read.cgi/tech/1153585095/785
C/C++の宿題片付けます 122代目
pc11.2ch.net/test/read.cgi/tech/1232029287/542
Rubyの宿題教えてください。2限目
pc11.2ch.net/test/read.cgi/tech/1200175247/476

こんなんで数独の掲載料もらえるなら俺だって問題送りたい


887 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 20:40:20 ]
数独の条件はそれだけじゃないだろ。

888 名前:デフォルトの名無しさん mailto:sage [2009/02/15(日) 13:11:36 ]
課題が全部列挙だとするとマジキチなサイズのレポートが出来上がる






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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