Pascal の初心者用の ..
891:883
04/01/12 15:48
{待ち行列}
else begin
{途中放棄率?}
left:=data[i]*・・・;
data[i-1]:=data[i-1]-right+left;
temp:=right;
right:=data[i]*・・・;
data[i]:=data[i]+temp-left
end;
end
j:=j+1
{決められたステップ数まで}
until j=k;
for i:=1 to n do
writeln(i,'番目の定常値は',data[i]:5:10,'です。')
end.
待ち行列に用いて行列の定常値を求めるには
こんな感じにすればいいんでしょうか?
892:883
04/01/12 22:41
下の式を記述したいのですが
(AのN乗÷N!)÷(Σ AのX乗/X!)
X=0〜N
この式の左側は記述できたのですが
右側はどうやって記述したらいいのでしょうか?
893:デフォルトの名無しさん
04/01/12 22:48
まず数式読みづらい
あと0からってのがおかしいと思うが
0の階乗なんてないし
0で割ったらダメでしょ
括弧の結びどころがみにくい
Σ(A^X / X!)
こう解釈していいか?
Σの上下につく数字も明示してくれ
下手っぴでずれてもいいからさ
X=1からNまでってところか?
894:883
04/01/12 22:55
>>893
その解釈で大丈夫です。
Xは1からNまででした。
見にくい上にわかりにくくてすみませんでした
895:883
04/01/13 09:50
(A^N/N!)/(Σ(A^X)/) Xは1からNまで
type hako=array [1..100] of real;
hako2=array [1..100] of real;
hako3=array [1..100] of real;
var box:hako;
box2:hako2;
box3:hako3;
n,b,x,y,z,temp:integer;
ue,a,seki,total,kotae,goukei:real;
begin
write('Nは?');
readln(n);
write('Aは?');
readln(a);
seki:=1;
for b:=1 to n do begin
seki:=seki*a;
box[b]:=seki
end;
x:=0;
y:=1;
z:=0;
repeat
x:=x+1;
y:=y*x;
temp:=y;
z:=z+1;
box2[z]:=temp
until z=n;
ue:=seki/y;
896:デフォルトの名無しさん
04/01/13 09:50
for b:=1 to n do
box3[b]:=box[b]/box2[b];
total:=0;
for b:=1 to n do
total:=total+box3[b];
goukei:=total+1;
kotae:=ue/goukei;
writeln('求める値は',kotae:5:3,'です。')
end.
こんな感じであってますか?
897:883
04/01/13 09:54
問題は
(A^N/N!)/(Σ((A^X)/X!)) Xは1からNまでで
やっぱりX=0の時も値を求める必要があるみたいなので
1を加えてみたのですが、どうでしょうか?
898:デフォルトの名無しさん
04/01/13 18:17
X=0のときってのが意味わからん
899:883
04/01/15 10:56
Σ (nCm)*{a/(n-a)}^m m=1〜s-1まで
Σ {a/(n-a)}^m/(n-m)!*s^(m-s) m=s〜nまで
nCmはコンビネーションです。
a,n,sにはこちらから値を与えて解を求める問題なのですが
どう記述したらよろしいでしょうか?
お願いします
900:デフォルトの名無しさん
04/01/15 13:25
900
901:デフォルトの名無しさん
04/01/18 11:34
配列1に5個の数値が順番に1,2,3,4,5と入っているものを
配列2に5,4,3,2,1と入れ替えるにはどうしたらいいですか?
902:デフォルトの名無しさん
04/01/18 11:40
for i:=Low(array1) to High(array1) do
array2[i] := array1[High(array1) - i];
903:デフォルトの名無しさん
04/01/18 11:47
>>902
ありがとうございました
904:デフォルトの名無しさん
04/01/18 11:58
どういたまして
905:デフォルトの名無しさん
04/01/18 13:03
type box1=array [1..100] of longint;
box2=array [1..100] of longint;
var hako:box1;
hako2:box2;
i,n:integer;
p,q,r:real;
begin
p:=0;
q:=1;
r:=0;
repeat
p:=p+1;
q:=q*p;
r:=r+1;
hako[r]:=q
until r=10;
for i:=Low(hako) to High(hako) do
hako2[i]:=hako[High(hako)-i];
for n:=1 to 10 do
writeln(hako2[n])
end.
上のプログラムのようにリピートを用いた記述で
配列の入れ替えを行うと0しか戻ってこない場合はどうしたらいいですか?
906:レイホウ@6歳
04/01/18 13:10
until r=10;
これを
until r=100;
とやってみなさい
907:デフォルトの名無しさん
04/01/18 13:14
>>906
ありがとうございました。
908:レイホウ@6歳
04/01/18 13:23
うそだった
やってみたら
for n:=90 to 100 do writeln(hako2[n]);
こうだな
それか
box1=array [1..10] of longint;
box2=array [1..10] of longint;
↑これ
909:デフォルトの名無しさん
04/01/20 20:18
N!のような値の大きなものを求めるプログラムで
realで宣言すると100!の階乗でも求められるのに
配列(realで宣言)に入れてしまうとエラーが出てしまうのはなぜですか?
910:デフォルトの名無しさん
04/01/20 22:20
>>909
1) 配列は本当に実数型ですか?
2) 初期化していますか?
3) 小さな値(2!、3! など)でもそうなりますか?
911:デフォルトの名無しさん
04/01/21 00:19
エラーの内容を書けょ
コード書けょ
配列なのにhoge:=kaijou(100);
みたいなことやってるんじゃないの?
hoge[0]:=kaijou(100);
912:909
04/01/21 09:03
type box=array [1..100] of real;
var hako:box;
a,b,c,d:real;
begin
a:=0;
b:=1;
c:=0;
write('数値入力');
readln(d);
repeat
a:=a+1;
b:=b*a;
c:=c+1;
hako[c]:=b
until c=d;
writeln('答えは',hako[c],'です。')
end.
これで、
Error: Type mismatch
Error: Incompatible types: got "S64REAL" expected "LONGINT"というのが
hako[c]のところにでてしまいます
913:デフォルトの名無しさん
04/01/21 09:14
Type がミスマッチしてるんねん。
LONGINT を期待してはるのに S64REAL 型の変数がやってきたんや。
914:デフォルトの名無しさん
04/01/21 09:17
そんなときはキャスト、キャスト。
コンパイルエラーが出なくなるまでキャストし続ける。
何でもいいからよさそうな型でキャスト。
912 のコードなら
hako[ byte(c) ]:=b;
でどうだろう。
915:デフォルトの名無しさん
04/01/21 16:57
Cはカウンタだから整数型でいいんじゃないの?
var
a, b: real;
c, d: integer;
で。
916:デフォルトの名無しさん
04/01/25 11:59
質問です。
指数分布に従う乱数を発生させるにはどうしたらいいですか?
917:デフォルトの名無しさん
04/01/25 14:52
2,4,8,16...
ってことか?
いや、分布だから大きい数がめっちゃ出やすいってことか?
918:デフォルトの名無しさん
04/01/27 06:53
function Expondist : extended;
begin
Result := -Ln( Random );
end;
919:デフォルトの名無しさん
04/02/05 11:40
英単語をいくつか入力して、辞書みたいなアルファベット順に表示するにはどうすればいい?
アルファベット順にするのはソート関数でいいとして、文字列の配列(?)っていうのが分からない。
たとえばA[i](char)って配列を用意したとして、英単語を
my
may
と入力した場合は、
A[1]='m' A[2]='y' A[3]='m' A[4]='a' A[5]='y'
となるような気がするんですが、これじゃあソート出来ないですよね?
A[1]='my' A[2]='may'
として、さらに一文字ずつ比較していくにはどうすればいいですか?(分かりづらいとは思いますが)
920:デフォルトの名無しさん
04/02/05 11:42
使っている処理系の名前は?
array[1..100] of string;
って定義は可能?
921:デフォルトの名無しさん
04/02/05 11:54
SSH使って大学のにログインしてて、処理系は分かりません。
試しにやってみたら
warning: missing string capacity - assuming 255
と出ましたが、これ出てきても出来ます?
922:デフォルトの名無しさん
04/02/05 12:47
メモリーばか食いしてもいいのなら、
type Str255:string[255]
とか定義して、
array[1..100] of Str255
しちゃえば良いのでは?
(って、昔のマック風みたい)
923:デフォルトの名無しさん
04/02/05 13:23
いざとなれば別のコンパイラを使うことにして、定義はこれでやってみます。
でも今度は、stringで定義した文字列で、アルファベット順に順序を比較していく方法が分かりません。
924:デフォルトの名無しさん
04/02/05 14:00
文字列ではない、たとえば整数の配列のソートは出来ますか?
type
TargetType = array[1..100] of integer;
と定義しているとき、
procedure Sort( var TargetData : TargetType );
という関数を実装出来ますか?
これが出来るなら、文字列ソートも容易でしょう。
925:デフォルトの名無しさん
04/02/05 14:06
なんか文字と文字列がごちゃ混ぜになっているっぽいね。
「アルファベット順に順序を比較」ってことは、与えられた二つの文字列に順序をつける。
という操作と同義。
type
CompareResult = (sGREATER, sEQUAL, sLESS);
function CompareString( s1, s2 : string ) : CompareResult;
という関数を作り、任意の文字列間に順序を定める。
もし使っている処理系が文字列間比較をサポートしているのなら、
if s1 > s2
みたいに書いてしまえばよい。大きいか小さいか、等しいかの3通りあるので間違えないように。
文字列間比較をサポートしていない処理系の場合は「アルファベット順」の定義に基づき
一文字ずつ比較。
926:デフォルトの名無しさん
04/02/05 16:20
整数でのソートは出来ます。それの配列の型をintegerからstringに変えるだけで、英単語も整数と同様に並び変わるってことですね。
927:デフォルトの名無しさん
04/02/05 17:59
やってみたら出来ました。ありがとうございます。
928:デフォルトの名無しさん
04/02/06 13:56
Ord
929:げんげんげんげん
04/02/08 04:49
分布関数 F(x)=x^n(0<x<1)
をもつ乱数を発生させるプログラム誰か教えてください!!
お願いいたします。
930:デフォルトの名無しさん
04/02/08 13:46
nは定数?
Exp(x * Ln(n));
//n>0のときのみ
931:デフォルトの名無しさん
04/02/08 15:14
それじゃあx^nにならない?
932:デフォルトの名無しさん
04/02/08 15:15
↑は「それじゃあn^xにならない?」の間違い
933:デフォルトの名無しさん
04/02/08 16:32
そうなると思うならxとnを逆にしたらいいんじゃないかとか考えないのか
934:930.931
04/02/08 17:59
>>933
いや、俺は>>929じゃないから。
俺が>>933のように考えたとしても、何の意味もないじゃんか。
名前からしても別人である可能性が高いのに。釣りか?
935:デフォルトの名無しさん
04/02/08 23:29
>>934
なんか番号間違えまくってないか?
936:デフォルトの名無しさん
04/02/09 17:27
>>935
1つも間違ってない
937:930
04/02/09 17:38
930≠931ですが何か?
938:デフォルトの名無しさん
04/02/10 04:25
>>918 の回答じゃだめなのかなぁ?
939:デフォルトの名無しさん
04/03/10 14:34
スレリンク(tech板)
なんか、次スレたってるぞ
940:デフォルトの名無しさん
04/04/27 21:24
Pascal の言語仕様書(のようなもの)はどこかのサイトで閲覧できますか?
Pascal の言語が一通りわかれば良いのですが。
941:デフォルトの名無しさん
04/04/28 00:04
>>940
Pascalって言っても方言から拡張まで何でもありだから、対象の開発環境によってまるっきり違いそうな気がする。
それに言語仕様といっても厳密に書き出すと膨大な量になるから、あまりやっているところはないんじゃないかな。
一通りということなら、入門サイトでも見たらどうかな?
私は本(WirthのPascal本)から入ったのでサイトを紹介することはできないけど。
942:デフォルトの名無しさん
04/04/28 01:13
URLリンク(www.jisc.go.jp)
ここで検索すればJIS標準Pascalの仕様書がPDFで閲覧できるはず。
適当に弄ればPDFのDLもできる。
943:942
04/04/28 01:30
上のURLだと見れんみたい
トップページから「JIS検索」たどってくれ
944:デフォルトの名無しさん
04/04/28 13:51
とりあえずはANS/JISの標準化された古い仕様だけだよね。
その後のオブジェクト指向方面の拡張はAppleのとBorlandので違うもんねぇ。
gpcはBorlandに近いんだっけ?
945:デフォルトの名無しさん
04/04/29 05:02
>>941-944
どうもです。
いま直接関係しているのが Pascal の方言なので、サイトとかを見て回ってみます。
946:デフォルトの名無しさん
04/05/15 21:02
perlのハッシュのようにキーと要素を扱わせることは出来ないでしょうか?
iniファイルのようにキーがたびたび変更される場合を扱いたいのです
947:946
04/05/15 21:07
すいません・・・思いっきり上の方で連想配列の話題がありましたね
忘れてください
948:デフォルトの名無しさん
04/05/15 22:32
>>946
「キーがたびたび変更されるのでそれに対応する」んじゃなくて「キーがたびたび変更されないように(もしくは変更されても簡単に対応できるように)プログラミングする」のが良いと思う。
キーを作るプログラムが他のだと手の出しようもないけど、自分で作るのならデータ構成、プログラミングで対応できそうな気がする。
949:デフォルトの名無しさん
04/06/25 01:20
レベルの低い質問で申し訳ないんですけど
大学の授業で先週からpascalやってるんですけどわけがわからなくなってるんで
家でpascalの勉強をしたいんですけどどうすれば自宅のパソコンで使えるようになるんですか?
OSはウインドウズXPなんですけど。
CDとかで売ってたりするんですか?
>>1のサイトでダウンロードしてもインストールすることができないし
何をどうすれば自宅のパソコンでpascalが使えるようになるんですか?
950:デフォルトの名無しさん
04/06/25 02:49
>>949
大学の授業ってんならgnu-pascal(gpc)当たりが正当かと思うが、
borlandのサイトからdelphiの無償版が落とせる。
またFreePascal(fpc)というのも割りとメジャーだ。
URLリンク(www.freepascal.org)
URLリンク(www.jp.freepascal.org)
951:デフォルトの名無しさん
04/06/25 04:59
>>949
>>950が言う通りだと思うけど、その教授に自習したいから処理系教えれ!って聞くのがいいんじゃなかろうか?
学校のマシンが何かのUnix系の端末でgpcってオチが一番ありそうな気はするけども。
Cygwinあたりを突っ込んで(SFUとかU-WinとかMinGWとかでも構わんかもしれんけど)自力でgpcを入れるとかなのかな?
後、大学生なら
URLリンク(www.pascal-central.com)
あたりとりあえず眺めてみるのもお勉強になるかもね。
って、情報系でもなんでもなくてマジわけわかんね〜〜〜〜〜!!!とかだとこういう情報過多なサイトは遠慮しとくベキ?
952:デフォルトの名無しさん
04/06/25 08:03
>>949
Bloodshed Software - Dev-Pascal
URLリンク(www.bloodshed.net)
953:949
04/06/27 00:50
>>950-952
レスありがとうございます。
とりあえずFreePascal(fpc)というのを試してみます。
954:大学生
04/07/20 22:04
√cの近似値をニュートン法で求めるプログラムと、
二分法でfor文を使って求めるプログラム、
さらに二分法で求めたものを再帰的手続きにより求めるプログラムを
テストで出されるそうなのですが、まったくわかりません・・。
なんとか助けていただけないでしょうか??
よろしくお願いします!!!
955:デフォルトの名無しさん
04/07/20 23:44
車の運転ができない人に免許をとらせても世の中のためになりません。
以上
956:デフォルトの名無しさん
04/07/21 02:16
筆記試験か。すごいね。穴埋めになるのかな。
957:デフォルトの名無しさん
04/07/21 06:06
再帰的二分法。のアイデア。
function 再帰で開平を求める関数(c: real);
function 実際の再帰で開平を求める関数(範囲の最低値, 範囲の最高値: real);
var 二分点: real;
begin
二分点 := (範囲の最低地 + 範囲の最高値)/2;
if (二分点 * 二分点) < c then result := 実際の再帰で開平を求める関数(二分点, 範囲の最高値)
else (二分点 * 二分点) > c result := 実際の再帰で開平を求める関数(範囲の最低値, 二分点)
else result := 二分点;
end;
begin
実際の再帰開平を求める関数(0, c)// 初期値は 0 から c までとする。
end;
958:デフォルトの名無しさん
04/07/26 01:12
レポートが出たのですが、全く分かりません↓
LD A−Aをレジスターに格納する
ST A−レジスターの中身をAに格納
AD A−レジスターの中身とAを足して、レジスターに格納
SB A−レジスターの中身とAを足して、レジスターに格納
ML A−レジスターの中身とAを掛けて、レジスターに格納
DV A−レジスターの中身をAで割って、レジスターに格納
接尾辞表現で ABC*+DE-/(普通に書いたら(A+B*C)/(D-E))と入力して
上の指示表現を使って答えを解いていくための別のプログラムを書くとしたら
LD B
ML C
ST TEMP1
LD A
AD TEMP1
ST TEMP2
LD D
SB E
ST TEMP3
LD TEMP2
DV TEMP3
ST TEMP4
と表示できるようなプログラムをpascalで作りなさい。という内容です。
ヒント 式を順にスタックに入れていって、
最初のBC*はop2:=c;op1:=b;として、取り出していくそうです
人助けだと思ってお願いします(ToT)/~~~
959:デフォルトの名無しさん
04/07/26 08:07
オレニマカセロ!
とはいうものの、処理系手に入れるまで待ってね。
960:デフォルトの名無しさん
04/07/26 18:51
ずれてたらごめん
1→2→3→4→5→6→7→8→9→α→β→γ→δ
* + − /
A B C C X X Y D E E Z Z W
A B B A A Y D D Y Y
A A Y Y
4: (B * C -> X) => (LD B / ML C / ST TEMP1)
6: (A + X -> Y) => (LD A / AD TEMP1 / ST TEMP2)
α: (D - E -> Z) => (LD D / SB E / ST TEMP3)
γ: (Y / Z -> W) => (LD TEMP2 / DV TEMP3 / ST TEMP4)
961:デフォルトの名無しさん
04/07/27 14:16
どうもありがとうございました(*^_^*)頑張ってやってみます♪
962:デフォルトの名無しさん
04/08/09 10:05
現在、Pascalによるプログラムが実用されている所ってあるんですかね。
どっかの工場のPCで動いてるとか。
963:デフォルトの名無しさん
04/08/09 10:08
>>962
君の知らない「あそこ」で動いている。
秘主義務があるので具体的な内容は話せない。
964:デフォルトの名無しさん
04/08/09 19:37
URLリンク(matrixengine.jp)
これもPascalみたい。
体験版あるみたいなのでPascal詳しい人試してみて意見聞かせてほしいです。
965:デフォルトの名無しさん
04/08/09 23:36
> 当時は Borland(現 Inprise)の Turbo Pascal が人気のコンパイラでした。私も一時はそればかり使っていま
> した。しかし,世の中は ANSI C に移ろうとしていた頃です。私はまむしさんより一歩先に Turbo Pascal を捨
> てて Turbo C に移行しました。
URLリンク(oku.edu.mie-u.ac.jp)
966:デフォルトの名無しさん
04/08/19 22:39
>>962
私はngraphを現役で使っています。
967:デフォルトの名無しさん
04/08/20 07:21
>>966
研究室のMS-DOS機ですか?
968:966
04/08/21 22:50
一応Win95が動いているマシンです。
あとアドインプログラム書くのでコンパイラも時々動かしてます。
969:デフォルトの名無しさん
04/08/22 03:48
大学院入試のアルゴリズムとデータ構造でPascalで書かれた問題があるのですが、
Pascalは詳しくやってないのでよくわかりません。二分探索木の問題で
type tree = @node;
node = record;
element:integer;
left,right:tree;
end;
で2分木のデータ型treeを定義しているのですが、これはC言語で書くと
struct node{
int element;
struct node *right,*left;
};
struct node *tree;
といった感じのイメージでいいのでしょうか(Cの方の文法も間違ってるかも…)。
970:デフォルトの名無しさん
04/08/22 03:50
>>969
あ、Pascalの方の2行目recordと4行目treeの後ろにセミコロン;はありませんでした。
すみません。
971:デフォルトの名無しさん
04/08/22 03:51
あってるよ
972:デフォルトの名無しさん
04/08/22 03:57
ありがとうございます。ここでtree型の変数pのelementの部分にアクセスするためには
Pascalではどう書けばいいのでしょうか?
973:デフォルトの名無しさん
04/08/22 04:09
あ、あと問題の一部に(pはtree、xはintegerです)
if p=nil then begin
new(p);
with p do begin
(穴埋問題) :=x;
left :=nil;right :=nil;
end
end
ってのがあったんですが、with p って何ですか?
974:デフォルトの名無しさん
04/08/22 08:42
>>972-973
pがtree型ならそいつの指すnode型のブツをゲットする必要があるから例えば
p^.element
だな。Cの
(*p).element
に相当する書き方。
withの意味は自分で調べれよ。それで分からないところだけ質問しる。
ところで、そこの「with p」は「with p^」 が正しいと思うがどうか。
975:969=970=972=973
04/08/22 15:44
>>974
ありがとうございます。問題文を見直した所、with p と書かれています。問題の間違いですかね?
with文についてググったのですが
「Pascalでレコードのメンバーを扱うには「レコード名.メンバー名」という書式を使うが、
レコード名をある程度省略する方法がある。それにwithを使う。
withの内部では「メンバー名」を書くだけで、そのレコードのメンバーが参照できる。」とありました。
例えば穴埋問題の部分には(p^)のelementメンバにxを代入したいわけですが、
ここは「(p^).」を付けずに element := x; と書ける、ということですか?
書けるとしたら、p^.elementと書くのは間違いとなるのでしょうか?
976:上とは別人
04/08/22 16:42
>>969 のtype tree = @node;は、type tree = ^node; じゃないのかなあ…まあ、Pascalも方言多いから何とも言えんけど
with p or with p^も、Delphiなんかじゃrecordへのポインタに直接"."を続けられるから間違いとも言い切れ無さげ…
あと、withは、名前を探す順番を変えるだけなので、p^.elementももちろん書ける…私の知ってるPascalであれば…
977:デフォルトの名無しさん
04/08/22 17:08
>>976
ありがとうございました。
@については、ここ数年分見ましたが、同様の問題では全て@node;のような書き方をしていました。
別な方言なんでしょうね。
978:デフォルトの名無しさん
04/08/25 10:56
>>976
PASCALのJIS規格では「@」は「^」の代替表現なので、とりあえず
どっちで書いても同じです。Delphiでは意味が違いますが。
「with p」は規格としては「with p^」でないとまずいでしょう。
もちろん「with p」と書ける処理系は存在するかもしれませんが,
すくなくとも GNU Pascal ではだめでした。
979:デフォルトの名無しさん
04/08/31 03:47
スレさようなら
980:デフォルトの名無しさん
04/08/31 03:51
980!
981:デフォルトの名無しさん
04/08/31 14:51
落ち
982:デフォルトの名無しさん
04/08/31 22:42
夏とともに、さよなら・・・。
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
5393日前に更新/272 KB
担当:undef