Pascalの宿題は俺にやらせろ!!Part1
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG■丸投げOK
■全く分かってない阿呆も放置しないで優しく対応
■他言語はよそ逝け( ゚Д゚)ゴルァ
■DelphiもTurbo Pascalも完全対応
【本家】
http://www.borland.co.jp/delphi/
【関連スレ】
くだすれDelphi(超初心者用)その15
http://pc5.2ch.net/test/read.cgi/tech/1087823906/l50
Pascal の初心者用の質問・相談所
http://pc5.2ch.net/test/read.cgi/tech/1009903617/l50
【Delphi初心者】今から始めるDelphi Part01
http://pc5.2ch.net/test/read.cgi/tech/1062422335/l50
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG面倒なので、FreePascalは関連スレのどこか逝け。
0005デフォルトの名無しさん
NGNG今時 Pascal の宿題なんてあるの?
0006デフォルトの名無しさん
NGNGあるとこはあるみたいだな。
0007デフォルトの名無しさん
NGNG******Programming Language Pascal******
http://pc5.2ch.net/test/read.cgi/tech/1078885169/l50
0008デフォルトの名無しさん
NGNGスモス
0009デフォルトの名無しさん
NGNG0010デフォルトの名無しさん
NGNGチャットじゃないんだから書くだけ書いとけば?
0011デフォルトの名無しさん
NGNG�@ 各要素にデータを格納する。
�A 配列CTabの要素の合計と平均(小数第1位まで)、最大値と最小値を求めて表示する。
※配列要素の数は、定数Constでnに適当な値を設定できるようにすること。
※プログラムは「終わりますか?」と表示して「y」を入力したらプログラムを終了するように繰り返すこと。
0013デフォルトの名無しさん
NGNGn = ...;
var
CTab : array [1..n] of interger;
begin
repeat
kakunou;
hyouji;
until owarimasuka;
end.
0015デフォルトの名無しさん
NGNGn = ...;
var
CTab : array [1..n] of interger;
begin
Nis?
repeat
kakunou;
hyouji;
until owarimasuka;
end.
0017デフォルトの名無しさん
NGNGこれが何故ふざけてるよう見えるんだよヽ(`Д´)ノ
思いっきり答えじゃん
後>>13と>>15は別人
001811
NGNG入れても起動しないのですが・・・
まず最大値と最小値を求めるプログラム入ってませんよね・・・
あとowarimasukaとか定義されてないのにuntilの後に入ってますし・・・
あとPascalで?とか使うの初めてみたのですが・・・
001911
NGNG0020デフォルトの名無しさん
NGNG0022デフォルトの名無しさん
NGNG起動するわけないぽ・・・
0024デフォルトの名無しさん
NGNGキーボードから入力させる方法はわかる?
0026デフォルトの名無しさん
NGNGvar
i : integer;
begin
for i := 1 to n do
...;
end;
0028デフォルトの名無しさん
NGNGとりあえず、いいところか知らんが
http://or-lab.asahi-u.ac.jp/intro_to_delphi/default.htm
http://www.geocities.co.jp/SiliconValley-SanJose/2560/delphi4/beginner/tutor.htm
0031デフォルトの名無しさん
NGNGPascalさわり始めて何週間でつか?
0032デフォルトの名無しさん
NGNG2chチェックしてる暇あったら勉強しろ!
条件分岐と繰り返しだけなら数時間で身につく
そして、それだけで問題とける
003311
NGNG触り始めたのは2ヶ月前です。
授業でもやりましたが、何度か欠席してしまいまして・・・
あと、人のせいにするのも何ですが・・・
うちの教授教えるの下手くそなんです・・・。
課題はあさってには提出しないといけないし・・・
あとこれ含めて3問もあるんですよ(泣)
今から勉強したら間に合わないし・・・
上の関連スレのとこにある。くだスレで1つ教えて貰って
今日やっといろいろ調べて1個完成したんです;;
0034デフォルトの名無しさん
NGNGあれ完成したんだったらこの問題も応用だよ
0037デフォルトの名無しさん
NGNGn = ...;
var
i : integer;
CTab : array [1..n] of interger;
begin
ユーザーにNの値を決めさせる
for i := 0 to n do
begin
入力させる
入力された値を CTab[i] に格納
”終わりますか?”と表示
入力させてyならループから脱出
end;
結果表示
end.
0039デフォルトの名無しさん
NGNG答え丸投げしてもらったほうが楽なんだろうけど、
今の段階では時間がかかってもいいから聞きながらやったほうがいいよ
まあガンガレ
004111
NGNG0042デフォルトの名無しさん
NGNG004311
NGNGconst= ...;
var
i:integer;
CTab : array [1..n] of string;
{一時停止用変数}
x:string;
begin
writeln;
write('値を決めて下さい====>');
writeln;
for i := 0 to n do
begin
CTab[i]:='格納';
ここまで出来ましたがどうでしょうか?
0044デフォルトの名無しさん
NGNG根本から間違えてるぞ
0045デフォルトの名無しさん
NGNGこの手のスレで教育するとは、教えてる人偉いよ。マジで。
漏れなら即丸投げだな。
0046デフォルトの名無しさん
NGNGたぶんそれ以前の問題だ。超基本だぞ。
>>32のいうとおり真面目に勉強すれよ。
丸投げ希望になったらそう書け。
0047デフォルトの名無しさん
NGNG明日の夜までは丸投げなしの方向でがんばれ
0050デフォルトの名無しさん
NGNGwriteln;
write('値を決めて下さい====>');
writeln
この後にユーザーにNの値を入力させないと
005111
NGNG0053デフォルトの名無しさん
NGNG>※配列要素の数は、定数Constでnに適当な値を設定できるようにすること。
読み込み先は i じゃなくてnだよ
このプログラムはnに入力された回数だけループする
005411
NGNG[エラー] s4.dpr(13): 未定義の識別子 : 'n'
[エラー] s4.dpr(21): Read/Readln 文に正しくない型が渡されました
[エラー] s4.dpr(24): 'Integer' と 'Array' には互換性がありません
[エラー] s4.dpr(31): 'END' が必要な場所に 'UNTIL' があります
[エラー] s4.dpr(32): 'UNTIL' が必要な場所に 'END' があります
0055デフォルトの名無しさん
NGNG>>37のuntil使わないほうが楽だよ
とりあえず途中まで書いてみるわ
0056デフォルトの名無しさん
NGNGconst
n = 0;
var
i: integer;
CTab: array [1..n] of string;
s: string;
begin
write('繰り返し回数を決めて下さい');
readln(n);
for i := 1 to n do //n回繰り返す。nが10なら10回
begin
readln(CTab[i]); // i の値は1回目のループ時は1、10回目なら10
write('終了しますか? [Y]');
readln(s); //とりあえずsに入れる
if s = 'y' then break; //sの中身が'y'ならループから脱出
end;
ここで最大値とか平均とか表示
end;
005711
NGNG�@ 各配列要素に数値データを格納する。
�A 並べ替える前の要素を横一列に表示する。
�B 配列STabの要素を値の小さい順(昇順:Ascending)に並べ替える。
�C 並べ替えた後の要素を横一列に表示する。
配列STab �@の実行後
3 37 947・・・・・・・・2 16
STab(1) STab(2) STab(3) STab(4) ・・・・・・・・・ STab(19) STab(20)
配列Stab �Bの実行後
2 3 916・・・・・・・・37 47
STab(1) STab(2) STab(3) STab(4) ・・・・・・・・・ STab(19) STab(20)
★並べ換えは、つぎのようにして行なう。
�@1番目の要素から20番目の要素のうちで最も小さいものを選び、これを1番目におく。
�A2番目の要素から20番目の要素のうちで最も小さいものを選び、これを2番目におく。
�B3番目から20番目まで、4番目から20番目まで・・・と同じよう行う。
�C19番目と20番目で小さい方を19番目の要素におくと、並べ換えは終了である。
★プログラミングは、まず要素の数が20の配列に整数値を入力して、20個格納してから上に示した方法で並べかえる。
並べ換えた結果は、横一列に表示する。
0060デフォルトの名無しさん
NGNGやってみるけどブサイクなプログラムになりそうなのでageてみる(;´Д`)
キレイにかける人よろ
0061デフォルトの名無しさん
NGNG手元でトランプでも並び替えてみて、何が必要か考えるがよろし
006211
NGNGこれはもう・・・初心者にやらせるのは間違ってると思いまつ。
あとでつね、私の習った範囲ではブサイクなプログラムの方が提出しやすいでつ。
どうもありがとうございますm(_ _)m
006311
NGNGn = 0;
var
i,min,max:integer;
CTab: array [1..n] of string;
s: string;
{一時停止用変数}
x:string;
begin
max:=0;
min:=i;
write('繰り返し回数を決めて下さい');
readln(n);
for i := 1 to n do
begin
readln(CTab[i]);
write('終了しますか?する場合は【y】と入力して下さい');
readln(s);
if s = 'y' then break;
end;
006411
NGNGif(max<n) then max:=n
else
if(min>n) then min:=n;
end;
writeln('最大値=',max,'最小値=',min,');
【エラー】
[エラー] s4.dpr(13): 下限値が上限値を超えています
[エラー] s4.dpr(23): 代入できない左辺値です
[ヒント] s4.dpr(24): 一度も実行されない for/while ループがあります - 削除しました
[エラー] s4.dpr(41): 文字列が正しく終わっていません
[エラー] s4.dpr(43): ',' または ')' が必要な場所に 識別子 'writeln' があります
006511
NGNG0066デフォルトの名無しさん
NGNG006711
NGNG0068デフォルトの名無しさん
NGNGつまり
>※配列要素の数は、定数Constでnに適当な値を設定できるようにすること。
ってのは、
const n = 0;
のところを、後からそこだけ5でも10でも100でも適当に変えても動くようにしろって事と思われるのです。
007011
NGNG3 37 9 47 ・・・・・・・・ 2 16
STab(1) STab(2) STab(3) STab(4) ・・・・・・・・・ STab(19) STab(20)
配列Stab �Bの実行後
2 3 9 16 ・・・・・・・・ 37 47
STab(1) STab(2) STab(3) STab(4) ・・・・・・・・・ STab(19) STab(20)
>>57
の訂正です。
007111
NGNGn = 0;
var
i,min,max:integer;
CTab: array [1..n] of string;
s: string;
{一時停止用変数}
x:string;
007211
NGNGmax:=0;
min:=i;
write('繰り返し回数を決めて下さい');
readln(n);
for i := 1 to n do
begin
readln(CTab[i]);
write('終了しますか?する場合は【y】と入力して下さい');
readln(s);
if s = 'y'
then break;
end;
begin
if(max<i)
then
max:=i
else
if(min>i)
then
min:=i;
end;
writeln('最大値=',max,'最小値=',min,');
007311
NGNG[エラー] s4.dpr(23): 代入できない左辺値です
[ヒント] s4.dpr(24): 一度も実行されない for/while ループがあります - 削除しました
[エラー] s4.dpr(41): 文字列が正しく終わっていません
[エラー] s4.dpr(43): ',' または ')' が必要な場所に 識別子 'writeln' があります
少し訂正しましたが、まだエラーが・・・
このエラーがどうしても直せません・・・
0074デフォルトの名無しさん
NGNGまず、
>[エラー] s4.dpr(13): 下限値が上限値を超えています
は
>CTab: array [1..n] of string;
でしょ?行番号の対応わかりませんけど。
複数の値を入力させて配列に記録するという課題の性質上、n = 0ってのがまずありえない。
Pascalの配列として考えても、n = 0なら[1..0]になるわけで、これもありえない。
よってconst n = 0; を、適当な正の値にしとく。
そうすればエラーメッセージは減るだろうから、もうちょい自分の手を動かしてみた方がいいでしょ。
007611
NGNG[エラー] s4.dpr(41): 文字列が正しく終わっていません
[エラー] s4.dpr(43): ',' または ')' が必要な場所に 識別子 'writeln' があります
ですね。
代入できない左辺値・・・
007756
NGNGminの後ろの ' これ削除'
007911
NGNG[エラー] s4.dpr(41): 式 が必要な場所に ')' があります
0080デフォルトの名無しさん
NGNG>>68の意味もわかってもらえると思うのですが
0082デフォルトの名無しさん
NGNGvar
STab: array[0..19]of integer;
i, m, iValue, index: integer;
begin
for i:=Low(STab) to High(STab) do Readln(STab[i]); // 入力受け付け
for i:=Low(STab) to High(STab) do Write(Stab[i],#9); //要素表示
Writeln;
for i:=Low(STab) to High(STab) do //ソート
begin
iValue:= STab[i];
index:= i;
for m:=i+1 to High(STab) do
if STab[m] < iValue then
begin
iValue:= STab[m];
index:= m;
end;
STab[index]:= STab[i];
STab[i]:= iValue;
end;
for i:=Low(STab) to High(STab) do Write(Stab[i],#9); //要素表示
Writeln;
Readln; //(入力確認用)
0083デフォルトの名無しさん
NGNGwriteln('最大値=',max,'最小値=',min,');
minの後ろ ","削除
エラーが出たなら")"の近辺見直すくらいしようや。
あとmaxとminは関数名だから別の名前のほうがいいと思われ。
0084デフォルトの名無しさん
NGNGconst
n = 3;
var
CTab: array[1..n]of integer;
Sum_i, Max_i, Min_i, i: integer;
C: Char;
begin
Sum_i:= 0;
Max_i:= Low(integer);
Min_i:= Maxint;
for i:=1 to n do
begin
Write('整数入力');
Readln(CTab[i]);
Inc(Sum_i, CTab[i]);
if Max_i < CTab[i] then Max_i:= CTab[i];
if Min_i > CTab[i] then Min_i:= CTab[i];
Writeln('Sum: ',Sum_i);
Writeln('Ave: ',Sum_i /i :1:1);
Writeln('Max: ',Max_i);
Writeln('Min: ',Min_i);
Write('終わりますか?');
Readln(C);
if C = 'y' then break;
end;
0085デフォルトの名無しさん
NGNGかわいそうすぎるぞ>>11
0087デフォルトの名無しさん
NGNG0088デフォルトの名無しさん
NGNGま、あれはあれでそのまま動くものでしたが。
0089デフォルトの名無しさん
NGNGpascalでお願いします。
0090デフォルトの名無しさん
NGNGhttp://www.math.kobe-u.ac.jp/~taka/asir-book-html/main/node35.html
0092デフォルトの名無しさん
NGNGport[$40]:=$01;
これは実行結果OKで、出力ポートの最下位ビットがHになりました。
次に、
port[$42]:=s;
writeln(s);
で、CRT画面にport42Hの状態を画面表示できると考えているのですが
実行した結果は、そうなってないような感じです。
書式が根本的に間違っているのでしょうか?
Turbo Pascalのバージョンは98版6.0です。
宜しくご教授のほどお願いします。
0093デフォルトの名無しさん
NGNG>port[$42]:=s;
s := port[$42] ではないの?
0094デフォルトの名無しさん
NGNGすんません、あとで気が付いて直したらOKでした。(^^+
0095デフォルトの名無しさん
NGNG0096デフォルトの名無しさん
NGNGwriteln('ねこみみ、かわいい??!');
end.
0097デフォルトの名無しさん
NGNGprogram;(imput,output)
begin
end.
とやって他には何をいれればエラーが出ないようになります?
0098デフォルトの名無しさん
NGNGbegin
end.
じゃないか?
Delphiなら begin end. だけでも通るけどさ
009997
NGNGは入れる必要ってあります?
あとwriteとwritelnのちがいを教えてください。
0100デフォルトの名無しさん
NGNG大抵の処理系では(input,output)は単に無視されるので無くてもいいかな
writelnはwriteに加えて改行する
0101デフォルトの名無しさん
NGNG入出力が無いなら(input,output)は不要なはず。
出力だけのプログラムの場合、(output)だけの
こともあ。
0102101
NGNG出力だけのプログラムの場合、(output)だけの
こともある。
と書くつもりだった。
>>100
仕様で「ファイル名なんかの受け渡しを、この
パラメータを介して行う」となっているから、その
処理系は正しく実装しているのかも。
BNFでは
<プログラムの頭書き> ::= program <名前>
( <ファイル名> {, <ファイル名> } );
って書いてある。
0104デフォルトの名無しさん
NGNG0105デフォルトの名無しさん
NGNG案1:絶対値の小さい順に足す。
案2:足したけど足せなかった分を管理する。
『アルゴリズム辞典』のPascal版、C言語版、Java版どの本でも載ってたはず。
0106デフォルトの名無しさん
NGNG0107デフォルトの名無しさん
NGNGまずは面倒ですがmodを駆使してそれぞれの桁の数字を取り出し、
それぞれをif (1keta = '1') then arry[1] = '1';
を延々と繰り返すのですが、
ここでは
if (1keta = '1') then arry[1] = '1'
else if (1keta = '2') then arry[1] = '2'
else if (1keta = '3') then arry[1] = '3'
以下略 のようにelse ifの方が演算コストは少ないですが
case文と比べるとどちらのほうが早いのでしょうか。
case文、switch文はジャンプアドレス表というものを使い
ifとは異なり一気に飛べる分にコストが低いと聞きました。
if文を使うとしたらクイックソートのように
5以上→7以上→9か8か7か
→6か5か
5未満→3以上か→4か3か
→2か1か0か
とするつもりです。
単純に0から順に調べると平均比較回数が5.5で、上記では3.6となるようです。
0108107
NGNG先回りして答えますと、
プログラム自体は単純なradixソートを1万個の数に対して行う事なので
integerをstringに変える部分のコストがどうしても無視できないのです。
今までもifにしようかcaseにしようか何度も迷ってきたので
後学のためにも、きちんと理解しておきたいなとも思いますです。
0109デフォルトの名無しさん
NGNGChr(Ord('0') + n)でいいじゃん
数字が文字コード上で並んでいることが前提だけど、そうじゃない文字コード体系なんてあるまい
0110105
NGNGアルファベットは保障されてないけど。
>>107
一桁ずつ数値のまま比較するのは×なの?
0111デフォルトの名無しさん
NGNG0112デフォルトの名無しさん
NGNG0113デフォルトの名無しさん
NGNGJensen and Wirth を書きうつせばいい?
0114デフォルトの名無しさん
NGNG0115デフォルトの名無しさん
NGNG98465 mod 100= 65
65 div 10 =6
65 mod 10 =5
0116デフォルトの名無しさん
NGNG俺ハケーン!
0117デフォルトの名無しさん
NGNG(課題)
入力されたn個の数を大きい順に並び替えるプログラムを作れ。
(他のスレにも書き込んだけどまだわからなかったので)
0118デフォルトの名無しさん
NGNG0119デフォルトの名無しさん
NGNG0120デフォルトの名無しさん
NGNGあとはn個だけに対応するように書き換えればいいでしょう。
procedure SelectionSort(var List: array of integer);
var
i, m, u_value, u_index, ListHigh: integer;
begin
ListHigh:= High(List);
for i:=Low(List) to ListHigh-1 do
begin
u_value:= List[i];
u_index:= i;
for m:=i+1 to ListHigh do
begin
if List[m] < u_value then
begin
u_value:= List[m];
u_index:= m;
end;
end;
List[u_index]:= List[i];
List[i]:= u_value;
end;
end;
0121デフォルトの名無しさん
NGNG計算値を出力する電卓のプログラムを作成せよ。
ただし、 低機能な電卓と同様に 演算子 *, / と +, - の優先順位は対等とする。
また、/ は整数除算の演算子とし、 余分な空白などの不正な入力に対して配慮する必要はない。
なお、 読み込んだ値を計算式内で直接利用するために、
手続き read で読み込んだ整数値を関数値として返す関数 getnumber を作成し、
これを利用したプログラムとすること。
た す け て
た す け て
0122デフォルトの名無しさん
NGNG0123デフォルトの名無しさん
NGNG@chara2 = <IN>;
close(IN);
open(IN,"./kati/w_ranking.cgi")
@wrank = <IN>;
close(IN);
この文おかしいですか?
0124デフォルトの名無しさん
NGNGあなたはそれがPascalだとでも言い張るのですか?
0125デフォルトの名無しさん
NGNG他にどこに書いてある?
0126デフォルトの名無しさん
NGNGほれ。GetNumberは手続きだったりするがね(w
>ttp://www.ced.is.utsunomiya-u.ac.jp/lecture/2004/prog/p3/kadai2/enshu2-2003/prog/calc.p
0127デフォルトの名無しさん
NGNGMemoに各行に入力された数値から平均値、最大値、最小値、標準偏差
をlabelに表示する。
標準偏差はarrayで宣言し配列を使った各データと平均値との偏差から計算した標準偏差と
データの和をデータ数で割って平均値を求め、分散の計算をし、平方根によって求めた2通り
表示する
おねがいします
X,M,SumX,SumX2,MinX,MaxX:single;
I,N:integer;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
N:= Memo1.Lines.Count;
X:= StrToFloat(Memo1.Lines[I]);
for I:= 0 to N-1 do
M:=X/(N-1)
Label1.Caption:='平均値は'+IntToStr(X) ;
ここまでできたんですが間違い直しもかねておねがいします
0128デフォルトの名無しさん
NGNGMeanAndStdDev手続きのソース見てみな。
・・・もっともキミのコード見るとそれ以前の問題のような気もするが。
MeanAndStdDev手続き
MeanAndStdDev は,配列要素の平均と標準偏差を計算します。
0129デフォルトの名無しさん
NGNGその二つのグループができるだけ等しくなるよう
にするプログラムを書け
0130デフォルトの名無しさん
NGNG命令されてまでやりたくない
0131デフォルトの名無しさん
NGNG理不尽なことに宿題はたいてい命令口調で書かれています
0132デフォルトの名無しさん
NGNG0134デフォルトの名無しさん
NGNG0135デフォルトの名無しさん
NGNG0136初心者です
NGNG私が調べた限りではサイエンス社からいくつか出版されています。
どうでしょうか?
0137デフォルトの名無しさん
NGNGこんなもんで、どうでしょう?
program prg00(Output);
var
N: Integer;
e: array [2..17] of Real;
f: array [1..17] of Integer;
sumM,sumH,sum: Real;
procedure Print;
var
I: Integer;
begin
for I := 2 to 17 do
Write(Output, f[I]:2);
Writeln(Output, sumM)
end;
begin
sumM := 0.0;
f[1] := 1;
for N := 2 to 17 do
begin
e[N] := Sqrt(N);
sumM := sumM + e[N];
f[N] := 0
end;
つづく
0138デフォルトの名無しさん
NGNGN := 2;
while N >= 2 do
begin
if f[N] = 0 then
begin
f[N] := 1;
sum := sum + e[N];
if sum >= sumH then
begin
if sum < sumM then
begin
sumM := sum;
end
end
else
if N < 17 then
N := N + 1
end
else
つづく
0139デフォルトの名無しさん
NGNGf[N] := 0;
sum := sum - e[N];
if N < 17 then
N := N + 1
else
while f[N] = 0 do
N := N - 1
end
end
end.
0140デフォルトの名無しさん
NGNGあと、e[N] は N が増えると大きくなるんだから、その辺の探索も
カットできるな。
それ直せばいけるんじゃない?
0141デフォルトの名無しさん
NGNG↑これの読み方教えて
0142デフォルトの名無しさん
NGNGめだか
0143デフォルトの名無しさん
NGNG定義する
0144デフォルトの名無しさん
NGNGあさいんめんとおぺれーたー、とかだった気がする
0145デフォルトの名無しさん
NGNG0146m(__)m
NGNGという課題を出されたのです。
3時間考えてもわからなかったので助けてください。
0147m(__)m
NGNG及び最大値、最小値を求めて表示するプログラムを作れ。
という課題がでました。
助けてください
0148デフォルトの名無しさん
NGNGPascalの宿題は俺にやらせろ!!Part1
Pascalの宿題は俺にやらせろ!!Part1
0149デフォルトの名無しさん
NGNGアルファベットの大文字を入力して小文字を出力したいのですが
アイディアだけでも教えてください
0150デフォルトの名無しさん
NGNG0151デフォルトの名無しさん
NGNG勉強しなおしてきます
0152デフォルトの名無しさん
NGNGかぎらないので、ちょいむずかしい。表を使って
program Locase(input,output);
const MaxChar = 255;
var C : Char; I : Integer;
table : array [Char] of Char;
High, Low : packed array [1..26] of Char;
begin
High := 'ABCDEFGHIJLMNOPQRSTUVWXYZ';
Low := 'abcdefghijlmnopqrstuvwxyz';
for C := Chr(0) to Chr(MaxChar) do table[C] := C;
for I := 1 to 26 do table[High[I]] := Low[I];
while not Eof do begin
if Eoln then begin
Readln; Writeln
end else begin
Read(C); Write(table[C])
end
end
end.
のようにする。ただし
1. Charが8ビットでない場合はMaxCharを適当に直すこと。
2. 入力が改行で終わっていない場合はおかしくなるかもしれない。
3. DelphiではHigh/Lowの型をstringにしないとエラーになる。
0153デフォルトの名無しさん
NGNG0154デフォルトの名無しさん
NGNGほかで質問したか?
っていうか、Cの入門書読めば配列の説明に解説つきでありそうだが。
たった3時間でくじけるな。
0155デフォルトの名無しさん
NGNGでもテンプレ無視の理解不能質問で見捨てられたみたい。
0156デフォルトの名無しさん
05/01/17 00:50:07作ってもらえませんか?
0157デフォルトの名無しさん
05/01/17 02:48:41・フォームにImageコンポーネントを貼りつけそこに読み込む
・完成
0158117
05/01/17 16:50:05これだと駄目みたいでした↓↓
0159デフォルトの名無しさん
05/01/18 20:55:420160デフォルトの名無しさん
05/01/18 23:09:420161デフォルトの名無しさん
05/01/20 12:43:180162デフォルトの名無しさん
05/01/20 13:38:25#スレ違い申し訳無い。
0163デフォルトの名無しさん
05/01/20 19:23:30クイックソートは分割統治法を利用した再帰アルゴリズムです。
アルゴリズムを勉強しましょう!
おすすめ本
Delphiアルゴルズム
ISBN4−7973−0845−1
クイックソートの解説もソース付きで載ってるよ。
6年前の本だけどまだ売ってるのかな?
0164デフォルトの名無しさん
05/01/20 20:12:14全体をある値以上と以下に分けて、そのそれぞれをある値以上と以下に〜繰り返し。
0165デフォルトの名無しさん
05/01/21 11:17:58Delphiでコンパイルできないように整合配列使って書いてみたが、ぜんぜん
おもしろくなかったのでやめた。
0166デフォルトの名無しさん
05/01/24 23:02:11ただし点数の低い人のデータから入力するものとする。
program ex(input,output);
type name_p=^person;
person=record
name:string[20];
test:integer;
ptr:name_p
end;
var start,refer:name_p;
datn:string[20];
dat:integer;
{1人分のデータ(点数、名前)を読み込み、点数が低い順に並ぶようにそのデータを挿入する手続き}
procedure insert;
0167デフォルトの名無しさん
05/01/24 23:02:52begin
{初期設定}
new(start);
refer:=start;
{リスト構造の作成}
write('input name:'); readln(datn);
refer^.name:=datn;
while datn<>'end' do begin
write('input test:'); readln(dat);
refer^.test:=dat;
new(refer^.ptr);
refer:=refer^.ptr;
write('input name:'); readln(datn);
refer^.name:=datn
end;
refer^.ptr:=nil; refer^.test:=10000;
{データの挿入}
insert;
{データの出力}
refer:=start;
writeln;
while refer^.ptr<>nil do begin
writeln(refer^.name,':',refer^.test);
refer:=refer^.ptr
end;
writeln
end.
0168166-167
05/01/24 23:03:29これ、どなたかできますか?いろいろやったんですが上書きになったりして
できません(泣)助けてください。
0169デフォルトの名無しさん
05/01/25 04:32:26最後の要素に10000を入れているということは、ほかの要素は10000
未満であると仮定していいのかな?
ポイントは(1)リストの先頭に挿入するときに厄介な事にならないように最初の
要素をダミーにしておくと楽(2)ポインタをつなぎかえる前に元の値を保存して
おく、くらい。
procedure insert;
var p, pptr, s, sorted: name_p;
begin
new(sorted);
sorted^.ptr := refer; { 番人 }
p := start;
while p^.ptr <> nil do begin
s := sorted;
while s^.ptr^.test < p^.test do s := s^.ptr;
pptr := p^.ptr; { 保存して }
p^.ptr := s^.ptr; s^.ptr := p; { つなぎかえて }
p := pptr { つぎへ }
end;
start := sorted^.ptr;
dispose(sorted)
end;
0170168
05/01/25 07:29:13ご丁寧にありがとうございます。
ただ、ちょっと説明が足りなかったかもしれません。
問題冒頭にあるように始めから、点数は低い順に並んでいるので
ソートでは無く、挿入なのです。
つまり以下のような文を手続き中に入れることになります。
write('input 挿入name:'); readln(newdatn);
write('input 挿入test:'); readln(newdat);
これを、順番を崩さないように挿入するということです。
分かりますでしょうか?m(_ _)m
0171デフォルトの名無しさん
05/01/25 09:40:10う、そんなに簡単な問題だとはおもわなかった。
var s, p: name_p;
としておいて
p^.name := newdatn; p^.test := newdat;
if newdat < start^.test then begin
p^.ptr := start; start := p
end else begin
s := start;
while s^.ptr^.test < newdat do s := s^.ptr;
p^.ptr := s^.ptr; s^.ptr := p
end
あたりでいいのでないの?
0172デフォルトの名無しさん
05/01/25 09:41:21追記。上のは newdatn/newdat の入力のあとに new(p); として
そのあとの部分ね。
0173デフォルトの名無しさん
05/01/25 10:34:41身長を表す実数型の欄heightをもつ次のレコード型で定義する。
type student = record
no : integer;
height : real
end;
2人の学生のデータ(student型のa,b)を引数とする、以下の2つの関数および手続きを作成せよ。
(1)身長の高い方の学生の学籍番号noを返す関数higherno(a,b:student):integer
(2)身長の高い方の学生のデータをcに返す手続きhigher(a,b:student; var c:student)
ただし、2人の身長が等しい場合は一つめの引数となった学生のデータ
((1)ならば学籍番号。(2)ならばstudent型のデータ)を返すこととする。
そもそもレコード型へのデータを入れ方が分からないです(;´Д`)
おながいします
0174デフォルトの名無しさん
05/01/25 10:57:11さすがにそれは……
レコード型 a の内容を c に入れるには c := a で OK。
a が b より大きいなら a.height > b.height。
あとはわかる?
0175173
05/01/25 12:44:190177173
05/01/27 11:42:21begin
if a.height >= b.height then higherno:=a.no else higherno:=b.no
end;
procedure higher(a,b:student; var c:student);
begin
if a.height >= b.height then c:=a else c:=b
end;
こんな感じでせうか(;´Д`)
0178デフォルトの名無しさん
05/01/27 18:09:28プログラムの書き方が分かりません。
ナイトの巡回という名前のプログラム知ってますでしょうか?
0179デフォルトの名無しさん
05/01/27 19:58:52今まで移動したところを記憶して、全部移動してたら終了。
移動先があったら記憶して再帰、帰ってきたら記憶を消して次の移動先で再帰。
0180デフォルトの名無しさん
05/01/27 20:10:33ナイトの初期位置(1、1)で、5*5マスに対する全ての解を求めよ。
ただし、対称なものは除くこと。
という問題の答えを教えて欲しいです。
0181デフォルトの名無しさん
05/01/27 21:45:46対称解はどうやって除いたいいものか。
0182デフォルトの名無しさん
05/01/27 22:03:460183デフォルトの名無しさん
05/01/28 00:30:200184デフォルトの名無しさん
05/01/28 03:29:20var board : array [q] of q; num : integer;
procedure answer; var i, j : q; begin writeln; num := num + 1; writeln(num);
for i := 1 to queen do begin for j := 1 to queen do
if board[i] = j then write('Q') else write('.'); writeln; end; end;
function check: boolean; var i, j : q; begin check := true;
for i := 1 to queen do for j := 1 to queen do if (i <> j) and
((i-j = board[i] - board[j]) or (i-j = board[j] - board[i]) or
(board[i] = board[j])) then check := false; end;
procedure loop(n : q); var i : q; begin for i := 1 to queen do begin
board[n] := i; if n <> queen then loop(n+1) else if check then answer;
end; end; begin num := 0; loop(1); end.
0185デフォルトの名無しさん
05/01/28 11:17:23http://www.gnu-pascal.de/contrib/chief/
0186183
05/01/28 13:35:28ありがとう!助かります!
0187デフォルトの名無しさん
05/01/28 13:48:16えらくおそいと思ったら、ぜんぶ置いてからチェックしてるのか。
0188デフォルトの名無しさん
05/01/28 17:10:55program eightqueen(input, output); const queen = 8; type q = 1..queen;
var b : array [q] of q; num : integer; procedure answer; var i, j : q;
begin writeln; num := num + 1; writeln(num); for i := 1 to queen do begin
for j := 1 to queen do if b[i] = j then write(' Q ') else write(' . ');
writeln; end; end; function check(n: q): boolean; var i: q; begin
check := true; for i := 1 to n-1 do if (abs(i-n) = abs(b[i]-b[n])) or
(b[i] = b[n]) then check := false; end; procedure loop(n: q); var i : q;
begin for i := 1 to queen do begin b[n] := i; if check(n) then if n <> queen
then loop(n+1) else answer; end; end; begin num := 0; loop(1); end.
0189デフォルトの名無しさん
05/01/29 00:50:51とりあえず対称なものも含めて全ての解を求めるには
どうすればいいですか?
0190デフォルトの名無しさん
05/01/29 01:23:000191デフォルトの名無しさん
05/01/29 02:09:56program knight(input, output);const SIZE = 5; type D = 1..SIZE;
M = 0..SIZE*SIZE; var board : array [D, D] of M; num : Integer;
procedure init; var i, j : D; begin num := 0;
for i := 1 to SIZE do for j := 1 to SIZE do board[i,j] := 0; end;
procedure answer; var i, j : D; begin writeln; num := num + 1; writeln(num);
for i := 1 to SIZE do begin for j := 1 to SIZE do write(board[i,j]:3);
writeln; end; end; procedure move(x, y : D; n : M); forward;
procedure next(x, y : D; n : M); begin
move(x+2, y+1, n); move(x+2, y-1, n); move(x+1, y+2, n); move(x+1, y-2, n);
move(x-1, y+2, n); move(x-1, y-2, n); move(x-2, y+1, n); move(x-2, y-1, n);
end; procedure move; begin if (x in [1..SIZE]) and (y in [1..SIZE]) then
if board[x,y] = 0 then begin board[x,y] := n; if (n = SIZE*SIZE) then
answer else next(x, y, n+1); board[x,y] := 0; end; end;
begin init; move(1,1,1); end.
0192デフォルトの名無しさん
05/01/29 06:48:14微妙に出力形式が改良されてる(笑)。
というか >>184 でもそれなりの速度で解答がでるのを見て、
いまのCPUのすさまじい速さに今さらながら驚かされたよ。
>>191
対称解をのぞくと二種類だけど、片方は回転しても同形に
なるからだね。
0193デフォルトの名無しさん
05/01/29 06:52:21ごめん、191に対するレスは勘違い。
0194デフォルトの名無しさん
05/01/29 09:01:48とりあえず部分範囲型の範囲チェックをオンにすると move でこける。
(Delphi, Free Pascal) gpc でそのまま通るのはナゼ?
0195デフォルトの名無しさん
05/01/29 17:22:530196デフォルトの名無しさん
05/01/31 09:15:570197デフォルトの名無しさん
05/01/31 12:46:280198189
05/01/31 18:02:25変数名や条件を書き換えてみましたが、
失敗してはいじってを繰り返しているうちにぐだぐだになってしまいました。
const n:=5;
var x0,y0,i,j:integer;dx,dy:array[1..8] of integer;board:array[1..n,1..n] of integer;
procedure tour(turn,x,y:integer); var i,j,k,no:integer;
begin
no:=0;k:=0;
if (x>0)and(x<=n)and(y>0)and(y<=n)and(board[x,y]=0) then begin
board[x,y]:=turn;no:=no+1;k:=k+1;x:=x+dx[k];y:=y+dy[k];
if turn=(n*n) then tour(turn+1,x,y)
else begin board[x,y]:=0;tour(turn+1,x,y) end
end
else
if turn=(n*n) then begin
writeln('No.',no);
for i:=1 to n do begin
for j:=1 to n do
write(board[i,j]:3);writeln
end
end;
end;
begin
dx[1]:=2;…dx[8]:=2;dy[1]:=1;…dy[8]:=-1;
for i:=1 to n do for j:=1 to n do board[i,j]:=0;
x0:=1;y0:=1;tour(i,x0,y0)
end.
途中で止まるか、何も出力されないかのどっちかだったと思うんですが、
どうでしょうか?
0199デフォルトの名無しさん
05/01/31 21:35:53var A : array [0..N-1] of integer;
procedure radixsort;
const R = 10;
var
radix : array [0..N-1] of 0..R-1;
temp : array [0..N-1] of integer;
i, j, k, x, max: integer;
begin
max := 1;
for i := 0 to N-1 do
while A[i] > max do max := max * R;
x := 1;
while x <= max do begin
for i := 0 to N-1 do
radix[i] := (A[i] div x) mod R;
i := 0;
for j := 0 to R-1 do
for k := 0 to N-1 do
if radix[k] = j then begin
temp[i] := A[k];
i := i + 1;
end;
for i := 0 to N-1 do
A[i] := temp[i];
x := x * R;
end;
end;
0200デフォルトの名無しさん
05/02/01 21:06:04さあ行こうパスカル
0201デフォルトの名無しさん
05/02/02 10:09:350202デフォルトの名無しさん
05/02/02 19:05:00========================
1.要求仕様
(1)書籍の情報
著者,書籍名,出版社,発行年月日,分野の分類,コメント
(2)必要な機能
データの追加機能,データの検索機能,データの削除機能,
データの更新機能,CSVファイルからのデータ入力機能,
CSVファイルへのデータ出力機能
(3)データの形式,メニューなどの詳細仕様は各自で決めること.
こんな課題がでました。ほぼ丸投げ状態です。よかったらよろしくおねがいします
0203デフォルトの名無しさん
05/02/02 19:21:510204202
05/02/02 19:26:470205デフォルトの名無しさん
05/02/03 09:48:32書籍テーブル
著者 文字型
書籍名 文字型
出版社(コード) 数値型(整数)
発行年月日 日付型
分野の分類(コード) 数値型(整数)
コメント Memo型
出版社名マスタ
出版社コード 数値型(整数)
出版社名 文字型
分類名マスタ
分類コード 数値型(整数)
分類名 文字型
画面
書籍テーブル入出力画面(追加・更新・削除)
出版社マスタメンテナンス画面(追加・更新・削除)
分類名マスタメンテナンス画面(追加・更新・削除)
書籍テーブル検索画面
CSVから書籍テーブルへインポート画面
書籍テーブルからCSVへエクスポート画面
0206デフォルトの名無しさん
05/02/03 09:53:40http://pc5.2ch.net/test/read.cgi/db/1057509675/
0207デフォルトの名無しさん
05/02/03 14:01:12よろしくお願いします
0208デフォルトの名無しさん
05/02/04 00:56:340209デフォルトの名無しさん
05/02/04 01:23:08http://www.oishi.info.waseda.ac.jp/~oishi/sir/node21.html
このとおりにすれば?
0210デフォルトの名無しさん
05/02/04 02:38:150211デフォルトの名無しさん
05/02/04 02:45:46何の定数やら。
0212デフォルトの名無しさん
05/02/04 02:53:54変数でした。お願いします
0213デフォルトの名無しさん
05/02/04 02:56:16だから、a,b,cは何を表しているのか解からない。辺の長さかな??
0214デフォルトの名無しさん
05/02/04 02:59:390215デフォルトの名無しさん
05/02/04 03:03:13ヘロンの公式
http://www.asahi-net.or.jp/~jb2y-bk/NaturalSci/math/heron.htm
0216デフォルトの名無しさん
05/02/04 11:31:40a[1,1]:=2;a[1,2]:=2;a[1,3]:=1;a[1,4]:=1;
a[2,1]:=2;a[2,2]:=4;a[2,3]:=4;a[2,4]:=5;
a[3,1]:=4;a[3,2]:=10;a[3,3]:=14;a[3,4]:=18;
a[4,1]:=6;a[4,2]:=10;a[4,3]:=15;a[4,4]:=20;
p[1]:=1;p[2]:=2;p[3]:=3;p[4]:=4;
lup_decom(a,p,sz);
for i:=1 to sz do
begin
for j:=1 to sz do
if p[i]:=j then write(1,' ') else write(0,' ');
writeln();
end; writeln();
for i: =1 to sz do
begin
for j:=1 to sz do write(a[p[j],j:5,' ');
writeln()
end;
wrteln()
end.
↑LUP分解でlup_decom()の手続きを教えてください
0217デフォルトの名無しさん
05/02/05 20:53:400218デフォルトの名無しさん
05/02/10 21:17:020219デフォルトの名無しさん
05/02/13 23:02:23それを全組み合わせを取得?
適当に抜粋しないで問題全部書いてみな。
0220デフォルトの名無しさん
05/02/13 23:36:03ルール
1、問題ファイル
・問題としてmondai.txtというファイルを入力する。
・kaito.txtという名前で出力する。
・kaito.txtには、使用した整数は”1”、しなかった整数は”0”を出力する。
2、得点の獲得条件
ポイントを獲得するには、以下の条件もすべて満たさなければならない。
以下の条件を満たしたとき、使用した整数の数を得点とする。
・合計数が平方数である。
・mondai.txtにある整数を使っていいのは一回まで。
・解答の合計した数がmondai.txtの全部の数を足したものの半分以下。
なんですけどわかりました?ファイルの入出力は大丈夫なんですけど、いかに整数をたくさん使用して、
その合計を平方数にするかということで悩んでます。
0221デフォルトの名無しさん
05/02/14 00:16:23てなところからなんとかならんか?
0222デフォルトの名無しさん
05/02/14 00:43:180223221
05/02/14 00:55:53奇数のループを作って与えられた数次々に引いていって残りがちょうど0になったら平方数。
続いて次の与えられた数についても次の奇数から順に引いていって残りがちょうど0になったら二つの与えられた数の和は平方数。
残りが0にならなかったら、残りを次の与えられた数に組み入れる。
ていう案は如何?
0224デフォルトの名無しさん
05/02/14 01:06:230225デフォルトの名無しさん
05/02/14 07:36:562、AllSumに全部の合計を求める
3、SqrAll:=Trunc(Sqrt(AllSum/2));
4、SqrAllより小さくなるまで、大きい順に捨てる
5、SqrAlと一致すればそれが答え
6、差を求めて、その差に一致する 捨てた組-小さい組みがあればそれを採用して答え
7、それも無ければ
0226デフォルトの名無しさん
05/02/14 08:02:260227223:221
05/02/14 08:07:253、N:=Trunc(Sqrt(AllSum/2));
3.1、SqrAll := N * N;
では?
なお、Nは>>221のnの上限。
0228デフォルトの名無しさん
05/02/14 12:57:190229227:223:221
05/02/15 00:30:38わてちょっと阿呆っぽいのでプログラム書けないっぽいです!
0230デフォルトの名無しさん
05/02/15 00:50:10>a,b,cを定数にして、三角形の面積の求め方(式)を教えて下さい。
偶然だな。俺の大学でも似たようなレポ出てた。
0231デフォルトの名無しさん
05/02/15 10:47:290232デフォルトの名無しさん
05/02/15 10:50:120233デフォルトの名無しさん
05/02/15 21:01:280234デフォルトの名無しさん
05/02/15 22:59:12DelphiScript
0235デフォルトの名無しさん
05/02/16 02:05:040236デフォルトの名無しさん
05/02/16 04:30:130237デフォルトの名無しさん
05/02/16 20:44:49b2p.exe
0238デフォルトの名無しさん
05/02/16 23:37:05それなんですか?
0239デフォルトの名無しさん
05/02/18 18:38:061からmまでの整数の集合A{n∈N|1≦n≦m}の中から
n個の整数を取り出す組み合わせをすべて生成するプログラムを作れ。
数字の組み合わせは大きいほうから順に確定していくことにせよ。
という課題がでました。お願いします。
0240デフォルトの名無しさん
05/02/18 22:35:090241デフォルトの名無しさん
05/02/18 22:47:54比較演算子と集合演算子とin演算子しかない。
わからない
0242239
05/02/18 22:49:310243239
05/02/18 22:54:30それを使うのは想定されて無いと思います。
0244デフォルトの名無しさん
05/02/18 22:55:07procedure print(p : list);
begin
if p <> nil then begin
print(p^.next);
write(p^.n:8);
end;
end;
procedure hoge(m, n : integer; p : list);
var tmp : num;
begin
if n = 0 then begin
print(p);
writeln;
end else if m <> 0 then begin
tmp.n := m;
tmp.next := p;
hoge(m-1, n-1, &tmp);
hoge(m-1, n, p);
end;
end;
0245デフォルトの名無しさん
05/02/18 23:00:26procedure omaemona(m,n: Integer; a: itteyoshi = []);
var i: Integer;
begin
if n > 0 then
for i := m downto n do omaemona(i-1,n-1,a+[i]);
else begin
i := 1;
while a <> [] do begin
if i in a then begin
Write(i,' ');
Exclude(a,i);
end;
Inc(i);
end;
Writeln('');
end;
end;
あとは、omaemona(5,3) とかやればいいんでない?
0246239
05/02/19 12:25:03next : ^num; のところで Error in type statement!
とか言われてしまいます。というか、「type」自体を使ったことが
無いんですけど使わずに出来ませんでしょうか・・・。
0247デフォルトの名無しさん
05/02/27 01:28:500248デフォルトの名無しさん
05/03/01 06:31:006.4.1 型定義の型表記は,その型定義の識別子の引用を含んではならない。
0249デフォルトの名無しさん
05/03/01 07:58:280250デフォルトの名無しさん
05/03/01 13:10:01ごめんそこは問題なかった。でも
> hoge(m-1, n-1, &tmp);
とか
> a: itteyoshi = []
とかは標準PASCALじゃないよね。
あと型定義がコンパイラを通らないばあいは
type list = ^num; num = record n : integer; next : list end;
と書くといいと思う(Jensen/Wirthはこの書き方)。
0251デフォルトの名無しさん
05/03/02 00:26:33うん、それは標準PASCALじゃないっぽい。
あと型の同値性は標準PASCALでは名前同値だっけ?
0252デフォルトの名無しさん
05/03/02 04:23:03原則としては。でも例外がいくつかあってあんまりきれいでない。
0253デフォルトの名無しさん
05/03/04 14:13:44Shell32.DLLなどから呼び出したいのですが、どのようなフォーマットを
定義してあげればいいのでしょうか?
よろしくお願いします。
0254まともに動いてない ◆/8LpUMqVAk
05/03/06 08:59:36すみません、Pascalで外部プログラムを起動させる標準的な方法ってありません。
処理系依存なのでお使いの処理系のマニュアルを読んでください。
Shell32.DLLなどから.exeになったPascalプログラムを呼び出したい場合は、C言語のsystem関数のようなDOSプロンプトから実行するのと同じフォーマットで起動させる関数または手続きがあるはずです。
0255デフォルトの名無しさん
05/03/12 09:27:440256774RR
2005/04/18(月) 21:06:54(いまじゃREALBasicで遊んでるだけのロートルでつよ)
>245
excludeはPascalの標準手続きじゃなかったような。
M-2では標準だったっけ?
incも標準手続きじゃないよな。
i-1とかもpred(i)などと書くのが好きだった。
type
list = ^num;
num = record
n : integer;
next : list
end;
がやっぱ標準だよね。
コンパイラ側から見ると、list = ^numを見た段階で「なんか判らんが、
ポインタ型が来る」と思う。ポインタ型のデータ幅は何を参照しようと
一定で既知だから、one pass型の実装でも問題ない。
本当に再帰下降式を意識した言語だよな。
0257まともに動いてない ◆/8LpUMqVAk
2005/04/19(火) 07:58:22incはPascalの標準手続きじゃったような。
i+1はなんて書くんだっけ。
後でJIS調べときまっさ。多分。
0258デフォルトの名無しさん
2005/04/19(火) 11:17:26Inc, Dec, Include, Exclude はボーランド拡張(元ネタは MODULA-2)です。
0259774RR
2005/04/19(火) 12:57:25iが整数型なら succ(i)
0260まともに動いてない ◆/8LpUMqVAk
2005/04/29(金) 01:52:080261デフォルトの名無しさん
2005/05/26(木) 00:22:45その計算結果を出力する プログラムを作れ。
おねがいします。
0262デフォルトの名無しさん
2005/05/26(木) 15:31:530263デフォルトの名無しさん
2005/05/27(金) 02:45:11fibonacci.pas でぐぐるとたくさんでてくる。
0264デフォルトの名無しさん
2005/05/27(金) 03:32:26program rpo(input,output);
type tree = ^node; node = record op: Char; L,R: tree end; var root: tree;
procedure ReadChar(var c: Char);
begin c := ' '; while not Eoln and (c = ' ') do Read(c)
end;
procedure ReadTree(var t: Tree);
begin New(t); ReadChar(t^.op);
if t^.op in ['+', '-', '/', '*'] then begin
ReadTree(t^.L); ReadTree(t^.R)
end
end;
function Calc(t: Tree): Integer;
var n: Integer;
begin
if t^.op = '+' then
Calc := Calc(t^.L) + Calc(t^.R)
else if t^.op = '-' then
Calc := Calc(t^.L) - Calc(t^.R)
else if t^.op = '*' then
Calc := Calc(t^.L) * Calc(t^.R)
else if t^.op = '/' then
Calc := Calc(t^.L) div Calc(t^.R)
else begin
Write(t^.op, ': '); Readln(n); Calc := n
end
end;
begin ReadTree(root); Writeln(Calc(root)) end.
0265デフォルトの名無しさん
2005/05/27(金) 03:37:10問題の意味がよくわからなかったので、変数はぜんぶ1文字で整数と仮定してある。
式の中に同じ変数が複数回出てくる場合は毎回たずねてくる。
処理系が対話的である(Write してから Read すると、前の Write がプロンプトとして
働く)ことを仮定している。入力エラー処理はしていない。
このへんがまずかったら適当に直してちょうだい。
0266261
NGNG0267デフォルトの名無しさん
2005/05/28(土) 19:40:08サンクスコ
0268デフォルトの名無しさん
2005/05/29(日) 11:07:16経歴の似ている男女を組み合わせできたカップルのリストを出力するプログラムお願いします!
0269デフォルトの名無しさん
2005/06/02(木) 01:18:500270デフォルトの名無しさん
2005/06/02(木) 01:19:110271デフォルトの名無しさん
2005/06/02(木) 06:56:27経歴の類似度をどうやって数値にするつもりか知らないけれど、あとは
「安定な結婚」問題でしょ。アルゴリズムの本にはふつうに載っている。
たぶん三十行くらい。
stable matching か stable marriage あたりでぐぐるとでてくるんじゃない
かなあ。
0272デフォルトの名無しさん
2005/06/02(木) 13:11:37フリーパスカルは使いにくい…
0273デフォルトの名無しさん
2005/06/02(木) 17:49:40Borland - Delphi 6 Personal Download
http://www.borland.co.jp/delphi/personal/
0274774RR
2005/06/02(木) 18:44:10「コンピュータアルゴリズム事典」にもあった。
あの本、愛用したなあ…
0275デフォルトの名無しさん
2005/06/03(金) 03:11:01アルゴリズム辞典の全ソースが奥村氏のサイトに置いてあるので
ttp://oku.edu.mie-u.ac.jp/~okumura/algo/algo_pas.html
この中の「program StableMarriage」を参照するといいかも。
0276268
2005/06/04(土) 17:08:00ありがとうございます!早速調べてみます
0277デフォルトの名無しさん
2005/06/07(火) 15:29:27んでこういうの書いたんですがなんか馬鹿なことしてますでしょうか?
program paisagashi(output);
const n=100000;
pi=3.141592653;
var i: integer;
delta: real;
begin
for i:=1 to n do begin
delta:=i*pi;
if abs(delta-round(delta))<0.0001 then writeln(i);
end
end.
n=10000だったらちゃんと113をwriteしてくれるんですけど・・・なにがいかんのでしょうか。
0278デフォルトの名無しさん
2005/06/07(火) 18:04:010279デフォルトの名無しさん
2005/06/07(火) 18:33:03確かにintegerの範囲超えてますね・・・
馬鹿な質問に答えてくださりありがとうございました。
0280774RR
2005/06/07(火) 19:04:140282デフォルトの名無しさん
2005/06/07(火) 19:37:49入力として英小文字からなる文字列をいくつか与えられている。
それらを辞書式順序に並べ換えれ。
どなたか、よろしくお願いします。
0283デフォルトの名無しさん
2005/06/07(火) 19:47:500284284
2005/06/09(木) 04:13:34この内容を合わせて、小さい順に整列化したファイル file3を作れ。
ただし、file1とfile2のデータ数は等しくないものとする。
実行例を示すために、二つのファイルを作成するプログラムも作り、出力結果を示せ。
という課題で、一応作ってみたんですけどエラーが出てしまいます。
どこが悪いのでしょうか
0285284
2005/06/09(木) 04:16:20var
intfile1,intfile2,intfile3 : file of integer;
a,b,c : integer;
procedure mkfile1;
begin
rewrite(intfile1,'file1');
writeln('file1の作成 整数を小さい順に入力。(0を入力で終了)');
readln(a);
while a<>0 do begin
write(intfile1,a);
readln(a)
end
end; { mkfile1 }
procedure mkfile2;
begin
rewrite(intfile2,'file2');
writeln('file2の作成 整数を小さい順に入力。(0を入力で終了)');
readln(b);
while b<>0 do begin
write(intfile2,b);
readln(b)
end
end; { mkfile2 }
0286284
2005/06/09(木) 04:16:37begin
writeln('file3の出力。');
reset(intfile3,'file3');
while not eof(intfile3) do begin
read(intfile3,c);
writeln(c)
end
end; { showfile3 }
begin
mkfile1; mkfile2; { file1,file2の作成 }
rewrite(intfile3,'file3');
reset(intfile1,'file1'); reset(intfile2,'file2');
read(intfile1,a); read(intfile2,b);
repeat
if a<b then
begin write(intfile3,a); read(intfile1,a) end
else
begin
if a>b then
begin write(intfile3,b); read(intfile2,b) end
else
begin write(intfile3,a); read(intfile1,a); read(intfile2,b) end
end
until eof(intfile1) or eof(intfile2);
0287284
2005/06/09(木) 04:16:47repeat write(intfile3,b); read(intfile2,b) until eof(intfile2);
if eof(intfile2) then
repeat write(intfile3,a); read(intfile1,a) until eof(intfile1);
showfile3 { file3の出力 }
end.
0288デフォルトの名無しさん
2005/06/09(木) 06:11:49ハノイは大丈夫か?w
0289デフォルトの名無しさん
2005/06/09(木) 15:02:05ファイル型苦手ぽ(´・ω・`)
0290デフォルトの名無しさん
2005/06/10(金) 23:02:52うるせーばか
0291デフォルトの名無しさん
2005/06/12(日) 23:07:37一応作ってみたんですが、例えば始めにデータ数を3と入力したら
データを2つ入れたところでソートされてしまいます。
どこが悪いのでしょうか
0292デフォルトの名無しさん
2005/06/12(日) 23:07:57type characters = array [1..50] of char;
var d: array [1..10000] of characters;
i,j,k,n: integer;
tmp: characters;
begin
{データ入力}
read(n);
for i:=1 to n do
readln (d[i]);
{ソート}
for i:=1 to n do
begin
j:=i;
for k:=i+1 to n-1 do
if d[j]>d[k] then j:=k;
tmp:=d[j];
d[j]:=d[i];
d[i]:=tmp;
end;
{データの出力}
for i:=1to n do
writeln(d[i])
end.
0293774RR
2005/06/13(月) 12:36:04実際、処理系やOSによっても実装がいいかげんだったりするから、
心配なら全部readlnで処理して、データの後には常に改行を入れるように
する。
0294デフォルトの名無しさん
2005/06/17(金) 16:03:47このとき、順位、学籍番号、成績の順に出力されるようにせよ。
ただし、同成績なら同じ順位とし、
順位がi番目の人がx人なら次の成績の人の順位はi+xとする。
っていうのが出たんですけど、
>同成績なら同じ順位とし、順位がi番目の人がx人なら次の成績の人の順位はi+xとする。
っていうところができません。
0295294
2005/06/17(金) 16:05:38const n = 10000;
m = 8;
type characters = array[1..8] of char;
var d : array [1..n] of characters;{No}
g : array [1..n] of integer;{Score}
num,i,j,k,tmp1,r,q : integer;
tmp2 : characters;
begin
{input}
readln(num);
for i:=1 to num do
begin
read(d[i]);
readln(g[i]);
end;
0296294
2005/06/17(金) 16:05:54begin
{sort}
j:=i;
for k:=i+1 to num do
if g[j]<g[k] then j:=k;
tmp1:=g[j];
tmp2:=d[j];
g[j]:=g[i];
d[j]:=d[i];
g[i]:=tmp1;
d[i]:=tmp2;
end;
{output}
for i:=1 to num do
writeln(i,' ',d[i],' ',g[i])
end.
0297774RR
2005/06/17(金) 16:25:33const
MaxStudentNumPlus1 = {想定する学生数+1}
result = record
Score, IDNum : integer
end;
var
i, ii, n : integer;
StudentNum, order : integer;
results : array [1..MaxStudentNumPlus1] of result;
begin
{ 学生数StudentNumを読み込む。適当な値でなければ終了 }
{ resultsを読み込む。}
{ resultsを成績の降順に順序付けする }
results[succ(StudentNum)].Score = -1; (* sentinel *)
order := 1;
i := 1;
while i <= StudentNum do begin
ii := i;
n := results[ii].Score;
repeat ii := succ(ii) until results[ii].Score < n;
{ orderを出力 }
{ results[i]からresults[pred(ii)]までの内容を出力 }
order := order + (ii - i);
i := ii
end
end.
0298デフォルトの名無しさん
2005/06/19(日) 14:17:24それらを辞書式順序で並べ替えるプログラムを作成せよ。
という宿題がでたんですが配列を使ってやってみようとしたんですが、
文字型の定義とかがうまくいきません、どなたかよろしくおねがいします。
0299デフォルトの名無しさん
2005/06/20(月) 01:10:350300デフォルトの名無しさん
2005/06/20(月) 01:23:540301デフォルトの名無しさん
2005/06/21(火) 03:53:25arrayとfor変数to doを使って数列の成分を入力したあと、
うまく計算させることができません。
個々の成分をa11、a12....と入力させて実行させることはできたのですが、
課題として配列変数を使わないといけないらしいので、
arrayとfor変数to doを使った数列掛け算のプログラムのご指南をおねがいします。
0302774RR
2005/06/23(木) 17:20:17だったら「MATLABを買う」が一番はy(r
0303デフォルトの名無しさん
2005/06/23(木) 20:44:29実際に直面している問題ならそれで正解だけど、>>301は課題だから
さすがにそれはまずいだろ。
0304デフォルトの名無しさん
2005/06/24(金) 00:05:19よし、やってる!
と思ったはいいんだが数列の掛け算ってどういうこと?
program hairetsu(input,output);
const n=10;
var a : array [1..n] of integer;
i : integer;
begin
writeln(n,' 個の数値を順に入力してください');
for i:=1 to n do read(a[i]);
writeln('隣り合うものを順にかけてみた');
for i:=1 to n-1 do writeln(a[i]*a[i+1]);
end.
こんなん作ってみたが参考になるんだろうか。
0305774RR
2005/06/24(金) 12:30:39Pascalな課題をWirth教徒が勝手に解いて楽しむスレだったな。
効率の悪い例だけれど、定義に沿った計算法。動くと思うけど、
面倒だからテストしてない(一時的にマカーなものですまそw)。
MATLABなら一行なんだがww
const
maxColumn = {assumed maxium column number};
maxRow = {assumed maxium row number};
type
indexC = 1..maxColumn;
indexR = 1..maxRow;
matrixdata = array[indexC][indexR] of real;
matrix = record
nc : indexC; (* number of columns *)
nr : indexR; (* number of rows *)
data : matrixdata
end;
{つづく}
0306774RR
2005/06/24(金) 12:31:21(* A×Bを計算し、Cに出力する。演算不能であればavailにfalseを返す *)
var i : indexC; j : indexR; k : integer; sum : real;
begin
avail := (A.nc = B.nr);
if avail then
with C do begin
nc := B.nc;
nr := A.nr;
for i := 1 to nc do
for j := 1 to nr do begin
sum := 0;
for k := 1 to A.nc do sum := sum + A.data[k, j] * B.data[i, k];
data[i, j] := sum
end
end
end;
0307デフォルトの名無しさん
2005/06/25(土) 17:43:17ある集合Sがあってある数nがあったとします。
nがSの中に無かった場合その後のプログラム(for文等)を実行させる方法がどうすればいいか分かりません(´・ω・`)
よろしくお願いします。
0308デフォルトの名無しさん
2005/06/25(土) 17:52:30・集合Sを作る
・Sに数kを入れる
・集合Sにnがあるか無いかを調べ、無かったらその後のを実行
こんなのでもう1時間くらい悩んでますorz
0309デフォルトの名無しさん
2005/06/25(土) 21:15:59const m=3;
type syuu = array [1..m,1..m] of integer;
var S : syuu;
i,j,n : integer;
k,key : integer;
begin
{Sの中身を入力}
for i:=1 to m do begin
for j:=1 to m do begin
read(k);
S[i,j]:=k;
end;
end;
{ある数nを入力}
writeln;
read(n);
for i:=1 to m do begin
for j:=1 to m do
if n=S[i,j] then key:=1;
end;
if key=1 then begin
{なにかすること。}
end;
end.
>>307
こういうことでいいのか?
0310774RR
2005/06/25(土) 22:42:57例
var
s : set of 1..16;
n : 1..16;
begin
...
s := [3, 5, 2];
s := s + [7, 11, 13];
n := {なんか好きな数}
if n in s then {なんか好きな処理};
...
0311デフォルトの名無しさん
2005/06/26(日) 07:29:24ありがとうございます!教科書にあった>>310さんの
s := [3, 5, 2];
s := s + [7, 11, 13];
こういう表現がどうすればできるのかと分からなかったもので・・・・(しかも記述が[]じゃなくて{}なんですよね・・)。
そしてif文はinを使えば判定できるんですね・・・。
日本語不足でごめんなさい(;´Д`)
0312デフォルトの名無しさん
2005/06/28(火) 15:54:38● 入力したデータの個数
● 偶数データ、奇数データの個数
● 入力したデータを表示
● 小さい順番に並べ替える、大きい順番に並べ替える
● 平均、分散、中央値(メジアン)を求めよ。
すみません、お助けくださいませm(__)m
0313301
2005/06/28(火) 15:59:30すみません、数列の掛け算ではなく、行列の掛け算でしたm(__)m
304さんに「数列の掛け算」をわざわざプログラムしていただいたのに、
申し訳ありません。。。
よろしければ、行列の掛け算で再度お願いいたします。。。
0315774RR
2005/06/28(火) 18:05:54>312
Pascalの標準的な方法だけで「キーボードから任意個数の整数データを
入力する」のはやればできるが面倒(入力終了を示す一般的な方法が
ないから)。
仮に、既にデータ数はn、データは配列AのA[1]からA[n]まで入っているとする。
手持ちの処理系(Virtual Pascal for OS/2)で関数引数を記述する方法を
忘れたので例によってテストできないw 取説どこにしまったっけ…
function NumberOf(function criterion(n1 : integer) : boolean);
var nn : integer;
begin
nn := 0;
for i := 1 to n do nn := nn + ord(criterion(A[i]));
NumberOf := nn
end;
function isodd(n : integer) : boolean;
begin
isodd := odd(n)
end;
function iseven(n : integer) : boolean;
begin
iseven := not odd(n)
end;
偶数データの個数はNumberOf(iseven)、
奇数データの個数はNumberOf(isodd)でもとまる。
0316774RR
2005/06/28(火) 18:07:06procedure Quicksort(L, R: integer; function order(n1, n2 : integer) : boolean);
(* 奥村先生の本というかalgo_pas.lzhのCHAP07.PRGから改変 *)
var I, J, X, T: integer;
begin
X := A[(L + R) div 2];
I := L - 1; J := R + 1;
repeat
repeat I := I + 1 until order(X, A[I]);
repeat J := J - 1 until order(A[J], X);
T := A[I]; A[I] := A[J]; A[J] := T (* 最後の交換は余計である *)
until I >= J;
A[J] := A[I]; A[I] := T; (* 最後の交換を元に戻す *)
if L < I - 1 then Quicksort(L, I - 1, order);
if J + 1 < R then Quicksort(J + 1, R, order)
end;
function NotLessThan(n1, n2 : integer) : boolean;
begin
NotLessThan := n1 <= n2
end;
function NotGreaterThan(n1, n2 : integer) : boolean;
begin
NotGreaterThan := n1 >= n2
end;
昇順にソートするときはQuicksort(1, n, NotLessThan)、
降順ならQuicksort(1, n, NotGreaterThan)を呼ぶ。
0317304=309
2005/06/28(火) 20:58:06心から感謝をして演習問題にさせていただいているものなんですが、このスレにとっては邪魔
者でしょうか。邪魔ではないのなら居座りたいと思ってるんですが。
いまのところかなりチンプンカンプンな書き込みをしておりますし、いちいちレスをつけるのも
らくではないだろうと思いそろそろ気が引けてきた次第です。
んー。名前欄に初心者とでも書いておこうかなとは思っているんですがどうでしょう
?
0318774RR
2005/06/28(火) 21:06:52折れも勝手に居座ってるアマチュアなロートル。
過疎板の過疎スレなんだから皆で居座ろう。
ついでに添削。
>309の
if n=S[i,j] then key:=1;
...
if key=1 then
ってのはPascal的wじゃない。せっかく論理型ってのがあるんだから、
flag : boolean;
...
flag := n = S[i, j]
...
if flag then ...
なんて書くとかっこいいし、エラーも減るよ。
0320デフォルトの名無しさん
2005/07/09(土) 15:24:57var
permstring,blank:string;
procedure permutation(var target,original :string);
{originalの並び替えた順列をすべて見つけ、それらをtargetの右端に連結する}
var
i:integer ;
target1,original1:string;
begin
if length(original)=0 then
begin
writeln(target);
end {originalに文字がないならtargetを出力}
0321デフォルトの名無しさん
2005/07/09(土) 15:26:09begin
i:=1;
while i <= length(original) do {それ以外は各々のiに対して}
begin {originalのi番目の文字をtargetの右端に写し}
target1:=target+original[i]; {再帰の呼び出しを行う}
original1:=copy(original,1,i-1)+copy(original,i+1,length(original)-i);
permutation(target1,original);
i:=i+1;
end;
end;
end;
begin {メイン開始}
writeln('input a string of characters');
readln(permstring);
blank:= ' ';
writeln('the set of permutations:');
permutation(blank,permstring); {あらゆる順列を見つける}
writeln('done');
end.
0322デフォルトの名無しさん
2005/07/09(土) 15:26:310323デフォルトの名無しさん
2005/07/09(土) 23:44:34permutation(target1,original1);
じゃないかな?
0324デフォルトの名無しさん
2005/07/12(火) 22:50:58順列のプログラムを並び替える個数を変えながら計測しろっていう問題
なんですけど、プログラムはできてます。
ちなみにDelhi6を使ってます。
0325デフォルトの名無しさん
2005/07/12(火) 23:20:12終了したときの時間との差を求める
0326デフォルトの名無しさん
2005/07/13(水) 01:26:530327東海大学前
2005/07/13(水) 12:27:46・駐車時間が1時間未満ならば無料
・駐車時間1時間から3時間未満までは150円
・3時間以上は、一律300円
・0(ゼロ)を入力すると終了する。
というのがどうしても分からないのですが、よかったら教えて頂けないでしょうか?
<プログラム実行例>
PARKING
Input minutes = 430
Parking time => 7:10 =>\300
Input minutes = 127
Parking time => 1:7 =>\150
Input minutes =67
Parking time => 1:7 =>\150
Input minutes =32
Parking time =>0:32 =>\ 0
Input minutes =0
0328デフォルトの名無しさん
2005/07/13(水) 15:16:48Readln(Input, n);
Write(Output, 'Parking time => ', n div 60, ':', n mod 60, ' =>');
if n < 60 then
Writeln(Output, '\ 0')
else
if n < 180 then
Writeln(Output, '\150')
else
Writeln(Output, '\300');
みたいな感じに作ってみよう。
0329774RR
2005/07/13(水) 18:53:32else if n < 180 then writeln(output, '\150')
else writeln(output, '\300');
と書くとM-2風でカッコイイとまにあがゆってた
0330デフォルトの名無しさん
2005/07/13(水) 21:16:020: Exit;
1..59: cost := 0;
60..179: cost := 150;
else cost := 300;
end;
Writeln(cost);
0331デフォルトの名無しさん
2005/07/15(金) 01:02:43宿題がでたのですが、よくわからないので質問させてください。
20人分の国語のテストの点を入力させ、その順位を出力するアルゴリズム。
というのです。
お願いします。
0332デフォルトの名無しさん
2005/07/15(金) 01:23:592. ソートする
3. 順序と点数を出力する
ソートはとりあえずバブルソートあたりをぐぐれ。
そのまんまのコードが幾らでも見つかる。
わからんかったらまたおいで。
0333デフォルトの名無しさん
2005/07/15(金) 01:27:28「バブルソート Pascal」より
「バブルソート Delphi」でぐぐった方がええ。
0334デフォルトの名無しさん
2005/07/15(金) 02:07:39早速ぐぐって色々見てみました。
http://su10.sgu.ac.jp/~morita/Seminar/6thStudent/entani/sort/bubble/bubble.html#Bubble.Program
などを参照してみたんですが、具体的なアグロリズムが見つからずわからないままです(汗
この宿題は手打ちでしなければならないので、サンプルとしてのコードなどを教えていただけるとありがたいです。
よろしくお願いします。
0335デフォルトの名無しさん
2005/07/15(金) 02:09:35>アルゴリズムです
あと、ソートのやり方がわからないです・・・。
0336デフォルトの名無しさん
2005/07/15(金) 04:37:57for A:=1 to 20 do
begin
C:=1;
for B:=1 to 20 do
if TEN[A]<TEN[B] then
C:=C+1;
JUN[A]:=C;
end;
こんな感じで
0337pascal初心者
2005/07/16(土) 23:56:08ソーティングアルゴリズムによりその数字を昇順に並び替え、
並び終わった後の配列の要素をファイルに出力するプログラムを作成せよ。
ソートは何とかなりそう。
……テキスト型の数字ってどうやって比較するんですか?
0338デフォルトの名無しさん
2005/07/16(土) 23:59:15数字の部分だけ抜き出して StrToInt とかで数値に直す。
0339デフォルトの名無しさん
2005/07/17(日) 00:22:20俺の課題と似てるなぁ
0340pascal初心者
2005/07/17(日) 00:31:13やっぱり、一旦数値にするんですか。
ありがとうございました。
<<339
おんなじトコでしょうか。
問題文はほぼそのまま写しましたが。
また来るかもしれませんので、その時はよろしくお願いします。
0341デフォルトの名無しさん
2005/07/17(日) 00:42:58直接 Integer や Real 型の変数に読み込めばいい。
Input を ファイルにするだけ。
0342デフォルトの名無しさん
2005/07/17(日) 21:01:191. 演算子とそれによって結ばれる2つの項は,演算子をノード(演算子ノード)として,
演算子の左の項を演算子ノードの左の子とし,
右の項を演算子ノードの右の子として表現する(項が数または変数の場合は二分木の葉となる).
2. 演算の優先順位が最も低い演算子(+または−)を中心として,
左右の項に分ける.ただし,最も低い演算子が複数個ある場合は,そのうち最も右にある演算子を中心に項を分ける.
分けた項に演算子が含まれる場合は,同様にして項が数または変数のみとなるまで左右の項に分ける.
演算の優先順位:(*,/)>(+,−)
二分木のノードはレコード型として定義するものとする。
入力や出力は考えなくて良いみたいです。よろしくお願いします。
0343デフォルトの名無しさん
2005/07/17(日) 21:08:48文字列として与えられた式を、ツリー構造に変換しろってこと?
0344デフォルトの名無しさん
2005/07/17(日) 21:16:04それをツリー構造に変化するという事です。
0345デフォルトの名無しさん
2005/07/18(月) 00:26:16var
iOperator: Integer;
begin
S から演算子を優先順位が高い順に捜し、見つかったらそのインデックスを保存(iOperator)。
演算子が見つかった場合
演算子を Node で保持。
S を iOperator の位置で2つに分割。
Convert(S の左側, 新しく作成した Node の左側の子);
Convert(S の右側, 新しく作成した Node の右側の子);
演算子が見つからなかった場合
この時点で S は単一の数値又は変数なので、そのまま Node で保持。
end;
こんな感じで再帰的に呼んでいけばいい。
最初の呼び出しは、
S = 与えられた式
Node = ルートノード
0346346
2005/07/18(月) 01:01:25○S から演算子を優先順位が低い順に捜し
(´・ω・) ゴメス
0347345=346
2005/07/18(月) 01:06:170348デフォルトの名無しさん
2005/07/18(月) 04:27:19>>342のような処理はなにかに役立つんでしょうか。
俺にはやけに意味深に見えるのですが。
0349デフォルトの名無しさん
2005/07/18(月) 08:25:42ありがとうございます。
>>348
役に立つかどうかはわからないですけど・・・。
0350デフォルトの名無しさん
2005/07/18(月) 09:52:51微積分とか数式処理をするときにこういうことをする人もいるかも知れん。
コンパイラとかインタプリタ作るとき、おれは一次元配列でやったが、
こういうことする人もいるかも知れん。
ジェネティックプログラミングでこういうことする人もいるかも知れん。
こういう処理がすごーく役に立つかどうかは分からんけど、
面白いのは面白いよね。
0351デフォルトの名無しさん
2005/07/18(月) 18:46:48これ、文字式をstringで定義(?)してるけど、packed arrayの形でも分割できる?
俺の課題にも文字式を分割する部分があるんだけど、やり方がわからないもんで。
0352337
2005/07/19(火) 23:10:15誰か、ヒントでもいいから教えてくれませんか。
0353デフォルトの名無しさん
2005/07/19(火) 23:50:330354デフォルトの名無しさん
2005/07/20(水) 00:02:240355デフォルトの名無しさん
2005/07/20(水) 00:05:460356デフォルトの名無しさん
2005/07/20(水) 00:14:53ありがとう。助かりました。
0357デフォルトの名無しさん
2005/07/20(水) 17:21:59文字の読み込みはできるんだよな?
たとえば読み込む数が37だとしたらとりあえず一文字読み込み変数xに代入する。
ここでxには文字型の3が入っている。
それを数字に直すにはord(3)-ord(0)とすればよい。これをyに代入。
これでyには数字としての3が入ってる。
また一文字読み込んで今度は変数xに7を入れる。
これまた数字に直すから、ord(7)-ord(0)を取る。
そしてy:=y*10+ord(7)-ord(0)とすればよい。
これでyには37が代入される。
ファイルに数字がどのように記載されているのか分からないからどうしようもないけど、
これにwhile not eof() do beginなんかを付け加えていけばできるはず。
0358デフォルトの名無しさん
2005/07/20(水) 17:23:54>>337
文字の読み込みはできるんだよな?
たとえば読み込む数が37だとしたらとりあえず一文字読み込み変数xに代入する。
ここでxには文字型の3が入っている。
それを数字に直すにはord(x)-ord('0')とすればよい。これをyに代入。
これでyには数字としての3が入ってる。
また一文字読み込んで今度は変数xに7を入れる。
これまた数字に直すから、ord(x)-ord('0')を取る。
つまりy:=y*10+ord(x)-ord('0')とすればよい。
これでyには37が代入される。
ファイルに数字がどのように記載されているのか分からないからどうしようもないけど、
これにwhile not eof() do beginなんかを付け加えていけばできるはず。
0359774RR
2005/07/20(水) 17:26:42いると仮定する。
const MaxDigitPlus1 = 9; (* 桁数+1 *)
type str = packed array [1..MaxDigitPlus1] of char;
var zero : integer;
function StrToInt(s : str) : integer;
var i, ii : integer;
begin
i := 1; ii := 0;
s[MaxDigitPlus1] := ' '; (* sentinel *)
while s[i] in ['0'..'9'] do begin
ii := ii * 10 + ord(s[i]) - zero;
i := succ(i)
end;
StrToInt := ii
end;
begin
zero := ord('0');
writeln(StrToInt('123')
....
0360デフォルトの名無しさん
2005/07/20(水) 21:38:350361デフォルトの名無しさん
2005/07/21(木) 19:38:43このプログラムなんですが
procedure sort(var t : table);
var i,j,w : integer;
label m;
begin
for i := 2 to n do begin
w := t[i];
j := i;
repeat
if t[j-1] > w then begin
t[j] := t[j-1];
j := j - 1;
end else goto m;
until (J=1) ;
m:
t[j] := w;
end;
end;
なぜかlabelのところで「beginを入れろ」とエラーがでてしまいます。
もう全くワケわかめです・・・
何が悪いのか教えてください!!おねがいします!!
0362774RR
2005/07/21(木) 19:55:04×
var i,j,w : integer;
label m;
○
label m;
var i,j,w : integer;
0363361
2005/07/21(木) 20:23:19あざーーーーーーーーーーーーーす!!!
本当にありがとうございます!!!
0364 ◆MWvsskuWWc
2005/07/25(月) 18:46:26出力するテキストファイルに改行を書き込むにはどうすればいいのですか?
assign(t1,"output.txt");
rewrite(t1);
writeln(t1,'ホゲホゲホゲ');
writeln(t1);
writeln(t1,'フガフガフガ');
close(t1);
こうしても、出力結果はホゲホゲホゲフガフガフガになってしまいます。
ホゲホゲホゲ
フガフガフガ
にするにはどうしたらいいですか?御願いします
0365774RR
2005/07/25(月) 19:53:19'output.txt'のtypoだよな?
0367デフォルトの名無しさん
2005/07/25(月) 20:16:390368774RR
2005/07/25(月) 23:03:34コンパイラが文句を言わないなら、t1はtextとして定義されているんだろう。
となると、プログラミング以外の問題だと思われるわけだ。
吐いたファイルをバイナリエディタなりなんなりで覗いてみて、
「改行記号」として何を出力してるのか見るのが手っ取り早いと思う。
0369デフォルトの名無しさん
2005/07/25(月) 23:18:43とりあえず使い方は合っていたようで・・・安心しました。
学校ではLinuxで家ではcygwinなんですが。
ちょっと調べてみます。お世話なりました!
0370デフォルトの名無しさん
2005/07/26(火) 14:01:15小数第一位まで求めるようにしたいです。
0371デフォルトの名無しさん
2005/07/26(火) 14:34:120372デフォルトの名無しさん
2005/07/26(火) 19:59:14クイックソートなんですが、あるところからソースを手に入れたところpivotをソートする数列の最後の数としていたんです。以下のプログラムです
0373デフォルトの名無しさん
2005/07/26(火) 20:01:42var i,j,pivot,w : integer;
begin
if min < max then begin
pivot := t[max];
i := min;
j := max - 1;
while t[i] < pivot do i := i + 1;
while (i < j) and (t[j] > pivot) do j := j - 1;
while i < j do begin
w := t[i];
t[i] := t[j];
t[j] := w;
while t[i] < pivot do i := i + 1;
while (i < j) and (t[j] > pivot) do j := j - 1;
while (i < j) and (t[i] = pivot) and (t[j] = pivot) do begin
i := i + 1;
j := j - 1;
end;
end;
w := t[i];
t[i] := pivot;
t[max] := w;
sortRec(t,min,i-1);
sortRec(t,i+1,max);
end;
end;
0374デフォルトの名無しさん
2005/07/26(火) 20:07:450375デフォルトの名無しさん
2005/07/26(火) 20:13:27var i,j,pivot,w : integer;
begin
if min < max then begin
pivot := t[min];
i := min+1;
j := max ;
while t[i] <= pivot do i := i + 1;
while (i < j) and (t[j] >= pivot) do j := j - 1;
while i < j do begin
w := t[i];
t[i] := t[j];
t[j] := w;
while t[i] <= pivot do i := i + 1;
while (i < j) and (t[j] >= pivot) do j := j - 1;
while (i < j) and (t[i] = pivot) and (t[j] = pivot) do begin
i := i + 1;
j := j - 1;
end;
end;
w := t[j];
t[j] := pivot;
t[min] := w;
sortRec(t,min,i);
sortRec(t,j,max);
end;
end;
0376デフォルトの名無しさん
2005/07/26(火) 20:17:22もう完全にお手上げです・・・
お願いします、ヒントでもいいので教えていただけないでしょうか?
0377デフォルトの名無しさん
2005/07/26(火) 20:19:05×
sortRec(t,min,i);
sortRec(t,j,max);
○
sortRec(t,min,j);
sortRec(t,i,max);
でした。すみませんでした
0378デフォルトの名無しさん
2005/07/26(火) 21:37:43無限に再帰呼び出しをしてる。
0379デフォルトの名無しさん
2005/07/26(火) 21:41:32無限に再帰呼び出しをしてる。
0380デフォルトの名無しさん
2005/07/27(水) 05:09:54どうせアレンジするなら、
pivotを端っこにすると、既に殆どソートされているデータに対して
弱くなるので、min と max の真ん中くらいを使うといいと思う。
宿題なら、アレンジ理由も書けるし。
再起呼び出しの所は元のままいじる必要ない。
0381デフォルトの名無しさん
2005/07/27(水) 16:17:370382デフォルトの名無しさん
2005/07/27(水) 17:41:44余計ならしかたないと思う。
0383データボックス
2005/08/18(木) 00:16:120384データボックス
2005/08/18(木) 00:19:210385データボックス
2005/08/18(木) 00:20:56type
size_t = integer;
var
str1 : packed array[0..255] of char;
sz_t1 : size_t;
function strlen(pc_arg1 : pchar) : size_t;
var
pc1 : pchar;
c1 : char;
sz_t1 : size_t;
begin
c1 := chr(0);
sz_t1 := 0;
pc1 := pc_arg1;
while pc1^ > c1 do
begin
sz_t1 := sz_t1 + 1;
inc(pc1)
end;
strlen := sz_t1;
end;
begin
write('文字列を入力 : > ');
readln(str1);
sz_t1 := strlen(str1);
writeln('入力した文字列は ', sz_t1, ' バイトです')
end.
(* Copyright (C) 2005 データボックス, All Rights Reserved. *)
0386デフォルトの名無しさん
2005/08/18(木) 01:26:140387デフォルトの名無しさん
2005/09/04(日) 11:44:450388デフォルトの名無しさん
2005/09/05(月) 16:39:38参照型ってなんだっけ?
0389デフォルトの名無しさん
2005/09/05(月) 21:02:190390デフォルトの名無しさん
2005/09/05(月) 23:11:560391デフォルトの名無しさん
2005/09/05(月) 23:17:270392デフォルトの名無しさん
2005/09/07(水) 19:36:02ってか理解できない奴にはほんと、女の心よりワケワカメ。
俺も理解するのに1ヶ月ぐらいかかった。
クラスは2ヶ月かかった。
0393774RR
2005/09/09(金) 19:26:06ポインタは番地なんつーあぶねーものを陽に使わなくてもいいように
�hぃると御大が用意してくれたんだからガンガン使おう。
0394デフォルトの名無しさん
2005/09/09(金) 21:14:57(^Д^)9 プギャー
0395デフォルトの名無しさん
2005/10/06(木) 00:56:05使うときは必然的につかうけどなあ。
0396デフォルトの名無しさん
2005/10/06(木) 17:08:520397デフォルトの名無しさん
2005/10/06(木) 17:51:05計算したい式を入力して値を返すというプログラムをつくりたいのですが、
まず仮に(3+3)+3と言う式を計算しようと考えました。
以下がそのプログラムです。
0398デフォルトの名無しさん
2005/10/06(木) 17:53:28const n=100;
type string=string[n];
var letter:string;
a,i,max,min,result:integer;
begin
writeln('数式を入力してください。');
readln(letter);
i:=0;
while letter[i]<>')' do begin
i:=i+1;
end;
max:=i;
i:=0;
while letter[i]<>'(' do begin
i:=i+1;
end;
min:=i;
i:=min+1;
while i<=max-1 do begin
if letter[i]='+' then
result:=ord(letter[i-1])+ord(letter[i+1])-48*2
else i:=i+1;
end;
a:=result+(ord(letter[7])-48);
writeln(a);
end.
(テストなのでまだ一般性のあるものに仕上がっていません。申し訳ありません)
0399デフォルトの名無しさん
2005/10/06(木) 17:56:12何も起きません。
全くもってわかりません。。。ご教授お願いいたします。
0400デフォルトの名無しさん
2005/10/06(木) 19:15:29> while i<=max-1 do begin
> if letter[i]='+' then
> result:=ord(letter[i-1])+ord(letter[i+1])-48*2
> else i:=i+1;
> end;
letter[i] = '+' になると
while 〜
if 〜
result 〜
の3行で無限ループしてる。
0401デフォルトの名無しさん
2005/10/06(木) 19:38:28Ord(Char型)は文字コードを返す。
文字(列)を数値にしたいなら IntToStr。
0402401
2005/10/06(木) 19:41:03-48とかで直してるのか。
忘れてくれ。
0403397
2005/10/07(金) 00:10:33ありがとうございました!!
20日提出なのでまたお世話になると思いますが、宜しくお願いしたします。
0404デフォルトの名無しさん
2005/10/11(火) 23:11:36次の2つの問題なんですが教えてください。よろしくお願いします。
【1】
2行2列の行列AおよびBを考える。これらの行列の各要素を手動で入力、掛け算を実施し、
その結果を表示させるプログラムを配列(array)を用いて作成せよ。
【2】
20名以下の任意数の学生が受験した試験の結果を読み込み、平均点を計算して出力するプログラムを作成せよ。
平均点が、
80点以上ならば「問題が簡単すぎた」
65−80点ならば「適切」
65点以下ならば「難しすぎた」
と出力せよ。
*受験者数は、自分で入力すること。極力、配列を使用すること。
0405デフォルトの名無しさん
2005/10/12(水) 01:51:46これじゃあコンパイルできませんよ^^;
まずはPascalプログラムの基本的な構造を勉強してみてはいかがでしょう(^o^)/
0406デフォルトの名無しさん
2005/10/12(水) 18:48:07ワラタ
0407デフォルトの名無しさん
2005/10/15(土) 17:40:56たぶんいるだろうなとは思ってましたが学校・・・というかクラス同じっぽいですね。
お互い頑張りましょう。
0408デフォルトの名無しさん
2005/10/15(土) 18:27:19program gyouretsu(input,output);
var a,b,c : array [1..2,1..2] of integer;
begin
read(a[1,1],a[1,2],a[2,1],a[2,2]);
writeln;
writeln('':1,a[1,1],'':1,a[1,2]);
writeln('':1,a[2,1],'':1,a[2,2]);
read(b[1,1],b[1,2],b[2,1],b[2,2]);
writeln;
writeln('':1,b[1,1],'':1,b[1,2]);
writeln('':1,b[2,1],'':1,b[2,2]);
c[1,1] := a[1,1] * b[1,1] + a[1,2] * b[2,1];
c[1,2] := a[1,1] * b[1,2] + a[1,2] * b[2,2];
c[2,1] := a[2,1] * b[1,1] + a[2,2] * b[2,1];
c[2,2] := a[2,1] * b[1,2] + a[2,2] * b[2,2];
writeln;
writeln('':1,c[1,1],'':1,c[1,2]);
writeln('':1,c[2,1],'':1,c[2,2]);
end.
0409デフォルトの名無しさん
2005/10/15(土) 18:28:28const n=20;
var score : array [1..n] of integer;
number : integer;
i,amount : integer;
average : real;
begin
amount := 0;
writeln('受験者数を入力してください');
read(number);
writeln('点数を入力してください');
for i:=1 to number do
begin
read(score[i]);
amount := amount + score[i];
end;
average := amount/number;
case trunc(average) of
1..64 : writeln('難しすぎた');
65..79 : writeln('適切');
80..100 : writeln('問題が簡単すぎた');
end;
end.
手続きが分かるなら一つ目はそれを使ったほうがスッキリするかも。
0410デフォルトの名無しさん
2005/10/17(月) 00:32:03本当に申しわけありませんが10/20までなのでよろしくお願いします。
出納帳プログラム
・メインプログラムを手続き、関数で組み立てる。
・作業用の変数はなるべく手続きの中に含める
・収入、支出を表すデータをレコード型itemとして定義する。
項目名(head:16文字),金額名(price:整数),日付(dating:date型)
・item型の配列を宣言し,配列に一回ごとの収入あるいは支出のデータを格納
・機能はデータの入力、1日の収支の表示、月ごと年ごとの計算、検索、ソートなど各自考えよ。
0411410
2005/10/17(月) 00:32:42program kadai(input,output);
type slip=record end;
table=array[1..10] fo slip;
var data : table;
count : integer;
query : char; ……;
procedure nyuryoku(var a:table; cnt:integer);
……;
procedure hyoji(a:table; cnt:integer);
……;
procedure kennsaku(a:table; key:integer);
……;
procedure sort ……
begin
readln(query)
while query <> `e` do begin
case query of
`a`:nyuryoku(data,count);
`b`:hyoji(data,count);
`c`:kensaku(data,day);
`d`:sort(data);
end;
readln(query)
end;
end.
0412デフォルトの名無しさん
2005/10/17(月) 00:35:14という問題で、5ヶ国ぐらいあるんですが、換算する国の番号を何故かアルファベットで入力しないといけません。
こういう場合どのようにしたらいいのでしょうか。小一時間考えたのですが、思いつきませんでした。
0413410
2005/10/17(月) 00:55:45var 変数名:char;
とすればよいと思います
ちなみに入力の部分だけはできたのですが…
type date = record
year:integer;
month:1..12;
day:1..31;
end;
item = record
head:packed array[1..16] of char;
price:integer;
dating:date;
end;
var syuusi:packed array[1..1000] of item;
i,n,x,y:integer;
g:char;
begin
x:=0; i:=0;
writeln('何項目入力するか入力して下さい');
readln(n);
for i:= 1 to n do begin
with syuusi[i] do begin
writeln(i,'項目目');
writeln('項目名を入力して下さい'); readln(head);
writeln('収入、支出を入力して下さい 支出の場合はマイナスをつけて下さい'); readln(price);
writeln('年を入力して下さい'); with dating do readln(year);
writeln('月を入力して下さい'); with dating do readln(month);
writeln('日を入力して下さい'); with dating do readln(day);
end;end;
0415デフォルトの名無しさん
2005/10/17(月) 01:09:59君が一生考えても無理な問題を君に課すとはどんな指導者ですか
0416デフォルトの名無しさん
2005/10/17(月) 01:11:27charでやってみたのですが、途中で止まってしまいます・・・
program calc(input, output);
var
menu : char;
japyen : integer;
exyen : real;
begin
writeln('This program converts Japanese yen into the currency of other countries. ');
writeln;
writeln('******************************');
writeln('d == US Doller');
writeln('p == British Pounds');
writeln('g == Chinese Yuan');
writeln('e == Euro');
writeln('r == Russian Ruble');
writeln('******************************');
write('Exchange to : ');
readln(menu);
write('Enter the amount of money in Japanese Yen : ? ');
readln(japyen);
case menuasc of
d :
begin
exyen:=japyen / 118.94;
writeln('USD = ',exyen:2:2);
writeln;
writeln('End of Job.');
end;
end;
end.
0417デフォルトの名無しさん
2005/10/17(月) 01:14:52case menuasc of はcase menu ofの間違いです。
0418デフォルトの名無しさん
2005/10/17(月) 01:31:51'd' :
begin
とすればできます。
0419デフォルトの名無しさん
2005/10/17(月) 01:44:30何故か止まってしまいます・・・
金額を入力した時点でエラーになるようです
0420デフォルトの名無しさん
2005/10/17(月) 17:04:530421デフォルトの名無しさん
2005/10/17(月) 18:01:29問題なく動くが。
0422デフォルトの名無しさん
2005/10/17(月) 22:04:17何故か動かないのでord関数を使って数字に直した後case文で書きました。
せっかく教えていただいたのに申し訳ありません。
ところで、勝手に繰り上げされるのを防止するにはどうしたらいいのでしょうか?
8.408という数字を2桁表示すると、8.41に繰り上げられてしまうのです・・・
0423デフォルトの名無しさん
2005/10/18(火) 13:50:090424デフォルトの名無しさん
2005/10/18(火) 14:35:42delphi使いになることを想定してのことなのかな。
0425デフォルトの名無しさん
2005/10/18(火) 18:47:58MSの狗になることを想定してのことなのかな。
0426デフォルトの名無しさん
2005/10/18(火) 18:54:45Cが動くのはWinだけではない
0427デフォルトの名無しさん
2005/10/18(火) 20:16:12レス貰ったんだからお礼言おうよ・・・orz
えっと質問です
配列とリダイレクション(?)を使った問題なのですが、
「指定した個数(n)の数字群から最大値を表示させる」という問題で、
dataという無数の数字群のファイルを、n個の配列に読ませて
最大値を判断するのですが、
≫program < data という風に実行すると、
本来、自分で入力するべき数字の数nも、
dataから読み取られてしまうのです。
このような現象が起きないようにするためには、
どうすればいいでしょうか? (長文ゴメナサイ)
0428397
2005/10/18(火) 21:50:47もう提出期限が迫っているのでヒントではなく答えを教えていただけたら幸いです。
プログラムの内容は全開と同じで
「一桁の正数からなる足し算、掛け算及び括弧をつかった式を入力してその答えを返すプログラムを作れ
」というものです。
1+1+(1+(1+1*1))+1などはできるのですが、2+2*(1+1)*3*(1+1)などができません・・・
どうやっていいのかわかりません。。。
自分が今まで作成したプログラムは以下です。
0429397
2005/10/18(火) 22:10:09const n=100;
type string=string[n];
table=array[0..100]of integer;
var letter:string;
a,i,x,k,l,z,fin,finalans:integer;
result,ans:table;
t:boolean;
(*掛け算開始*)
procedure multiply(i,fin:integer;t:boolean;var letter:string;var x:integer;var result:table);
begin
repeat
repeat
i:=i+1;
until (letter[i]='*');
if i>=100 then
t:=false;
if t=true then begin
result[x]:=(ord(letter[i-1])-48)*(ord(letter[i+1])-48);
letter[i-1]:='0';
letter[i]:='0';
letter[i+1]:='0'
end;
0430397
2005/10/18(火) 22:11:45repeat
i:=i+2;
if letter[i]='+' then
t:=false;
if letter[i]=')' then
t:=false;
if t=true then begin
if letter[i]='*' then begin
result[x]:=result[x]*(ord(letter[i+1])-48);
end;
end;
until t=false;
x:=x+1;
until i>=fin;
end;
0431397
2005/10/18(火) 22:12:51procedure addition(i,fin:integer;t:boolean;var letter:string;var x:integer;var result:table);
begin
repeat
repeat
i:=i+1;
until (letter[i]='+');
if i>=100 then
t:=false;
if t=true then begin
result[x]:=(ord(letter[i-1])-48)+(ord(letter[i+1])-48);
writeln('r[', x, ']: ', result[x]);
x:=x+1;
letter[i-1]:='0';
letter[i]:='0';
letter[i+1]:='0';
end
until i>=fin;
end;
0432397
2005/10/18(火) 22:14:07procedure resultadd(x:integer;var result:table;var l:integer;var ans:table);
var
k:integer;
begin
k:=1;
for k:=1 to x-1 do begin
ans[l]:=ans[l]+result[k];
writeln('r',result[k]);
end;
for k:=1 to x-1 do begin
result[k]:=0;
end;
writeln('ANS:',ans[l]);
l:=l+1;
end;
0433397
2005/10/18(火) 22:15:13procedure priority(i,x:integer; t:boolean;var result:table;var letter:string;var ans:table);
var
eol,sol:integer;
begin
repeat
i:=i+1;
until letter[i]=')';
if i>=100 then
t:=false;
if t=true then begin
eol:=i;
repeat
i:=i-1;
until letter[i]='(';
sol:=i;
letter[sol]:='0';
letter[eol]:='0';
multiply(i,eol,t,letter,x,result);
addition(i,eol,t,letter,x,result);
resultadd(x,result,l,ans);
i:=sol;
if letter[i-1]='*' then begin
ans[l-1]:=ans[l-1]*(ord(letter[i-2])-48);
sol:=i-2;
end;
priority(i,x,t,result,letter,ans);
end;
end;
0434397
2005/10/18(火) 22:23:17procedure finalanswer(l:integer;ans:table;var finalans:integer);
var
i:integer;
begin
writeln('L:',l);
for i:=1 to (l-1) do begin
finalans:=finalans+ans[i];
writeln('ANS:',ans[i]);
end;
writeln;
writeln;
write('この式の答えは「');
write(finalans);
writeln('」である');
end;
0435397
2005/10/18(火) 22:23:56begin
writeln('数式を入力してください');
readln(letter);
i:=1;
l:=1;
x:=1;
z:=0;
t:=true;
ans[0]:=0;
priority(i,x,t,result,letter,ans);
multiply(i,n,t,letter,x,result);
addition(i,n,t,letter,x,result);
resultadd(x,result,l,ans);
finalanswer(l,ans,finalans);
end.
0436397
2005/10/18(火) 22:32:20あと「1+1*1」のように掛け算が最後に来てるときにバグが生じてかえす値がおかしくなってしまいます。。。1+1*1+1は「3」とかえしてくれるのですが。。。
連投してスレを汚してしまったのですが、ご教授いただけたら幸いです。
0437397
2005/10/18(火) 23:28:29以下が改訂版です。
本当に申し訳ありませんでした。
(*掛け算が続いていた場合*)
repeat
if letter[i+2]<>'*' then
t:=false;
if letter[i+2]='*' then begin
i:=i+2;
result[x]:=result[x]*(ord(letter[i+1])-48);
end;
until t=false;
x:=x+1;
until i>=fin;
end;
0438デフォルトの名無しさん
2005/10/19(水) 00:43:11「正の整数iとjが入力されたとき、その最小公倍数と最大公約数を求めるプログラムを作成しなさい」
よろしくお願いします。
0439デフォルトの名無しさん
2005/10/19(水) 01:35:36そしてans[1]=4にもなってる。
その後カッコの前に*があるからans[l=1]:=ans[1]*2が実行されてans[l=1]=8。
それから本文中で2*2*0000という計算を開始してんだけど、まず2*2を実行してresult[x=1]=4、
その後*が続いてるから4*0を実行し、result[x=1]=0。
よってans[l=2]=0になってる。
最終的にans[1]+ans[2]=8。
これが答えと出力されている。
やりたいことはなんとなく分かるんだけどどうすればいいのかを言えるほどはよく分かってない。
でもとりあえずカッコをなくした時点でのの計算が2*2*0000になってるのはよろしくないかと思う。
カッコの前に掛け算が2つ以上続いた場合、とか作るとこの場合なら計算できそうだけど。
でも(2+2)*2*(2+2)とかになるとまた問題が生じるのかな?
説明が分かりにくいけどゴメン、明日の1限はテストなんだ。
0440439
2005/10/19(水) 01:37:270441デフォルトの名無しさん
2005/10/19(水) 01:40:45「再帰下降法」でも良いのかな?
program f(input, output);
function Eval: Integer;
var C: Char;
procedure ReadChar;
begin
Read(C);
end;
function Expression: Integer;
var X: Integer;
function Term: Integer;
var X: Integer;
function Factor: Integer;
begin
if C in ['0'..'9'] then begin
Factor := Ord(C)-Ord('0');
ReadChar;
end else if C = '(' then begin
ReadChar;
Factor := Expression;
if C=')' then ReadChar else writeln('括弧が閉じられてないよ');
end else begin
writeln('不正な入力: ',C); Factor := 0;
end;
end;
0442デフォルトの名無しさん
2005/10/19(水) 01:42:18X := Factor;
while C = '*' do begin
ReadChar;
X := X* Factor;
end;
Term := X;
end;
begin
X := Term;
while C='+' do begin
ReadChar;
X := X + Term;
end;
Expression := X;
end;
begin
ReadChar;
Eval := Expression;
end;
begin
writeln(Eval);
end.
0444397
2005/10/19(水) 13:39:43こんな手法思いつきすらしませんでした・・・
ありがとうございました!!神よ!!!
僕の命がつながりました!!!!!!
0445439
2005/10/19(水) 19:26:23将来を嘱目されるのは間違いないんじゃない。
0446デフォルトの名無しさん
2005/10/19(水) 20:37:000447397
2005/10/19(水) 21:07:12やはり>>445さんのいうようにばれちゃう可能性があると思ったので、自分なりにもう一度改変してみました。
しかしやはり括弧の処理がどうもうまく行きません。
(1+1)や1+(1+1)などはうまく行くのですが(1+1)+1や(1+1)+(1+1)がうまく行きません。
これがうまく行ったら前レスで質問していた
(1+1)*2*(1+1)とかもうまく行くと思うのです。
もう丸投げします・・・
一応改訂版のプログラムをはります。
また連投になってしまうのですが申し訳ありません。
足し算・掛け算・その他のアルゴリズムにエラーはありませんでした。
あと
>>446さん、正解です
0448397
2005/10/19(水) 21:15:57const n=100;
type string=string[n];
table1=array[0..100]of integer;
table2=array[0..100]of char;
var tmp:string;
i,k,fin,eol:integer;
num:table1;
let:table2;
t:boolean;
(*空白を飛ばす*)
procedure closetmp(n:integer;t:boolean; var tmp:string);
var
a,emps,empe:integer;
begin
a:=0;
repeat
repeat
a:=a+1;
until tmp[a]=' ';
if a>=n then
t:=false;
if t=true then begin
emps:=a;
repeat
a:=a+1;
until tmp[a]<>' ';
end;
0449397
2005/10/19(水) 21:16:48t:=false;
if t=true then begin
empe:=a;
tmp[emps]:=tmp[empe];
tmp[empe]:=' ';
a:=emps
end;
until t=false;
end;
(*分割*)
procedure divide(i,n:integer;tmp:string;var num:table1;var let:table2);
begin
repeat
if tmp[i] in ['0'..'9'] then begin
let[i]:='0';
num[i]:=ord(tmp[i])-48;
end
else begin
let[i]:=tmp[i];
num[i]:=0;
end;
i:=i+1;
until i>=(n+1);
end;
0450397
2005/10/19(水) 21:18:00procedure closelines(n:integer;var num:table1;var let:table2);
var
i,k:integer;
begin
i:=0;
repeat
i:=i+1;
if (ord(let[i])-48)=num[i] then begin
k:=i;
repeat
let[k]:=let[k+1];
num[k]:=num[k+1];
k:=k+1;
until k>=n;
i:=0;
end;
until i>=n;
end;
(*掛け算開始*)
procedure multiply(t:boolean;i,fin:integer;var num:table1;var let:table2;var eol:integer);
var
k:integer;
begin
k:=i;
repeat
repeat
k:=k+1;
until (let[k]='*');
0451397
2005/10/19(水) 21:19:11t:=false;
if t=true then begin
num[k-1]:=num[k-1]*num[k+1];
let[k-1]:='0';
let[k]:='0';
let[k+1]:='0';
num[k+1]:=0;
num[k]:=0;
closelines(n,num,let);
k:=i;
eol:=eol-2;
end;
until k>=fin;
end;
(*足し算開始*)
procedure addition(t:boolean;i,fin:integer;var num:table1;var let:table2;var eol:integer);
var
k:integer;
begin
k:=i;
repeat
repeat
k:=k+1;
until (let[k]='+');
0452397
2005/10/19(水) 21:20:07t:=false;
if t=true then begin
num[k-1]:=num[k-1]+num[k+1];
let[k-1]:='0';
let[k]:='0';
let[k+1]:='0';
num[k+1]:=0;
num[k]:=0;
closelines(n,num,let);
eol:=eol-2;
k:=i;
end;
until k>=fin;
end;
(*括弧の中の計算*)
procedure priority(n:integer; t:boolean;var num:table1;var let:table2);
var
i,eol,sol:integer;
begin
i:=0;
repeat
i:=i+1;
until let[i]=')';
0453397
2005/10/19(水) 21:22:08t:=false;
if t=true then begin
eol:=i;
repeat
i:=i-1;
until let[i]='(';
sol:=i;
multiply(t,sol,eol,num,let,eol);
addition(t,sol,eol,num,let,eol);
let[sol]:='0';
let[eol]:='0';
closelines(n,num,let);
end;
end;
(*最終合計*)
procedure finalanswer(num:table1);
var
i:integer;
begin
writeln;
writeln;
write('この式の答えは「');
write(num[1]);
writeln('」である');
end;
0454397
2005/10/19(水) 21:23:39begin
writeln('数式を入力してください。');
readln(tmp);
i:=1;
eol:=1;
t:=true;
closetmp(n,t,tmp);
divide(i,n,tmp,num,let);
priority(n,t,num,let);
multiply(t,i,n,num,let,eol);
addition(t,i,n,num,let,eol);
closelines(n,num,let);
finalanswer(num);
end.
0455397
2005/10/20(木) 04:40:38あくまで予感ですが。。。
連投に連投を重ね、真に申し訳ありませんでした!
考えてくださった方々本当にありがとうございました!!
0456デフォルトの名無しさん
2005/10/26(水) 00:51:55よく知らないからもっとうまい方法あるんだろうけど。
#! /bin/sh
echo $1 > tmp
cat $2 >> tmp
program < tmp
rm tmp
というshコマンドを作る。
コマンドの第一引数に数値の数、第二引数にデータファイル名を指定する。
これを test.sh という名前で作ったとしたら
ファイル"data"から50個の数値を使う場合
test.sh 50 data
とする。
やってる事は第一引き数を tmpというファイルに書き出し、
第二引き数で指定されたファイルの内容を"tmp"に追加書き出し。
これを入力ファイルとして 'program'を起動する。
最後に"tmp"ファイルを消去する。
0457デフォルトの名無しさん
2005/10/29(土) 10:05:340458デフォルトの名無しさん
2005/11/05(土) 14:57:47はっきり言って超初心者です。忙しいので時間がないのでここにくる余裕がないかもしれません。
しかも、自パソが現在使えないので携帯からです。
かなりヤバい状況なので、一緒に考えて下さるとありがたいです。
一応課題を書いておきます。
課題1
数列を読み込み、バブルソートによってソートし、途中経過及び最終結果を表示するプログラムを作成せよ。また、正しく動作していることを示す実行結果を添付せよ。
課題2
プログラム例(時間がある時にかきます)を元にして、クイックソートのプログラムを完成させよ。また、正しく動作していることを示す実行結果を添付せよ。
課題3
マージ(merge)ソートについて調べて、他の課題と同様のプログラムを完成させよ。また、正しく動作していることを示す実行結果を添付せよ。
プログラム例などがあるのは、時間をみつけて書き込みます。よろしくお願いします。
0459デフォルトの名無しさん
2005/11/05(土) 16:19:45どのアプリが起動させたかを知る方法はありますでしょうか?
0460デフォルトの名無しさん
2005/11/05(土) 21:33:45それは宿題か? スレ違いではないのか?
0461デフォルトの名無しさん
2005/11/06(日) 08:05:29ちまよって宿題スレに書いてしまいました。
そういう訳でお願いします。
0462PASCAL
2005/11/06(日) 13:46:031.学生番号と身長(cm)の組を多数入力し、入力したデータをそのまま出力する。
ただし、身長が180以上の場合だけ。”tail"という文字を横につけ加える。
入力データのストッパは、学生番号=身長=0とする。
(入力例) (出力例)
1001 168 1001 168
1002 176 1002 176
1004 182 1004 182 tail
0 0
0463PASCAL
2005/11/06(日) 13:56:182.車種、数量、新車ー中古車の区分、の組からなる売り上げデータを多数
入力し、新車、中古車をそれぞれの数量合計を求めて出力する。入力のストッパ
は、車種が"END"であるとする。
(入力例) (出力例)
civic 12 古 新車 7
sunny 8 古 中古車 20
splinter 7 新
END 0 0
0464458
2005/11/06(日) 19:51:02バブルソートのアルゴリズム
procedure sort(n: integer);
var
ループ制御用の変数i,jを宣言する;
その他、作業用の変数を宣言する;
begin
for i:=n-1 downto 1 do
begin
for j:=1 to i do
begin
もし A[j]>A[j+1]ならば
A[j]とA[j+1]の内容を交換する
end
end
end;
begin
{入力部}
ソートすべき要素の個数を読み込み、それをnとする;
n個の数を読み込み、順に配列Aへ格納する;
{ソート部}
sort(n); {配列A[1..n]をソートする}
{出力部}
配列A[1..n]の内容を書き出す
end.
0465458
2005/11/06(日) 19:52:57上記のアルゴリズムを実現するプログラム中の適切な場所に
for k:=1 to n do
begin
write('A[',k:2,'] : ');
writeln(A[k])
end;
等を追加すれば、その時点での配列Aの内容を書き出すことになる。途中経過の確認などに役立つ。
変数jについてのループを1からiまでまわったときに、一度も交換が起こらなければ、配列全体はソート済みであるといえる。
そのときには、早めに処理を終了してもよい。このような終了条件を追加したバブルソートは、「ほとんどソート済みのデータ」に対しては速いアルゴリズムとなる。
0466458
2005/11/06(日) 20:05:45program QuickSort(input,output);
var
ソート対象となる数列を格納するinteger型配列Aを宣言する;
要素数を表す変数nを宣言する;
その他、ループ制御用の変数を宣言する;
procedure sort(low,high : integer);{A[low..high]をソートする手続き}
var
分割の基準を表す変数bを宣言する;
探索の注目位置を表す変数i,jを宣言する;
その他、作業用の変数を宣言する;
begin
if low < high then {low = highならば要素が1つだけなのでソートする必要なし。}
begin
i:=low; {探索の初期位置を設定}
j:=high;
b:=A[low]; {分割の基準を設定}
0467458
2005/11/06(日) 20:07:22repeat
while A[i] < b do {左側から探索してA[i]>= bとなる要素をみつける}
i:=i+1;
while A[i] > b do {右側から探索してA[j]<= bとなる要素をみつける}
j:=j-1;
if i<=j then
begin
A[i]とA[j]の内容を交換する;
i:=i+1; {探索の注目位置を進める}
j:=j-1
end
until i>j; {右からの探索と左からの探索がすれ違うまで探索する}
sort(low, j); {左側の部分数列をソートする}
sort(i, high) {右側の部分数列をソートする}
end
end;
begin
{入力部}
ソートすべき要素の個数のみを読み込み、それをnとする;
n個の数を読み込み、順に配列Aへ格納する;
{ソート部}
sort(1, n); {配列A[1..n]をソートする}
{出力部}
配列A[1..n]の内容を書き出す
end.
0469デフォルトの名無しさん
2005/11/07(月) 00:54:53マルチ
0470デフォルトの名無しさん
2005/11/07(月) 12:11:270471デフォルトの名無しさん
2005/11/08(火) 00:51:450472458
2005/11/08(火) 01:06:16俺の話??
上に書いたプログラムは、プログラムのアルゴリズム例として配られたものをそのまま書きました
現在はプログラムは作り終えて、レポートに入るところです
Pat図をつけろとか、なにやら俺にはわかりませんがなんとかしようと思います
課題自体は上に書いた通りなんで、わからなくなったら助言願います
0473デフォルトの名無しさん
2005/11/08(火) 01:21:46なんていうか、問題作った奴センス無いな
0474デフォルトの名無しさん
2005/11/08(火) 01:29:351.全て大文字
2.最初の1文字のみ大文字、後は小文字
3.全て小文字
の3つを出力するプログラムを作成せよ。
(アルファベット以外の時はそのまま出力せよ)
という課題なのですが、function型かprocedure型を使って書かないといけません。
辛うじて1は出来たのですが、他がさっぱりです。
どうかよろしくおねがいします。
0475458
2005/11/08(火) 02:04:46そうなの??まあなんつうか講義は問題あるけどな
とりあえず授業はしてくれない。課題を与えて、やってってそれだけ
聞けば教えるって言ってるけど、何も知らんのに何聞けばええねん!!!
ごめんなさい。愚痴でした
0476474
2005/11/08(火) 23:18:250477デフォルトの名無しさん
2005/11/09(水) 00:05:070478デフォルトの名無しさん
2005/11/09(水) 00:35:45function ToUpper(str: string): string;
begin
result:= UpperCase(str);
end;
function ToUpper1stOnly(str: string): string;
var
tmp: string;
begin
str:=LowerCase(str);
tmp:=str[1];
tmp:=UpperCase(tmp);
str[1]:=tmp[1];
result:=str;
end;
function ToLower(str: string): string;
begin
result:= LowerCase(str);
end;
0479474
2005/11/09(水) 12:41:37申し訳ありません、よろしければ全部を作って欲しいのですが、だめでしょうか?
あと、stringはcharではだめなのでしょうか?実はそれしか習ってないのでstringは分からないのです・・・
pascalを全く分かってない阿呆な者でして・・・
すみませんが、よろしくお願いします。
0480デフォルトの名無しさん
2005/11/10(木) 01:02:25ほら、String使わないで作ったぞ
function First(const Source: PChar): PChar;
begin
Result:= AnsiStrUpper(Source);
end;
function Second(const Source: PChar; var Dest: PChar; const Size: Integer): PChar;
var
C: Array[0..9] of Char;
begin
lstrcpy(C, Source);
AnsiStrLower(C);
if (C[0] in ['a'..'z']) then
C[0]:= Chr(Ord(C[0]) - $20);
Result:= lstrcpyn(Dest, C, Size);
end;
function Third(const Source: PChar): PChar;
begin
Result:= AnsiStrLower(Source);
end;
0481デフォルトの名無しさん
2005/11/10(木) 03:13:36Dec(C[0], $20)でいいような、
…って、宿題にDelphi拡張込みのコードはどうなんだろう。
Charしか習って無いというのは全部array[1..10] of charでやれってことでは。
そのための「10文字以内」だろうし。
0482デフォルトの名無しさん
2005/11/10(木) 11:19:12分かっててやってるんだろ
それくらい分かれ
0484デフォルトの名無しさん
2005/11/10(木) 21:14:510485デフォルトの名無しさん
2005/11/10(木) 21:19:16そもそも何がしたいのか読み取れん。
「ファイル名を与えられて」というからにはコマンドライン引数を受け取りたいのか、「どのアプリが起動させたかを」というからにはエクスプローラーから起動したならexplorer.exe、コマンドプロンプトから起動したならcmd.exeとかそういうのを知りたいのか。
何がやりたいわけ。
0486デフォルトの名無しさん
2005/11/10(木) 21:46:35>>485 はい。そのcmd.exeです。
たとえば、cmd.exeなら与えられたファイルを処理するけど
他のソフトがshellExecuteなどで
myApp.exe "test.txt"させた場合は何もしないようにしたいんです。
0487デフォルトの名無しさん
2005/11/10(木) 22:00:29ShellExecuteでもcmd.exe /c myApp.exe "test.txt"とかやられたら区別できない気もするけど。
厳密にやりたいならSDKのPROCESSENTRY32のあたりをうろついて親の親まで辿ってきゃいいかと。
0488デフォルトの名無しさん
2005/11/10(木) 22:25:35僕には難しそうで断念しそうな感じですが、
だめもとでやってみようかと思います!
0489名無し大学生
2005/11/11(金) 17:32:491:氏名から番号と、メルアドを検索
2:番号から氏名と、メルアドを検索
3:メルアドから、氏名と番号を検索
というプログラムを作れと言われています。
レコード件数は30件で、テキストファイルを作れと言われています。はっきり言うてまったくわかりません。
どうか力を貸してください。Record文とCase文を使うようです。
0490デフォルトの名無しさん
2005/11/11(金) 18:46:28Accessとかで作ったらまずいの?
0491デフォルトの名無しさん
2005/11/11(金) 19:56:08DelphiのPro以上を購入。
まずDatabase Desktopを起動して項目を設計する。
Delphiを起動してデータベース関係のコンポーネントを貼りまくる。
テキストファイルを扱うデータベースのドライバもあるし、何の問題も無い。
最後に申し訳程度にrecordとcaseをどこかに書いて終了。
0492デフォルトの名無しさん
2005/11/12(土) 19:00:29>>489
同じ大学だw
とりあえず
氏名 packed array[1..20]
電話 packed array[1..15]
メル packed array[1..30]
をレコードでまとめて
レコードをarrayにして
for でまわしながら入力すればできる
検索は検索したい名前を入力のあとその名前と登録した名前が一致するまで
for文で繰り返して一致したら表示するようにつくればよし
それをcase文でまとめろ
あと3日もあればできるだろw
0493デフォルトの名無しさん
2005/11/13(日) 01:14:380494デフォルトの名無しさん
2005/11/13(日) 22:05:23検索部分が分かりません・・・
宜しければ詳しく教えていただけないでしょうか。
0495デフォルトの名無しさん
2005/11/13(日) 23:56:08if i番目のデータ.名前 = 検索したい名前 then
WriteLn('ウヒョー');
0496デフォルトの名無しさん
2005/11/14(月) 00:11:040497名無し
2005/11/14(月) 17:43:290498デフォルトの名無しさん
2005/11/14(月) 17:55:520499%96%bc%96%b3%82%b5
2005/11/14(月) 18:10:16つまり、検索対象の先頭の文字(番号)を入力しただけでも検索ができることです。
0500デフォルトの名無しさん
2005/11/14(月) 18:28:02db云々は講義聴いてたら分かるよね。
if (search[1]=db[i].mail[1]) then
begin
検索結果を表示
end;
これで1文字目だけを検索するよ。
ただ、a,ab,abcと設定しておいてabcを検索しても、
a,ab,abcの3つが検索結果として出てきちゃうけどね。
あとは頑張ろう。
0501%96%bc%96%b3%82%b5
2005/11/14(月) 18:35:230502%96%bc%96%b3%82%b5
2005/11/14(月) 18:55:450503デフォルトの名無しさん
2005/11/14(月) 19:16:51/::^'´::::::::::::i、::::::::::::::::::::::::::::\
‐'7::::::::::::::::::::::::ハ:ハ::|ヽ:::;、::::::::::::丶
/::::::::::::::/!i::/|/ ! ヾ リハ:|;!、:::::::l
/´7::::::::::〃|!/_,,、 ''"゛_^`''`‐ly:::ト
/|;ィ:::::N,、‐'゛_,,.\ ´''""'ヽ !;K
! |ハト〈 ,r''"゛ , リイ)| 死ねばいいと思うよ
`y't ヽ' //
! ぃ、 、;:==ヲ 〃
`'' へ、 ` ‐ '゜ .イ
`i;、 / l
〉 ` ‐ ´ l`ヽ
/ ! レ' ヽ_
0504489
2005/11/15(火) 01:14:56/ . ゚
, ' 。 ・
` ー _ - ' ゜
。 . 。 ゚
: 。
゚ .
ヾ冖フ ヾス
[ ,] [ ] 、_ノ、_人_人_人_人_人_人_人_人_人_人_
|. i /l,ィ .! ノ
. ! }.r`'j7 ! _) 皆オラに宿題を教えてくれ!!
! `、亠 { ヽ
} _l _,l_,j '^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^
ヽシ_,-i {
/`´~バ}
. / j !
∧ '"/`,イ
! ヽ'/l_ j
/ \,/ }\,!
.ァ、ヽィ <`-イ
. |. `iT. ヽ j
\ll' `'
0505489
2005/11/15(火) 01:23:25/ ヽ / ヽ
______ / ヽ__/ ヽ
| ____ / :::::::::::::::\
| | / / \ :::::::::::::::|
| | var | (● (● ::::::::::::::| < 今日の19時が期限なの…
| | aho : int| ∪ ∪ :::::::::::::|
| | Data: cha| (__人__丿 .....:::::::::::::::::::/
| |____ ヽ .....:::::::::::::::::::::::<
└___/ ̄ ̄ :::::::::::::::::::::::::|
|\ | :::::::::::::::::::::::|
0506デフォルトの名無しさん
2005/11/15(火) 01:30:250507デフォルトの名無しさん
2005/11/15(火) 08:23:58とりあえず何がわからないんだ
上に書いてるのを使えばできると思うが
俺はとっくに出来てるから出してくるわw
>>502
俺はそこはこだわらないからやってないが
if (search[1]=db[i].mail[1]) then
begin
検索結果を表示
end;
の
ifを大きくfor 1 to 桁 do
でできないか?
0508%96%bc%96%b3%82%b5
2005/11/15(火) 12:39:370509デフォルトの名無しさん
2005/11/15(火) 15:48:30だから、出来る/出来ないでなくて、何がわからないのか、何処で躓いているのかを書いてくれ。
0510デフォルトの名無しさん
2005/11/15(火) 16:58:470511デフォルトの名無しさん
2005/11/15(火) 18:17:14仕方ないあと50分だから助言
var name:packed ar(ry
readln(name);したあとに
for i:=1 to 20 do
begin
if nameの一文字目が文字の場合
文字数に+1
これで検索した文字数がわかるから
次にmeiboの全員を検索する
for i:=1 to 30 do
begin
それから
その検索名の一文字目と検索する対象の一文字目があってるかを調べて
あってたらAにでも+1してあってなかったらスルー
そうすれば全部あってる場合
検索の名前の数=対象の調べた文字
になるからそうなったやつを全部表示すれば対象の文字に例えば調べた文字が
woだとしても
word
world
の二つが引っかかるようになる
俺の提出したやつはそういうやり方だから全部は言えないなw
0512デフォルトの名無しさん
2005/11/15(火) 20:00:13/ , `ヽ.
/〃//,. ,ィl/|l ト、 !、 、 ヽ
ー'´| | l |1 | !l. l| ! | l.|ヽ ! !、 ',
YレV!ヒエ「! |l.「_ト!Ll」| l l l
! lハイJ | ´|_jヽ. リ,! ! l. l | >>511は
|l |l.} ー , L _,ハl.lトl l. | l 日本語が不自由なの?
|l ilト、 n '' ,1l|ィ| |l l |
_ 二,ニ^tュ--ェ_t1」l.|l !リ|_lノ
r7´ f r┐| 〔/ミヽ>,-、 ̄´
Y ー个‐'t ハ-、_'ゝ、
ヽ ._・ rく ̄ヽト-'丿 ヽ l
/ (・__,)ゝi┬'´ハ` '`|
0513デフォルトの名無しさん
2005/11/16(水) 12:58:24AAは他のスレでやろうな
0514名無し@困った大学生
2005/11/18(金) 19:03:34そのプログラムを、名前を入力すると、自動で、アルファベット順に並べてくれます。例:aさんbさんeさんと並んでいて、dさんを入力すると、bとeの間に追加されるという事です。
ただし、あらかじめ入力する名前はアルファベット順でよいと言う事です。
function文などを追加する場合は、点線以外に追記してもよいらしいです。せめてヒントだけでもいいんでよろしくお願いします!
0515デフォルトの名無しさん
2005/11/18(金) 19:07:04元となるプログラムがないとどうともいえないかと
0516デフォルトの名無しさん
2005/11/18(金) 19:24:13既にあるプログラムの指定箇所を改造して提出しなければなりません。
現状では、人数と名前のリストを入力すると、入力した名前が出力され
また、更に名前を入力すると、その名前のリスト中のインデックスを出力します。
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
このプログラムの下線の部分を、アルファベット順で適切な位置に挿入するように修正したいのです。
ただし、予め入力されている名前のリストは、既にアルファベット順に並んでいて良いものとします。
例)a、b、e、と並んでいて d を入力すると b と e の間に挿入される。
新たに関数を定義する場合は指定箇所以外に追記しても構わないそうです。
せめてヒントだけでも良いので宜しくお願いします。
0517デフォルトの名無しさん
2005/11/18(金) 23:05:490518名無し
2005/11/19(土) 14:21:280519デフォルトの名無しさん
2005/11/19(土) 15:15:150520デフォルトの名無しさん
2005/11/19(土) 15:32:50よろしくお願いします。
program linkedlist(input, output);
type
timerecord = record
Name: packed array[1..20] of char;
guard: boolean;
next: ^timerecord;
end;
Pointertimerecord = ^timerecord;
Namearray = packed array[1..20] of char;
var
head,last : Pointertimerecord;
n,count : integer;
prev : Pointertimerecord;
DataNO : integer;
procedure printdata(Data: Pointertimerecord);
begin
while Data^.guard=false do
begin
writeln('====================');
writeln(' Name = ',Data^.name);
Data:=Data^.next;
end; { while }
writeln('====================');
end; { printdata }
0521デフォルトの名無しさん
2005/11/19(土) 15:33:31begin
new(Newdata);
Newdata^.next:=Prevdata^.next;
Prevdata^.next:=Newdata;
{ enter data of record }
write('Adding data -- Enter the name : ? ');
readln(Newdata^.name);
if Prevdata^.guard=false then
begin
Newdata^.guard:=false;
end else begin
Newdata^.guard:=true;
Prevdata^.guard:=false;
end; { if }
end; { addlist }
0522デフォルトの名無しさん
2005/11/19(土) 15:34:16new(head);
last:=head;
{ enter data of record }
write('Enter number of record : ? ');
readln(count);
for n:=1 to count do
begin
{ enter data of record }
write('No.',n:2,'--Enter the name : ? ');
readln(last^.name);
last^.guard:=false;
{ make next datum }
new(last^.next);
last:=last^.next;
last^.guard:=true;
end; { for }
writeln;
{ print record }
last:=head;
printdata(last);
0523デフォルトの名無しさん
2005/11/19(土) 15:34:51last:=head;
{----------------------------------------------------}
write('Enter the position number of a new datum to be inserted (>=2) : ? ');
readln(DataNO);
if DataNO > (count+1) then
begin
DataNO:=count+1;
end;
for n:=1 to (DataNO-2) do
begin
last:=last^.next;
end; { for i }
prev:=last;
addlist(prev,last);
if DataNO<2 then
begin
head^.next:=last^.next;
last^.next:=head;
head:=last;
end; { if }
{----------------------------------------------------}
{ print record }
last:=head;
printdata(last);
writeln('End of Job.');
end.
以上です。よろしくお願いします。
0524名無し
2005/11/19(土) 15:58:45この部分は、既にある文字に一つ何かを追加する時、入れたい場所を番号で指定するようになっています。
ここを入力した文字がアルファベット順に並ぶようにするプログラムになるようにしなければならなければなりません。
520さんどうもです。
0525デフォルトの名無しさん
2005/11/19(土) 16:01:28順番に見て行って順番が後の名前を見つけたら、その前に挿入
0526名無し
2005/11/19(土) 16:41:04具体的に教えてください…汗
0527デフォルトの名無しさん
2005/11/19(土) 17:09:46具体的にどこができてないの?
0528名無し
2005/11/19(土) 17:18:54実際にソースで書いてもらえないと理解できないです。
0529デフォルトの名無しさん
2005/11/19(土) 19:42:130530デフォルトの名無しさん
2005/11/19(土) 22:13:050531.
2005/11/19(土) 22:58:070532デフォルトの名無しさん
2005/11/19(土) 23:04:220533.
2005/11/20(日) 10:12:010534デフォルトの名無しさん
2005/11/20(日) 10:33:09ネコミミがついてないからだ。ネコミミをつけろ。
0535デフォルトの名無しさん
2005/11/20(日) 10:53:550536デフォルトの名無しさん
2005/11/20(日) 11:31:151個目と2個目を比較して位置を入れ替えることはできるけど
2個目と3個目
3個目と4個目という風にしていくと繰り返しでは出来なくなるような
0537デフォルトの名無しさん
2005/11/20(日) 12:05:50i個目とi+1個目を比較
でいいんじゃない?
0538名無し
2005/11/20(日) 12:50:560539デフォルトの名無しさん
2005/11/20(日) 12:56:42自分がやると
book 3
pen 1
bike 3
apple 2
apple 2
book 2
bike 3
bike 3
みたいになります。単語ごとにまとめるアイディアください
0540デフォルトの名無しさん
2005/11/20(日) 13:42:310541デフォルトの名無しさん
2005/11/20(日) 15:43:19よほど利用者が少ないのか、回答できない低レベルなユーザーばっかなのか。
回答するならきちんと教えてあげなよ。
0542デフォルトの名無しさん
2005/11/20(日) 16:39:54last:last^.next
last:=headという風にしてるから
繰り返しをするとデータのつながりが切れたりするかと
4→3→2→1を1→2→3→4に並び替える時に
last:=last^.next;
last^.next:=head;
で3→4にして
head^.next:=last^.next;
で4→2
にしたとして今headが4→2→1 lastが3→4→2→1
head:=lastで同じにして
3→4→2→1
繰り返しだから
last:=last^.next; lastが4→2→1 head3→4→2→1
last^.next:=head;
とするとここで4→3→4に戻る・・・とここで変になるし
もうひとつprevというのを使っても途中でデータ消えたりするな・・
繰り返す方法が他にあるのかそれともこの計算方法が間違ってるのか・・・
あと1文字目だけを見るときは簡単だが1文字目と2文字目が同じで3文字目が違う場合に
アルファベット順にする場合はもっと複雑になる気が・・・
0543デフォルトの名無しさん
2005/11/20(日) 17:10:39この問題だと最初につくるリストはアルファベット順だから
そもそもソートは必要ないんだけどね。
>1文字目だけを見るときは簡単だが・・・
比較をする関数で1文字目から違う文字がでてくるまでループするだけ
0544デフォルトの名無しさん
2005/11/20(日) 18:08:03pen 1
bike 3
apple 2
apple 2
book 2
bike 3
bike 3
を
book 2
pen 1
bike 3
apple 2
(単語の後の数字は配列中の単語の個数)
のようにまとめて表示したいのですが、分かりづらくてすいません
0545デフォルトの名無しさん
2005/11/20(日) 18:27:46とりあえず元の問題を表示するのとなにを使えと言われてるのかが判らないと
教えるに教えれんぞ
>>543
リストが元からアルファベット順とか書いてないのだが
あと{----}の線の間なら全て消して書き直してもいいのだろうか?
addlistという関数を使うとややこしくなる
0546デフォルトの名無しさん
2005/11/20(日) 18:40:58>ただし、予め入力されている名前のリストは、既にアルファベット順に並んでいて良いものとします。
だそうだ。
0548デフォルトの名無しさん
2005/11/20(日) 22:58:39そういう自分が教えてあげない時点で駄目だろw
0549デフォルトの名無しさん
2005/11/20(日) 23:40:39function compare(p,q:pointertimerecord):boolean;var i:integer;
function c:integer;begin c := Ord(p^.name[i])-Ord(q^.name[i]);end;
begin i:=1;while(i<=20)and(c=0)do i:=i+1;compare:=c>0;end;
addlist(head,last);if compare(head, head^.next) then begin
prev:=head^.next;head^.next:=prev^.next;prev^.next:=head;head:=prev;
end else prev:=head;last:=prev^.next;while(not last^.next^.guard)and
compare(last,last^.next) do begin prev^.next:=last^.next;prev:=prev^.next;
last^.next:=prev^.next;prev^.next:=last;end;
0550名無し
2005/11/21(月) 00:24:06でも今までとは違ってこれを見ても理解できない自分が情けない・・・
0551デフォルトの名無しさん
2005/11/21(月) 09:53:47お前いい加減にしろよ?
なんで自分で試そうとしないんだよ
0552名無し
2005/11/21(月) 10:16:09ありがとう指摘してくれて。
0553デフォルトの名無しさん
2005/11/21(月) 13:16:18向上心のかけらも無い
0554デフォルトの名無しさん
2005/11/21(月) 15:44:59>>553の言うとおり向上心の欠片も持ち合わせてない。
0555デフォルトの名無しさん
2005/11/21(月) 15:54:07なんだよおまえw
0556デフォルトの名無しさん
2005/11/21(月) 19:23:592つほど質問をさせてください。
二つ目のfunctionはどのような意味があるのでしょうか?
begin〜end;が二つあるのはどういうことでしょうか?
二つとも講義中には出てこなかった表現なので、全く分かりません。
5時間ほど自分で調べていたのですが、答えが見つかりませんでした。
どうか宜しくお願いします。
0557デフォルトの名無しさん
2005/11/21(月) 21:29:49関数内関数。
function Hoge;
function Hige;
begin
end;
begin
end;
Hige は Hoge 内でのみ使える関数。
0559デフォルトの名無しさん
2005/11/22(火) 15:31:23関数内関数をを使わずにっていうのはできないんですか?
0560デフォルトの名無しさん
2005/11/22(火) 18:44:51cを変えてやればできるよ
0561デフォルトの名無しさん
2005/11/23(水) 03:36:430562デフォルトの名無しさん
2005/11/23(水) 04:46:480563デフォルトの名無しさん
2005/11/23(水) 18:14:12ほんとマジ助かった
提出まで後少ししか時間ないからあせってたところ
つか、こんなところに仲間がいたなんてwww
0564デフォルトの名無しさん
2005/11/23(水) 21:24:48場ぁわきまえて、もの考えてから発言せーや!!
気分悪いねん
0565デフォルトの名無しさん
2005/11/23(水) 22:10:150566デフォルトの名無しさん
2005/11/24(木) 09:51:5305672ch
2005/11/24(木) 17:51:320568デフォルトの名無しさん
2005/11/24(木) 19:52:51変数名や関数名変えて関数内関数もばらしたりしてれば
大丈夫なんじゃない?
0569デフォルトの名無しさん
2005/11/24(木) 20:33:53名前何を入力しても2番目に挿入されるんだけどw
0570569
2005/11/24(木) 21:01:520571デフォルトの名無しさん
2005/11/25(金) 00:44:38アルファベットの大文字と小文字を区別しないように
したいのですがヒントor丸投げお願いします
0572デフォルトの名無しさん
2005/11/25(金) 11:41:150573デフォルトの名無しさん
2005/11/26(土) 16:41:49アルバイトデータが、日付、学生氏名、その日の職種、 その日の労働時間 の4項目を持つものとする。
(注 : 学生の数は50名以下であるとしてよい!)
(1) まずはこれらのデータを格納する型をレコード 型により定義せよ。ただし、職種はr (レジ係)、p (配送係)、
i (接客係)、 c (清掃係)、 のいずれかとする。
(2) 次に(1)で定義した型に、準入力 (Keyboardのこと)から値を読み込み、メモリー内の配列(あるいはポイ
ンターを利用したlinked list)内に 収納するとともに、標準出力(画面のこと)へ書き出す操作を任意の回
数だけ繰り返すところまでプログラム を作成せよ。ただし、仕事のイメージとしては、月末に、伝票に書い
てあった「日付、学生氏名、その日の 職種、その日の労働時間」を日付順に打ち込んでいく作業である。つ
まりイベント順の入力方式である。し たがって、日付が異なれば同じ学生氏名であっても異なる入力が存
在する。また1日の間では、ある一人 の学生の職種は変化しないが、日付が異なれば、職種は変化する場
合があるものとする。
なお、ここで入力するデータ は、伝票の中身をそのまま残すのが目的なので、同じ学生のデータでまと
めたり、ソートしたりはしないこと。 (注 : 伝票の数はあらかじめわかっているとしてよい)
(3) (2)で作った基本データに追加で任意の数のア ルバイトデータ(追加の伝票のデータ)を追加できるように
プログラムを改造せよ。(ここの追加 部分でも、日付などでソートする必要はない。また追加伝票の数はあ
らかじめわかっているとしてよい)
0574デフォルトの名無しさん
2005/11/26(土) 16:42:50ただし、外部ファイルはテキストファ イルでもバッファファイルでもよい。 ただしこのファイルの読み込み機
構も備えること。つまりこの段階で は、基本データのファイルへの書き出し、ファイルからの読み出しが出
来ることが必要である。ただしファイ ル名の**には月名が入る(1月→01、 12月→12)。月名は標準入力
から手で入れるものとする。
(5) (4)で読み出した基本データをもとに、それぞ れの職種のその月の時給を入力すると、各学生が受け取る
べきアルバイト代を、標準出力(画 面)に表示するとともに、外部テキストファイル’pay005**.txt’に出力
するようにプログラムを改造せよ。た だし、同じ学生の基本データはすべて集約するものとし、学生のアル
ファベット順に(大文字小文字は区別 しない)出力のこと。
0575デフォルトの名無しさん
2005/11/26(土) 16:43:5510-05 Shinomori r 3
10-22 Shinomori p 1
10-22 Mendori c 4
10-20 Shinomori r 1 added
支払いデータ(pay00510.txt)
Octobar parttime job payment.
r 620 per hour
p 750 per hour
i 900 per hour
c 820 per hour
---------------------------------------------
Mendori c 820 * 4 = 3280
total = 3280
---------------------------------------------
Shinomori r 620 * 4 = 2480
p 750 * 1 = 750
total = 3230
---------------------------------------------
End of payment data.
(6) 上の機能(2〜5)をメニューで選んで自由な 順で、使えるようにプログラムを改造せよ。
0576デフォルトの名無しさん
2005/11/26(土) 16:47:25締め切りも近いし本当にあせっています。
どうか助けてください。
0577デフォルトの名無しさん
2005/11/26(土) 18:46:01(2):これも同じくrecordsample.pの書き換え
(3):for 2で入力した人数+1 to 追加する人数+2で入力した数 do
あとは(2)と同様
(4):textwrite.pとtextread.pを良く見ながらやってみよう
(5):俺も分からん。ここだけ誰か教えてください
0578デフォルトの名無しさん
2005/11/26(土) 20:26:36これで一歩前に進めそうです。
0579デフォルトの名無しさん
2005/11/26(土) 20:32:39ぎこBASIC2005のソースをいじくっているのです。
誰がやらせろと言っているのですか?
もしよろしければ
ギコBASIC2005のソースに細かく注釈をつけて欲しいのです。
お願いつかまつりそうろうでございまする。
できあがったその暁にはカスタマイズされた
ギコBASIC2006(2006年完成予定)をオープンソースで提供しましょう。
0580デフォルトの名無しさん
2005/11/26(土) 20:34:120581デフォルトの名無しさん
2005/11/26(土) 20:39:44誰でも自分言語をもてる時代が来ます。
ギコPASCALに改造することもたやすいでしょう。
ただ、現在のソースを解析するには困難なのです。
PASCALスクリプトでも良いというならばわかりましたといいます。
しかしネイティブコードを吐くには時間がかかりすぎます。
DELPHIソース生成ならば考えがなくもなくもなくもないのです。
0582デフォルトの名無しさん
2005/11/26(土) 20:49:130583デフォルトの名無しさん
2005/11/26(土) 20:55:50学校の宿題ではないですが、
宿題だからきっと願いはかなうと思ってました。
宿題の肝心の部分は自分で何とかしようと努力しています。
しかし過去に何人もの2chねるパネラーの方々が
ギコBASICのソースの前にひれ伏しているのです。
これが改良された暁には
2chねるパネラーの方々の標準言語として
親しまれていくことでしょう。
0584デフォルトの名無しさん
2005/11/26(土) 20:58:160585デフォルトの名無しさん
2005/11/26(土) 20:59:350586デフォルトの名無しさん
2005/11/26(土) 21:01:230587デフォルトの名無しさん
2005/11/26(土) 21:04:13name:packed arra[1..20] of char;
next:^list;
judge:boolean;
end;
datalist =^list;
var
data:array[1..10] of datalist;
という形式のファイルの保存と読み込みがしたいのですが
nextがやっかいでなかなかできません助けてください。。
0588デフォルトの名無しさん
2005/11/26(土) 22:34:540589>>579
2005/11/26(土) 22:40:10>>587さん優先でお願いします。
というよりもです
自力で明日一日かけて取り組むことに決めました。
0590デフォルトの名無しさん
2005/11/26(土) 23:13:13連結リストでしょ。
単に定義の仕方が違うだけでは。
type
datalist =^list; //先にポインタ型を定義する
list = record
name: packed array[1..20] of char;
next: datalist; //定義済みのポインタ型を使う
judge: boolean;
end;
var
data:array[1..10] of datalist;
0591デフォルトの名無しさん
2005/11/27(日) 10:20:180592デフォルトの名無しさん
2005/11/27(日) 11:11:240593デフォルトの名無しさん
2005/11/27(日) 11:17:030595デフォルトの名無しさん
2005/11/27(日) 16:51:100596デフォルトの名無しさん
2005/11/27(日) 17:32:03最終課題は一人でやらないとカンニング扱いで全単位もらえなくなるから
やめといたほうが・・・w
ヒントぐらいにしとけ・・・
0597デフォルトの名無しさん
2005/11/27(日) 20:05:390598デフォルトの名無しさん
2005/11/27(日) 22:20:28しつこいよ君
やりたい人が来たらやるだろうから待ってろ
0599デフォルトの名無しさん
2005/11/27(日) 22:42:04どなたか>>573-575を早急にお願いします!
0600デフォルトの名無しさん
2005/11/27(日) 22:45:55こんなものは余裕だ。ひまわりならばだが。
そしてひまわりのソースは公開されている。
さあ!あなたのすべきことは一つ。と言ってみるテスト
0601デフォルトの名無しさん
2005/11/27(日) 22:50:19ごめんなさい、何をすればいいのか全然分かりません。
何でもするので教えてください!
どうかお願いします!
0602デフォルトの名無しさん
2005/11/27(日) 22:54:18簡単なひまわりでまず達成する。
そしてひまわりのソースはほぼパスカルなわけだから、
ひまわりのソースから部分的に抜き出すことで宿題は完結します。
と思いませんか?
0603デフォルトの名無しさん
2005/11/27(日) 22:55:480604デフォルトの名無しさん
2005/11/27(日) 22:58:010605デフォルトの名無しさん
2005/11/27(日) 23:09:02ソースファイルはどこにありますか?
0606デフォルトの名無しさん
2005/11/27(日) 23:23:37やふると簡単にでます。
「プログラム ひまわり」でどうぞ。
というか…。
0607デフォルトの名無しさん
2005/11/27(日) 23:38:190608デフォルトの名無しさん
2005/11/27(日) 23:39:130609デフォルトの名無しさん
2005/11/27(日) 23:39:24LZHになっていて開いてみたのですが、たくさん入っていてどれだか分かりません。
ソースのどの辺りを抜き出せばいいのか教えてください。
もう時間がないので、どうかお願いします。
0610デフォルトの名無しさん
2005/11/27(日) 23:43:490611デフォルトの名無しさん
2005/11/27(日) 23:58:59私にできることなら何でもするので、どうか教えてください。
明日までに提出できないと単位がもらえないかもしれないです。
もし留年したら親にも迷惑がかかるし、それだけはどうしても困ります!
どうかよろしくお願いします。
0612sage
2005/11/28(月) 00:11:46正直キミの単位がどうなろうとこっちには関係ない。
それに教えてもらってそれをそのまま提出したところで
単位はないだろうしさ。
困るなら少しは自分で考えようよ
0613デフォルトの名無しさん
2005/11/28(月) 00:23:13>>597
5番目のヒント欲しいです
0614デフォルトの名無しさん
2005/11/28(月) 01:41:25今までに十分すぎるほどでてるヒントで解けないなら
単位諦めればいいんじゃね?
0615デフォルトの名無しさん
2005/11/28(月) 02:25:120616デフォルトの名無しさん
2005/11/28(月) 02:29:120617デフォルトの名無しさん
2005/11/28(月) 03:42:34>私にできることなら何でもするので、どうか教えてください。
>明日までに提出できないと単位がもらえないかもしれないです。
>もし留年したら親にも迷惑がかかるし、それだけはどうしても困ります!
>どうかよろしくお願いします。
お前の勉強不足が原因だろ
0618デフォルトの名無しさん
2005/11/28(月) 04:25:030619デフォルトの名無しさん
2005/11/28(月) 07:56:03(5)はスクリーンに表示するようにtxtに表示したらいいだけだぞ
0620デフォルトの名無しさん
2005/11/28(月) 08:38:270621名無し
2005/11/28(月) 10:11:352番まではできましたが、そこから先が・・・汗
0622デフォルトの名無しさん
2005/11/28(月) 10:39:330623名無し
2005/11/28(月) 11:35:530624名無し
2005/11/28(月) 11:44:31それに、更にデータを追加するにはどのようなプログラムを書けばよいのでしょうか?
0625デフォルトの名無しさん
2005/11/28(月) 16:16:50lIlJJI:string(20);I11JI1:^llIlIJ;l1l1l1 : boolean;end;
varJ1JIIl:text;ll1ll1:string(20);IlIlIJ,IJIlJJ:integer;
IIlJ11: ^llIlIJ;beginnew(IIlJ11);ll1ll1:='NullPointer';
writeln('Nmber');readln(IJIlJJ);rewrite(J1JIIl,ll1ll1+'.txt');
for IlIlIJ:=1 to IJIlJJ do beginIIlJ11^.l1l1l1:=false;
writeln('Name');readln(IIlJ11^.lIlJJI);writeln(J1JIIl,ll1ll1);
new(IIlJ11^.I11JI1);IIlJ11:=IIlJ11^.I11JI1;IIlJ11^.l1l1l1:=true;
end;end.
0626デフォルトの名無しさん
2005/11/28(月) 16:20:420627名無し
2005/11/28(月) 16:35:370628デフォルトの名無しさん
2005/11/28(月) 17:51:59readln(a);
for m:=n+1 to n+a do
begin
readln(data.a);
readln(data.b);
nantoka[m] := data;
end;
つーかこれも>>573-575と絡んでるだろ
0629名無し
2005/11/28(月) 18:40:110630デフォルトの名無しさん
2005/11/28(月) 18:56:040631デフォルトの名無しさん
2005/11/28(月) 18:57:05お前>>552と同一人物か。
試してからモノを言え。
試せないんなら単位落としてダブれ
0632デフォルトの名無しさん
2005/11/28(月) 18:57:150633デフォルトの名無しさん
2005/11/28(月) 20:12:48誰か助けてください。
0634デフォルトの名無しさん
2005/11/28(月) 20:23:26>>503
0635デフォルトの名無しさん
2005/11/28(月) 20:31:12しかもひまわりすらできないというのか。
0636デフォルトの名無しさん
2005/11/28(月) 20:40:03三日あればヘローワールドくらいはできただろうに。
課題が出たのはさらに前なんだろうな、きっと。
0637デフォルトの名無しさん
2005/11/28(月) 21:01:49か‐だい〔クワ‐〕【課題】
1 与える、または、与えられる題目や主題。
2 解決しなければならない問題。果たすべき仕事。
しゅく‐だい【宿題】
1 家庭でやってくるべきものとして教師が児童・生徒に課する、学習上の課題。
2 解決が後日に持ち越された課題。
0638デフォルトの名無しさん
2005/11/28(月) 21:06:060639デフォルトの名無しさん
2005/11/28(月) 21:11:02すべてのアルバイトデータが、日付、学生氏名、その日の職種、 その日の労働時間 の4項目を持つものとする。
アルバイトデータは日付、学生氏名、その日の職種、 その日の労働時間をもつ構造体である
ってこういうことですか?
type
アルバイトデータ = record
日付: strings;
学生氏名: strings;
その日の職種: (r, p, i, c);
その日の労働時間: integer;
end;
0640デフォルトの名無しさん
2005/11/28(月) 21:18:200641名無し
2005/11/28(月) 23:41:370642デフォルトの名無しさん
2005/11/29(火) 00:02:02ソースソースうるせーよバカ
0643デフォルトの名無しさん
2005/11/29(火) 00:26:37調べるような関数(または方法)はありますか?
0644デフォルトの名無しさん
2005/11/29(火) 02:43:31type
elementtype = real;
pointertype = ^celltype;
celltype = record
element : elementtype;
next : pointertype
end;
var
header,q : pointertype;
y : real;
絶対値に関して昇順に並ぶように線形リストにデータを挿入する
q := header;
while ( ( q^.next <> nil ) and ( abs( y ) >= abs( q^.next^.element ) ) ) do q := q^.next;
insert( y, q );
エラーが出るのですが原因が分かりません。
お願いします。
0645デフォルトの名無しさん
2005/11/29(火) 03:08:180646デフォルトの名無しさん
2005/11/29(火) 03:19:18WindowsならWinApiを使えば
0647644
2005/11/29(火) 03:23:30var tmp : pointertype;
begin
tmp:=p;
new(p);
p^.element:=x;
p^.next:=tmp
end;
こんな感じです
0648デフォルトの名無しさん
2005/11/29(火) 03:36:280649デフォルトの名無しさん
2005/11/29(火) 03:45:00ここ駄目じゃね?
0650名無し
2005/11/29(火) 14:46:210651名無し
2005/11/29(火) 16:02:370652デフォルトの名無しさん
2005/11/29(火) 18:49:250653デフォルトの名無しさん
2005/11/29(火) 21:18:33が実は
>>644
だったらどうする?
0654デフォルトの名無しさん
2005/11/29(火) 22:03:520655デフォルトの名無しさん
2005/11/29(火) 22:36:210656デフォルトの名無しさん
2005/11/30(水) 00:35:400657デフォルトの名無しさん
2005/11/30(水) 03:16:230658デフォルトの名無しさん
2005/11/30(水) 10:12:050659デフォルトの名無しさん
2005/11/30(水) 14:17:540660デフォルトの名無しさん
2005/11/30(水) 14:49:27>>655-657・・・
1:別の大学に通う学生
2:>>654に合わせただけ
3:実は嘘
0661デフォルトの名無しさん
2005/11/30(水) 14:49:56>>655-657は・・・
1:別の大学に通う学生
2:>>654に合わせただけ
3:実は嘘
0662名無しダナピウさん
2005/12/01(木) 17:50:02さあ伸るか反るか。運命の時〜♪
0663デフォルトの名無しさん
2005/12/01(木) 18:23:300664デフォルトの名無しさん
2005/12/01(木) 18:27:10半ばやけくそだな
0665デフォルトの名無しさん
2005/12/01(木) 20:53:280666デフォルトの名無しさん
2005/12/01(木) 21:11:360667デフォルトの名無しさん
2005/12/01(木) 21:17:03こう考えてくれ。
「常人より1年多く学べる」
0668デフォルトの名無しさん
2005/12/01(木) 21:25:40余分に金かかる事を忘れずに
0669デフォルトの名無しさん
2005/12/01(木) 21:32:16本人の為を思うならかけたほうが良い。
0670デフォルトの名無しさん
2005/12/01(木) 21:48:19かけたくてもかけれないやつもいるんだぞ
0671デフォルトの名無しさん
2005/12/01(木) 21:54:51国立ならそういう考えも起きるけどね
0672デフォルトの名無しさん
2005/12/01(木) 22:13:540673デフォルトの名無しさん
2005/12/01(木) 23:16:19情報系の大学生のレベルってこんな程度なのか
まぁ就活で現実を直視させられるだろうな
0674デフォルトの名無しさん
2005/12/01(木) 23:20:24宿題は御自分でやりなさいってことよのう。
0675デフォルトの名無しさん
2005/12/01(木) 23:22:310676デフォルトの名無しさん
2005/12/01(木) 23:23:53ヒント:先生の教え方
0677デフォルトの名無しさん
2005/12/01(木) 23:24:360678デフォルトの名無しさん
2005/12/01(木) 23:25:16勉強は自分でするものだよ…(´・ω・`)
0679デフォルトの名無しさん
2005/12/01(木) 23:26:11ヒント:勉強に対する意欲と予習・復習
0680デフォルトの名無しさん
2005/12/01(木) 23:27:21まあその中でできてる奴らもいるんだけどね…
0681デフォルトの名無しさん
2005/12/01(木) 23:31:360682デフォルトの名無しさん
2005/12/01(木) 23:37:55むしろ得意だった
しかし、急速に授業が進んでいって大したレクチャーも受けず
習うより慣れろってな感じでプログラム真似させられてわけもわからないまま
今に至る
0683デフォルトの名無しさん
2005/12/01(木) 23:39:230684デフォルトの名無しさん
2005/12/01(木) 23:40:23確かに。一度躓いたら一気に置いてけぼりにされるいい例だね
0685デフォルトの名無しさん
2005/12/01(木) 23:42:27教育用(?)プログラムPascalの宿題をやって頂くスレ
■全く分かってない阿呆も放置しないで優しく対応
0686デフォルトの名無しさん
2005/12/01(木) 23:57:25復習はしてた。でもあの教えk(ry
>>683
正直コンパイラがどこにあるかとか誰も知らないと思うよ。
比較的見つかりやすいfpcじゃ大学で使ってるgpcとかなり違うし。
gpcは余計にどこにあるか分からないね。
0687名無しダナピウさん
2005/12/02(金) 00:01:24皆さん!準備はいいですかー!?
0688デフォルトの名無しさん
2005/12/02(金) 00:03:000689デフォルトの名無しさん
2005/12/02(金) 00:15:37バッチコーイ!!!1
0690デフォルトの名無しさん
2005/12/02(金) 00:37:08俺は泣いた、友達は吹いた。
0691デフォルトの名無しさん
2005/12/02(金) 00:41:44C-_でUndoできるっしょ
0692デフォルトの名無しさん
2005/12/02(金) 00:54:24そうだったんだ…。知りませんでした。どうもありがとう。
なんとか思い出して修正は完了してます。
0693デフォルトの名無しさん
2005/12/02(金) 01:14:540694デフォルトの名無しさん
2005/12/02(金) 03:05:33ここにもあきらめてるやついるし…
0695デフォルトの名無しさん
2005/12/02(金) 03:06:420696デフォルトの名無しさん
2005/12/02(金) 08:33:260697デフォルトの名無しさん
2005/12/02(金) 11:48:20デルフィで宿題してるんですが、中かっこ{}を数字で割ることはできないんでしょうか?
こういう感じで→{}/2;中かっこの中には()を含む掛け算が入ってます。何回してもエラーになります
0698デフォルトの名無しさん
2005/12/02(金) 12:08:04a := ((b - 200) / 2) / 3;
整数なら
a := ((b - 200) div 2) div 3;
と、言う話?
0699>>683
2005/12/02(金) 12:16:23fpcはフリーパスカルということか?
gpcはGNUパスカルならば俺にはわかる。(DEV-PASCALでぐぐると楽かもしれん)
あとDELPHI6PERSONALは無料である。
0700デフォルトの名無しさん
2005/12/02(金) 13:17:37デルファイな
0701デフォルトの名無しさん
2005/12/02(金) 18:36:36〉698
ありがとうございました
鶴亀算を作ってるんですが実数と整数ってどういうときに使い分けたらいいんですか?
0702デフォルトの名無しさん
2005/12/02(金) 19:38:090703デフォルトの名無しさん
2005/12/02(金) 19:45:43ただ
入力 出力 テキストに書き込み 保存 読み込み
をそれぞれcase文で作るだけだろが・・・
0704デフォルトの名無しさん
2005/12/02(金) 19:55:55ダメニンゲンズが何人か出没したからな
0705デフォルトの名無しさん
2005/12/02(金) 20:03:27>■全く分かってない阿呆も放置しないで優しく対応
って書いてるのが読めないのか?
特に「これぐらい誰でも出来る課題じゃん」とか言ってる奴。
そんなに簡単なら教えてやれ。教える気が無いなら下らん発言すんな
0706デフォルトの名無しさん
2005/12/02(金) 20:21:460707デフォルトの名無しさん
2005/12/02(金) 22:53:52向上心が全く無く、ただ丸投げのみを期待している人間に優しく対応しただけだ
0708デフォルトの名無しさん
2005/12/02(金) 23:28:51全く分かってない阿呆に無視(放置)せずにやさしく自分で勉強するように進めた(対応)!w
0709デフォルトの名無しさん
2005/12/02(金) 23:38:38日本語すら理解出来んのか
もう一度小学校からやり直せ
0710デフォルトの名無しさん
2005/12/03(土) 00:38:26�d!
0711デフォルトの名無しさん
2005/12/03(土) 10:04:15小学校じゃ他人の宿題を全部やってあげることがやさしいことって教えてるのかww
0712デフォルトの名無しさん
2005/12/03(土) 10:21:04本人の為に心を鬼にすることも必要なんだぜ
0713デフォルトの名無しさん
2005/12/03(土) 11:34:26下らん発言してないでさっさと答え書いてやれよ
まさか出来ないなんていうことは無いよな?
留年の腹いせに逆ギレしてるなんてことは勿論ないよな?
0714デフォルトの名無しさん
2005/12/03(土) 11:55:030715デフォルトの名無しさん
2005/12/03(土) 12:59:290716デフォルトの名無しさん
2005/12/03(土) 14:04:56ひじかた様(ITどかた)の数が減ると困るぞ。
0717デフォルトの名無しさん
2005/12/03(土) 14:42:18心入れ替えて勉学に励みます…
0718デフォルトの名無しさん
2005/12/03(土) 16:23:11誰が?
0719デフォルトの名無しさん
2005/12/03(土) 20:31:53そいつらは質問者の自演だ
0720デフォルトの名無しさん
2005/12/03(土) 20:33:20土方を送り込んで利ざやを稼いでいるだけの派遣会社
0721アズキリョウナ
2005/12/04(日) 18:47:11本当にどんな課題でもやっていただけるのでしょうか?
0722アズキリョウナ
2005/12/04(日) 18:50:23「1-5*4+9/2」などのように1桁の整数の加減乗除算(除算はPASCALのdivと同じ)から
なる式がキーボードから入力されるとき、その計算結果(整数値になる)を表示するプログラム
ただし、必ず、以下の2段階の処理でポインタと再帰を用いて実現すること:
1.入力された式をポインタを用いたデータ構造(木と呼ばれる)で表現する。
2.1で生成したデータ構造を用いて、考えに基づいて再帰的な処理で式の値を求める。
0723アズキリョウナ
2005/12/04(日) 18:56:41const
OP_ADD='+';
OP_SUB='-':
OP_MULT='*';
OP_DIV='/';
type
tree = ^treeCell;
treeCell = record
data : integer;
op : (OP_ADD,OP_SUB,OP_MULT,OP_DIV);
lefy,right : tree
end
0724アズキリョウナ
2005/12/04(日) 18:57:24t : tree; a : array of char
b : integer;
function calc(root: tree):integer;
var
x,y : integer;
begin
if root^.left=nil and root^.right=nil then calc:=root^.data
else
begin
x:=calc(root^.left);
y:=calc(root^.right);
if root^.op=OP_ADD then calc:=x+y
else if root^.op=OP_SUB then calc:=x-y
else if root^.op=OP_MULT then calc:=x*y
else calc:=x div y
end
end;
0725アズキリョウナ
2005/12/04(日) 18:57:50{ツリーを作る}
b:=calc(t);
writeln(b);
end.
0726アズキリョウナ
2005/12/04(日) 18:59:37{ツリーを作る}の部分のプログラム文がどうしても分かりません。
どうか、完全なプログラム文で教えてください。
お願いします。
0727デフォルトの名無しさん
2005/12/04(日) 20:54:56>>342
0728デフォルトの名無しさん
2005/12/04(日) 20:58:16その今出来てるやつを使わないといけないのか?
加減乗除算だが-+*/を全部使うと式の入力を終了させるようにするのか?
ツリーは2つに分かれてるのを前提でするのか?
どんなパスカルを使ってるのか(俺のじゃnil使えんw)
あと;が:になってたりするからそれをコンパイルをしてないことはわかるw
0729アズキリョウナ
2005/12/04(日) 21:19:55そのPascalのソースプログラムでポインタと再帰を使っていれば
提出出来ると思います。
0730アズキリョウナ
2005/12/04(日) 21:49:30確かに、ここだけ;じゃないですね。あ〜怖いなと思いました。
0731デフォルトの名無しさん
2005/12/04(日) 21:50:24『3×3型の二つの行列A=[aij],B=[bij]を読み込み、積ABとBAを
求めるプログラムを作成せよ。また一般的にはABとBAが等しくならない
ことを確認せよ。』です
0732デフォルトの名無しさん
2005/12/04(日) 22:01:01a : array of char
0733アズキリョウナ
2005/12/04(日) 22:07:59これを読んで分かる人もいると思うけど、
僕は読んでもまだ分からないので、お願いします。
0734アズキリョウナ
2005/12/04(日) 22:10:34やっぱり付けるんですか?
0735デフォルトの名無しさん
2005/12/04(日) 22:16:36括弧(〜)の中を優先して計算する必要はあるの?
0736アズキリョウナ
2005/12/04(日) 22:18:470737アズキリョウナ
2005/12/04(日) 22:20:430738デフォルトの名無しさん
2005/12/04(日) 22:27:06それぞれ誰に対するレスだ?
0739アズキリョウナ
2005/12/04(日) 22:27:37有りますよ。そんなの
0740アズキリョウナ
2005/12/04(日) 22:29:340741デフォルトの名無しさん
2005/12/04(日) 22:30:16どの人だよw
0742アズキリョウナ
2005/12/04(日) 22:32:070743デフォルトの名無しさん
2005/12/04(日) 22:37:420744アズキリョウナ
2005/12/04(日) 22:44:270745アズキリョウナ
2005/12/04(日) 22:49:340746アズキリョウナ
2005/12/04(日) 22:51:080747アヅキリョウナ
2005/12/04(日) 22:52:480748アズキリョウナ
2005/12/04(日) 22:54:31natt,
ないです。
0749アズキリョウナ
2005/12/04(日) 22:54:56ありがとうございました。
0750アズキリョウナ
2005/12/04(日) 22:58:010751アズキリョウナ
2005/12/04(日) 22:59:250752デフォルトの名無しさん
2005/12/04(日) 23:00:040753アズキリョウナ
2005/12/04(日) 23:00:110754アズキリョウナ
2005/12/04(日) 23:00:41なにこれ?
0755アズキリョウナ
2005/12/04(日) 23:01:190756アズキリョウナ
2005/12/04(日) 23:03:02戻れた。
0757アズキリョウナ
2005/12/04(日) 23:04:56まだ、事故解決してないよ。まだあ。
0758デフォルトの名無しさん
2005/12/04(日) 23:06:100759アズキリョウナ
2005/12/04(日) 23:06:170760アズキリョウナ
2005/12/04(日) 23:07:33私、
0761アズキリョウナ
2005/12/04(日) 23:08:510762アズキリョウナ
2005/12/04(日) 23:10:09本当なんですか?
0763アズキリョウナ
2005/12/04(日) 23:30:140764デフォルトの名無しさん
2005/12/04(日) 23:30:380765アズキリョウナ
2005/12/04(日) 23:32:360766アズキリョウナ
2005/12/04(日) 23:33:150767デフォルトの名無しさん
2005/12/04(日) 23:33:44誰にも宿題やってもらえなくて
後期終了間近になって焦ってるんだろ。
0768デフォルトの名無しさん
2005/12/04(日) 23:34:510769アズキリョウナ
2005/12/04(日) 23:37:140770アズキリョウナ
2005/12/04(日) 23:44:01あっ、これや。
0771アズキリョウナ
2005/12/05(月) 00:02:200772アズキリョウナ
2005/12/05(月) 00:04:110773アズキリョウナ
2005/12/05(月) 00:07:230774アズキリョウナ
2005/12/05(月) 00:08:250775アズキリョウナ
2005/12/05(月) 00:12:220776デフォルトの名無しさん
2005/12/05(月) 00:13:110777デフォルトの名無しさん
2005/12/05(月) 00:13:570778アズキリョウナ
2005/12/05(月) 00:16:36キチガイだったらパソコンとかプログラミングなんて出来ませんよ。
0779デフォルトの名無しさん
2005/12/05(月) 01:00:360780デフォルトの名無しさん
2005/12/05(月) 02:26:300781デフォルトの名無しさん
2005/12/05(月) 03:29:52program evalExpr(input, output);
const
OP_NIL = chr(0);
OP_SPC = ' ';
OP_TAB = chr(9);
OP_ADD = '+';
OP_SUB = '-';
OP_MULT = '*';
OP_DIV = '/';
type
tree = ^treeCell;
treeCell = record
op : char;
data : integer;
left, right : tree;
end;
function calc(root : tree) : integer;
var
lhs, rhs : integer;
0782デフォルトの名無しさん
2005/12/05(月) 03:30:17if (root^.left = nil) and (root^.right = nil) then
calc := root^.data
else
begin
lhs := calc(root^.left);
rhs := calc(root^.right);
if root^.op = OP_ADD then
calc := lhs + rhs
else if root^.op = OP_SUB then
calc := lhs - rhs
else if root^.op = OP_MULT then
calc := lhs * rhs
else if root^.op = OP_DIV then
calc := lhs div rhs
else
begin
writeln('Unexpected function. [', root^.op, ']');
end;
end;
end;
function viewtree(root : tree) : tree;
0783デフォルトの名無しさん
2005/12/05(月) 03:30:41if (root^.left = nil) and (root^.right = nil) then
write('(', root^.data, ')')
else
begin
write('L['); viewtree(root^.left); write(']');
write('R['); viewtree(root^.right); write(']');
write(root^.op);
end;
viewtree := root;
end;
function growth(op : char; data : integer; lhs, rhs : tree) : tree;
var
t : tree;
0784デフォルトの名無しさん
2005/12/05(月) 03:31:13if(lhs = nil) then
begin
new(t);
if(t = nil) then
begin
writeln('no memory.');
growth := nil;
{ break; }
end;
lhs := t;
lhs^.op := OP_NIL;
lhs^.data := data;
lhs^.left := nil;
lhs^.right := nil;
end;
new(t);
if(t = nil) then
begin
writeln('no memory.');
growth := nil;
{ break; }
end;
t^.op := op;
t^.data := 0;
t^.left := lhs;
t^.right := rhs;
growth := t;
end;
0785デフォルトの名無しさん
2005/12/05(月) 03:31:43var
t, s : tree;
b : integer;
c : char;
d : integer;
begin
t := nil;
d := 0;
for b := p to length(a) do
begin
c := a[b];
if((ord(c) >= ord('0')) and (ord(c) <= ord('9'))) then
d := ord(c) - ord('0') + d * 10
else if((c = OP_ADD) or (c = OP_SUB) or (c = OP_MULT) or (c = OP_DIV)) then
begin
t := growth(c, d, t, maketree(a, b + 1));
d := 0;
break;
end
else if((c = OP_SPC) or (c = OP_TAB)) then
{ skip }
else
begin
writeln('Illegal function. [', c, ']');
break;
end;
end;
0786デフォルトの名無しさん
2005/12/05(月) 03:34:440787デフォルトの名無しさん
2005/12/05(月) 03:38:55if(s = nil) then
begin
writeln('no memory.');
{ break; }
end;
s^.op := OP_NIL;
s^.data := d;
s^.left := nil;
s^.right := nil;
t := growth('+', 0, t, s);
maketree := t;
end;
var
t : tree;
a : string[255];
b : integer;
0788デフォルトの名無しさん
2005/12/05(月) 03:39:54write('calc: ');
readln(a);
b := 0;
t := maketree(a, 1);
viewtree(t);
writeln('');
write('result: ');
if(t = nil) then
writeln('no tree.')
else
b := calc(t);
writeln(b);
end.
0789デフォルトの名無しさん
2005/12/05(月) 19:56:110790デフォルトの名無しさん
2005/12/06(火) 00:41:11なんとか頑張って課題の、ファイルを読み込んで英語の文章の中にある
アルファベットの個数の分布を追加書きこみするってのはできたんですが、これ作るのに5時間かかったんで
これ以上難しいのでたら死んじゃいます
0791デフォルトの名無しさん
2005/12/06(火) 01:10:550792デフォルトの名無しさん
2005/12/06(火) 01:11:140793デフォルトの名無しさん
2005/12/06(火) 01:23:310794デフォルトの名無しさん
2005/12/06(火) 01:27:260795デフォルトの名無しさん
2005/12/06(火) 01:31:510796デフォルトの名無しさん
2005/12/06(火) 02:01:480797デフォルトの名無しさん
2005/12/06(火) 02:43:400798デフォルトの名無しさん
2005/12/06(火) 06:34:30急速で宿題してほしいんですが・・・
0799デフォルトの名無しさん
2005/12/06(火) 06:39:240800デフォルトの名無しさん
2005/12/06(火) 06:49:40宝くじをするプログラムを作ってほしいのです。
1000円所持金があって、13%程度の当たりのある宝くじをやります。
当たれば3%で+500円、10%で+300円、はずれれば-100円。
基本的に、無限に続けられて、
2000円になれば、「凄い幸運の持ち主です」と表示させて終わらせる。
0円になれば、「残念ながら所持金が無くなりました」と表示させて終わらせる。
また、毎回「まだくじを引きますか?」と表示させ、
Enterで引く、0で終わらせる。
できますでしょうか?
もしめんどくさい箇所があれば簡易化してもらっても構いません。
例えば、13%で+500円とか。
0801デフォルトの名無しさん
2005/12/06(火) 06:53:52頼んでいる身として本当に申し訳ないのですが・・。
800がめんどくさそうであれば、
1000円所持金があって、13%程度の当たりのある宝くじをやります。
当たれば13%で+500円、はずれれば-100円。
10回くじを引ける。
2000円になれば、「凄い幸運の持ち主です」と表示させて終わらせる。
0円になれば、「残念ながら所持金が無くなりました」と表示させて終わらせる。
こういうのでも構いません・・
切羽詰ってまして、急がせて本当に申し訳ないのですが、宜しくお願いいたします
0802デフォルトの名無しさん
2005/12/06(火) 06:56:09ちと待ちな。
0803デフォルトの名無しさん
2005/12/06(火) 07:11:350804デフォルトの名無しさん
2005/12/06(火) 07:12:40Amount, Lot: Integer;
S: string;
begin
Amount := 1000;
repeat
Lot := Random(100);
if Lot < 3 then
Amount := Amount + 500
else if Lot < 10 then
Amount := Amount + 300
else
Amount := Amount - 100;
WriteLn('所持金: ', Amount);
if Amount >= 2000 then
begin
WriteLn('凄い幸運の持ち主です');
Break;
end else if Amount <= 0 then
begin
WriteLn('残念ながら所持金が無くなりました');
Break;
end;
ReadLn(S);
until S = '0';
end.
こんなんでどうよ?
0805デフォルトの名無しさん
2005/12/06(火) 07:15:54var
money, r : integer;
str : string[255];
begin
money := 1000;
randomize;
repeat
writeln('You have money : ', money);
write('Bet? ([Enter]: repeat / [n]: end) ?');
readln(str);
if(str[1] = 'n') then
break;
r := random(100);
writeln('rand = ', r);
if(r < 10) then begin
writeln('Win! +300');
money := money + 300;
end else if(r < 13) then begin
writeln('Win! +500');
money := money + 500;
end else begin
writeln('Lose! -100');
money := money - 100;
end;
if(money >= 2000) then
begin
writeln('You are very lacky.');
break;
end;
until(money <= 0);
end.
0806デフォルトの名無しさん
2005/12/06(火) 07:16:310807デフォルトの名無しさん
2005/12/06(火) 07:17:02それだと確率がおかしくないかな
0808デフォルトの名無しさん
2005/12/06(火) 07:18:32助かりました。
0809デフォルトの名無しさん
2005/12/06(火) 07:19:32あと「あたりの合計」が13%にならない
0810デフォルトの名無しさん
2005/12/06(火) 07:22:18もし1〜3だったら、money+500、もし4〜13なら(ryでで条件分岐させて
moneyが0になったときと、2000になったときでまた分岐
みたいなことだと思うんだけど
オレは802じゃないから
0811デフォルトの名無しさん
2005/12/06(火) 07:23:50いまのところ1600が最高
0812デフォルトの名無しさん
2005/12/06(火) 12:20:040813デフォルトの名無しさん
2005/12/06(火) 14:32:190814デフォルトの名無しさん
2005/12/06(火) 19:35:080815デフォルトの名無しさん
2005/12/06(火) 19:42:270816デフォルトの名無しさん
2005/12/06(火) 22:07:170817デフォルトの名無しさん
2005/12/06(火) 23:00:36API叩くならできる。でもエロ画像はコンパイラに拒絶されるかもな。
0818デフォルトの名無しさん
2005/12/06(火) 23:31:460819デフォルトの名無しさん
2005/12/06(火) 23:44:47再提出を求められました。
せめて演算子の優先順位を
(* /) > (+ -)
にしろということと、
出来れば括弧 () の記述に
対応とのことです。
再提出期限は今週9日15:00です。
どこをどう直せば良いのかさっぱりで・・・
すみませんがよろしくおねがいします。
0820デフォルトの名無しさん
2005/12/06(火) 23:48:260821デフォルトの名無しさん
2005/12/06(火) 23:59:180822デフォルトの名無しさん
2005/12/07(水) 05:43:550823デフォルトの名無しさん
2005/12/07(水) 06:15:010824デフォルトの名無しさん
2005/12/07(水) 19:11:14洗浄しておくように!
0825デフォルトの名無しさん
2005/12/08(木) 05:47:520826デフォルトの名無しさん
2005/12/08(木) 06:34:310827デフォルトの名無しさん
2005/12/08(木) 08:10:47どなたか教えて頂けないでしょうか。
0828デフォルトの名無しさん
2005/12/08(木) 08:11:37var p,q : ptr;
begin
if head<>nil then
begin
p:=head^.next;
q:=head;
while p<>nil do
begin
if p^.word=str then
begin
q^.next:=p^.next;
p^.next:=head;
head:=p;
p:=q^.next;
end
else
begin
q:=p;
p:=p^.next;
end
end
end
end;
0829デフォルトの名無しさん
2005/12/08(木) 11:57:37ベクトルa=(a1,a2,a3,a4,a5)b=(b1,b2,b3,b4,b5)
の内積a・bを求めよなんですが
program sum(input,output);
var a, b : array [1..5] of integer;
var i,ip,j : integer;
begin
writeln('ベクトルa=?');
for i := 1 to 5 do read(a[i]) ;
writeln('ベクトルb=?');
for j := 1 to 5 do read(b[j]) ;
ip := 0;
for i := 1 to 5 do
for j := 1 to 5 do begin
ip := ip + a[i] * b[j];
end;
writeln('内積a・b =', ip:8:3 );
readln
end.
(35) pc dai.p
dai.p:
6 for i := 1 to 5 do read(a[i]) ;
e 18450----------^--- Deleted illegal character
7 writeln('ベクトルb=?');
e 18450-------------^--- Deleted illegal character
すみませんどこが間違っているか教えてもらえませんか?
初心者で本当にすみません
0830デフォルトの名無しさん
2005/12/08(木) 12:03:37再帰構成にするとスタック使いすぎてよくない
そのままループで実装するのが良いので
無理に改悪する必要なし
0831デフォルトの名無しさん
2005/12/08(木) 12:22:54レスありがとうございます。
それがですね(-_-;)、再帰関数にせよという課題なんです。
0832831
2005/12/08(木) 20:07:510833デフォルトの名無しさん
2005/12/08(木) 20:12:44それだとスレの趣旨にそぐわない。
やらせろと言ってるやつにやらせないとは何事か。
0834デフォルトの名無しさん
2005/12/09(金) 18:12:33!=
~=
=/
ではダメでした
0835デフォルトの名無しさん
2005/12/09(金) 18:14:51自己解決しました
0836デフォルトの名無しさん
2005/12/09(金) 23:33:42セルフオナニーしますた
0837デフォルトの名無しさん
2005/12/12(月) 02:15:45その文字列があるかどうかリストを先頭から捜し、
見つかったすべてのレコードを削除する手続きdeleteRecord(var head: ptr)を
作成せよ
という課題がでたんですけど、どなたかお願いします
0838デフォルトの名無しさん
2005/12/12(月) 04:34:410839デフォルトの名無しさん
2005/12/12(月) 09:52:05線形リストの問題なのですが、ポインタ型つかってやれと言われてます
0840デフォルトの名無しさん
2005/12/12(月) 11:25:51つまり
課題がでたらめ
つまり
自演
0841デフォルトの名無しさん
2005/12/12(月) 12:18:02begin
dispose(head);
end;
まさかこれだけの問題じゃないよな・・・?w
0842デフォルトの名無しさん
2005/12/12(月) 13:48:08見つかったレコード全て削除できるんでしょうか
0843デフォルトの名無しさん
2005/12/12(月) 18:19:15与えられたものを全て書け。
0844デフォルトの名無しさん
2005/12/12(月) 19:05:500845デフォルトの名無しさん
2005/12/12(月) 19:47:31ネタにしてもクオリティ低すぎ。氏ね
0846デフォルトの名無しさん
2005/12/12(月) 19:55:48意味不明。
0847デフォルトの名無しさん
2005/12/12(月) 20:18:54program twochpascal(input,output);type list=record name :packed array[1..20] of char;
next:^list; judge:boolean; end;ptr = ^list; var meibohead,meibolast:ptr;
p,i:integer; procedure deleteRecord(var head:ptr); var c:packed array[1..20] of char; i,k:integer; last:ptr;
judge:boolean; count:integer; begincount:=0;
writeln('入力された文字列を削除します');writeln('文字列を入力してください');
readln(c); for i:=1 to 20 dobegin if ((ord(c[i]) >= ord('A')) and (ord(c[i]) <= ord('Z')) or (ord(c[i]) >= ord('a')) and (ord(c[i]) <= ord('z'))) then
begin count:=count+1; end; end;for i:=1 to count do begin
if head^.name[i] = c[i] thenbegin k:=k+1; end; if k=count then begin
judge:=true; end;if judge=true then begin last:=last^.next;head:=last; end; end; end; begin
new(meibohead); meibolast:=meibohead; writeln('何人読み込みますか?'); readln(p); for i:=1 to p do
begin meibolast^.judge:=false; writeln('登録する名前の入力'); readln(meibolast^.name);
new(meibolast^.next); meibolast:=meibolast^.next; meibolast^.judge:=true; end; meibolast:=meibohead; deleteRecord(meibohead);
meibolast:=meibohead; while not meibolast^.judge=true do begin
writeln(meibolast^.name); meibolast:=meibolast^.next; end; end.
つくりかけだが途中で嫌になった
ポインターを使ってデータ(名前)を先に入力して次に削除したい文字列を入力して
それを名前の中から一致すればその名前の一覧から一致した名前を削除したいのだろうとおもって
作っててた
例 aaa abc abb bac cccとかあったとしたら削除したい文字列abとすると
aaa bac ccc だけをレコードに残す
という問いかな?
0848& ◆D3ra0B2LiQ
2005/12/12(月) 21:51:01やってみます
確かに情報不足勉強不足でした
でも844は偽
0849デフォルトの名無しさん
2005/12/13(火) 01:15:360850デフォルトの名無しさん
2005/12/13(火) 05:03:57>>849
ゲームキューブ?
0851デフォルトの名無しさん
2005/12/13(火) 14:27:33あってもじゃまなだけだしな
0852ななしのP
2005/12/13(火) 15:58:060853ななしのP
2005/12/13(火) 18:16:140854デフォルトの名無しさん
2005/12/13(火) 20:47:180855デフォルトの名無しさん
2005/12/13(火) 21:12:50あ、ラスカルだった。
0856デフォルトの名無しさん
2005/12/13(火) 21:25:410857デフォルトの名無しさん
2005/12/16(金) 16:28:54xに1行目
yに2行目
zに3行目
という感じです
0858デフォルトの名無しさん
2005/12/16(金) 16:40:32(罫線もひくこと)
制限時間は2分とする
0859857
2005/12/16(金) 16:58:330860デフォルトの名無しさん
2005/12/16(金) 19:02:240861デフォルトの名無しさん
2005/12/16(金) 19:03:03日本語で頼む
0862デフォルトの名無しさん
2005/12/16(金) 19:06:030863デフォルトの名無しさん
2005/12/16(金) 19:15:31ヴァリアントという意味でしょうか?
詳しく状況を説明しやがれ。お願いします。
0864デフォルトの名無しさん
2005/12/16(金) 19:18:081.キャスト
c: Char;
c := 'A';
Byte(c) := #41
2.可変レコード
type
THoge = record
case Tag: Boolean of
True: (c: Char);
False: (b: Byte);
end;
v: THoge;
v.c := 'A';
v.b := #41;
0865864
2005/12/16(金) 19:18:480866862
2005/12/16(金) 19:27:15変数にstringまたはintegerの値をとりたいんです
0867デフォルトの名無しさん
2005/12/16(金) 19:29:28引数でしょうか?戻り値でしょうか?
ローカル変数でしょうか?
厨房ですか?はっきりしやがれ!!!
お願いします。
0868862
2005/12/16(金) 19:43:420869デフォルトの名無しさん
2005/12/16(金) 19:47:040870デフォルトの名無しさん
2005/12/16(金) 19:51:46わざわざ1つの変数で扱おうってのが解らんが。
2つ作って使い分ければいいじゃん。
0871862
2005/12/16(金) 20:00:45バリアントというのでやることにします
ありがとうございました
0872デフォルトの名無しさん
2005/12/16(金) 20:04:44メンテナンスに手間がかかります。
いいかげんにしやがれ!!!
ヴァリアントは実行時に
代入されるものが特定できない場合に
有効らしいですね。
0873862
2005/12/16(金) 20:15:14使い分けにしようと思います
0874デフォルトの名無しさん
2005/12/16(金) 20:16:120875デフォルトの名無しさん
2005/12/16(金) 20:28:570876862
2005/12/16(金) 20:42:13emacsというのを使っています
↑答え方あってますか?
0877デフォルトの名無しさん
2005/12/16(金) 20:46:330878デフォルトの名無しさん
2005/12/17(土) 07:41:190879デフォルトの名無しさん
2005/12/17(土) 09:35:16integer型にする意味ってあるのか?w
char型にしといて計算が必要になったらcharをinteger型に直す関数を使い
計算し終わったらinteger型をchar型に入れなおすようにすればchar型で十分できると思う
0880デフォルトの名無しさん
2005/12/17(土) 14:17:440881デフォルトの名無しさん
2005/12/20(火) 02:29:430882デフォルトの名無しさん
2005/12/20(火) 03:04:29ハノイの塔を解くプログラムじゃなくて
0883デフォルトの名無しさん
2005/12/20(火) 03:05:08問題には6つprocedureを使うようになっているのですが、
中身がわかりません。
<途中までのプログラム>
program Hanoi(input,output);
type
pegarray=array[1..3,1..10] of integer;
toparray=array[1..3] of integer;
var
peg : pegarray;
top : toparray;
n,frompeg,topeg,positionsmallest : integer;
procedure ZeroArray(var peg : pegarray; n : integer);
{分からない}
procedure PutDisksOnPeg1(var peg : pegarray; top : toparray; positionsmallest,n : integer);
{分からない}
procedure PrintArray(var peg : pegarray; n : integer);
{分からない}
procedure SmallestTowhere(var positionsmallest,n,frompeg,topeg : integer);
{分からない}
procedure MakeMove(var peg : pegarray; top : toparray; frompeg,topeg : integer);
{分からない}
procedure DiskToWhere(var peg : pegarray; top : toparray; positionsmallest,frompeg,topeg : integer);
{分からない}
0884デフォルトの名無しさん
2005/12/20(火) 03:08:26すいません。ハノイの塔を解くプログラムです。
0885デフォルトの名無しさん
2005/12/20(火) 06:46:340886デフォルトの名無しさん
2005/12/20(火) 17:06:20追加するにはどうすればいいですか
0887デフォルトの名無しさん
2005/12/20(火) 17:07:52Seek でケツに移動してから Write
0888デフォルトの名無しさん
2005/12/20(火) 17:16:32使いかたがわかりません
できれば例文お願いします
0889デフォルトの名無しさん
2005/12/20(火) 17:42:50に書くべき内容を教えていただけませんか?
出来れは例文を・・・
0890デフォルトの名無しさん
2005/12/20(火) 19:04:16「例文をくれてやることで
早いうちに芽を摘むスレ」ですか。
そうですか。
0891デフォルトの名無しさん
2005/12/20(火) 21:57:43var i : integer;
begin
for i:=1 to n do
begin
peg[1,n]:=0;
peg[2,n]:=0;
peg[3,n]:=0;
end;
end;
0892デフォルトの名無しさん
2005/12/21(水) 00:06:56そんなレベルの低いプログラム書くなよw
0894デフォルトの名無しさん
2005/12/21(水) 01:08:42for i := 1 to Length(peg) do
for j := 1 to Length(peg[i]) do
peg[i, j] := 0;
ってこと?
そういえば何で配列1ベースなんだろ?
キモくね?
0895デフォルトの名無しさん
2005/12/21(水) 01:15:45>>883よく読め
for i := 1 to 3 do
for j := 1 to 10 do
peg[i, j] := 0;
だろ
0896デフォルトの名無しさん
2005/12/21(水) 01:21:54for j := 1 to Length(peg[i]) do
peg[i, j] := 0;
のLengthはどのように宣言すればいいのでしょうか?
0897デフォルトの名無しさん
2005/12/21(水) 02:34:32スマン、ぐにゅは知らんかった。
0898デフォルトの名無しさん
2005/12/21(水) 02:43:36普通に使えるが・・・
0899デフォルトの名無しさん
2005/12/21(水) 03:35:10ぶっちゃけその二つがハノイの塔のプログラムのミソ。
SmallestToWhereは最小の円盤がどんな風に動くか考えて、
MakeMoveは青本P229にある通りに書けば良いよ。
まあ、例文よこせとか言ってる奴には分からないか。
今日言われただろ?オリジナリティを重視するから他人のプログラム
真似たところで点数もらえないって。
あ、そうだ。
誰が>>883を書いたかは特定できてるから覚悟しておくように。
1/10が楽しみですねwww
0900デフォルトの名無しさん
2005/12/21(水) 05:36:12ぶっちゃけその二つがハノイの塔のプログラムのミソ。
SmallestToWhereは最小の円盤がどんな風に動くか考えて、
MakeMoveは青本P229にある通りに書けば良いよ。
まあ、例文よこせとか言ってる奴には分からないか。
今日言われただろ?オリジナリティを重視するから他人のプログラム
真似たところで点数もらえないって。
あ、そうだ。
誰が>>883を書いたかは特定できてるから覚悟しておくように。
1/10が楽しみですねwww
0901デフォルトの名無しさん
2005/12/21(水) 09:35:58ZeroArrayで詰まってる時点でもうだめだろ・・
0902モナー氏
2005/12/21(水) 11:00:480903& ◆xTwoYEuCC.
2005/12/21(水) 14:38:560904デフォルトの名無しさん
2005/12/21(水) 14:51:170905& ◆Z2KySTSpOo
2005/12/21(水) 14:58:330906デフォルトの名無しさん
2005/12/21(水) 16:03:05おまいさんが分かるかどうかは、おまいさんにしか分からない
0907デフォルトの名無しさん
2005/12/21(水) 16:04:46自分で考えろ
0908& ◆Z2KySTSpOo
2005/12/21(水) 16:25:06おめえも同じ学校のくせに 笑
0909デフォルトの名無しさん
2005/12/21(水) 16:56:29同じ学校だから何?
俺は面識も無い奴にホイホイと何でも
1から10まで教えるようなお人よしじゃないから。
>>900読んで分からないんなら本気で退学を考えた方がいいよ。
0910デフォルトの名無しさん
2005/12/21(水) 18:57:590911デフォルトの名無しさん
2005/12/22(木) 16:09:38問題の式(単語)+(単語)=(単語)を3行(各単語のみ)で入力し、
例:
SEVEN
+ ELEVEN
=IIKIBUN
という計算を満たす各アルファベットに入る一桁の数字を求める。
【期限】
12月26日12時
【補足】
全てのアルファベットは異なる値を持つ。また0にはならない。
解なしの場合は「解なし」と表示する。
どこから手をつけて良いのか分かりません。
どなたかよろしくお願いします。
0912デフォルトの名無しさん
2005/12/22(木) 16:11:540913デフォルトの名無しさん
2005/12/22(木) 16:42:260914まともに動いてない
2005/12/22(木) 20:59:08覆面算でんがな。
まずは総当たりで左辺を作って足した結果の各桁と右辺を較べて矛盾がなければ解。
あとは無駄を省いていく。
0915デフォルトの名無しさん
2005/12/22(木) 21:01:29∩ ・∀・)∩∩ ´∀`)∩ このレスを見た人はコピペでもいいので
〉 _ノ 〉 _ノ10分以内に3つのスレへ貼り付けてください。
ノ ノ ノ ノ ノ ノそうすれば14日後好きな人から告白されるわ宝くじは当たるわ
し´(_) し´(_) 出世しまくるわ体の悪い所全部治るわでえらい事です
0916デフォルトの名無しさん
2005/12/22(木) 21:08:460917& ◆Z2KySTSpOo
2005/12/24(土) 14:29:140918デフォルトの名無しさん
2005/12/24(土) 16:11:08で、ロジックから考えてみた。
三つ以上の足し算をしないならほんのちょっとだけ楽になる。
式を文字に分解とかその辺は取り敢えず省略して説明。
配列なり何なりで0〜9の候補群Aと式に出てくる全文字の候補群Bを用意。
文字の出現パターンからBの各要素に各行に対する倍率を設定。
Bの各要素にAの各要素に対するフラグを持つ。
各行の右端の文字に当たる要素から0のプロパティをオフに。
もしn+n=nになってる桁があればnにあたる文字は0。
もしn+m=nになってる桁があればmにあたる文字は0か9。
右端の文字は繰り上がりの有無でパターンが制限できる。これは詳細わかるっしょ?
あとは各右端の文字のパターンに合わせて、倍率かけて足し算しながら、
数字がかぶらないようにしながら、残ってるパターンを総当たり。
最悪でもforループとif文の多重ネストぐらいは思い付くでしょ?
比較的単純な(時間がかかる)処理で良いならばこれで解決する筈。
0919デフォルトの名無しさん
2005/12/25(日) 00:58:440920デフォルトの名無しさん
2005/12/25(日) 01:55:11for A := 0 to 9 do
for B := 0 to 9 do
for C := 0 to 9 do
...
0921デフォルトの名無しさん
2005/12/25(日) 02:19:020922デフォルトの名無しさん
2005/12/25(日) 03:59:12for AtoI := 000000000 to 999999999 do
for JtoR := 000000000 to 999999999 do
for StoZ := 000000000 to 999999999 do
0923デフォルトの名無しさん
2005/12/25(日) 04:01:550924デフォルトの名無しさん
2005/12/25(日) 04:27:53なんで再帰は難しく感じるのだろう?
var
N: array['A'..'Z'] of Integer;
procedure Loop(C: Char);
var
I: Integer;
begin
for I := 0 to 9 do
begin
N[C] := I;
Loop(C + 1);
end;
end;
0925デフォルトの名無しさん
2005/12/25(日) 04:43:38その発想はなかったわ。
0926デフォルトの名無しさん
2005/12/25(日) 06:22:120927デフォルトの名無しさん
2005/12/25(日) 15:44:350928デフォルトの名無しさん
2005/12/25(日) 18:04:48遅くなってスマソ
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/1343.txt
0929デフォルトの名無しさん
2005/12/25(日) 18:06:53っつーか、上の条件だと SEND + MORE = MONEY も解なしになる。
この条件で解のある問題を作るプログラムを次の課題にしたいくらいだ。w
0930デフォルトの名無しさん
2005/12/25(日) 18:07:400931デフォルトの名無しさん
2005/12/26(月) 00:29:210932デフォルトの名無しさん
2005/12/26(月) 03:55:42999,999,999は32bitで表現できるから、ループは一つでいい。
高速に重複チェックする方法はどんなのがあるかな。
0933デフォルトの名無しさん
2005/12/26(月) 14:29:250934デフォルトの名無しさん
2005/12/26(月) 23:07:40全部で9!通りある。
0935デフォルトの名無しさん
2005/12/26(月) 23:25:349C1 + 9C2 + 9C3 + 9C4 + 9C5 + 9C6 + 9C7 + 9C8 + 9!
0936デフォルトの名無しさん
2005/12/28(水) 15:17:43丸投げです・・・はい・・・お願いします!!!
プログラムの概要は以下の通りです
―――――――――――――――――――――――――――――――
(1) 新郵便番号を入力すると対応する住所を画面に表示する.
(2) 住所名の一部を表す文字列を入力すると,その文字列を含む住所と
対応する新郵便番号のリストを画面に表示する.
リストは新郵便番号の昇順にソートすること.
ただし,郵便番号と住所の対応データをレコードファイルとして記憶する.
まず,検索しやすいレコードファイルを出力するプログラムを作成する.
次に,このレコードファイルを用いて上記(1), (2)の検索機能を実現する
プログラムを作成する.
―――――――――――――――――――――――――――――――
大変お手数ですが、新郵便番号は以下のURLからソースを入手してください
↓大阪の住所一覧(テスト用に使用。4000件程度)
http://www.vipper.org/vip166549.txt.html
↓全国の住所一覧(本番用に使用。12万件強)
http://uploader.fam.cx/data/u0826.txt
(http://uploader.fam.cx/upload.htmlのu0826.txtです)
大至急お願いします。もう丸投げです。というか提出期限22日です・・・
全部のソースを書き連ねると邪魔になるであろうと判断し、うpしました。
↓重ね重ね申し訳ないんですが下のURLから僕のプログラムを落としてください。
http://www.vipper.org/vip166548.txt.html
0937デフォルトの名無しさん
2005/12/28(水) 15:21:46エラーメッセージが出るのはprocedure insearの箇所です。
どうもstring[50]辺りでおかしくなっているようです。
[の前にセミコロンが無いといわれます。
もうどうしようもないです。
そして、たった今教授からメールで今日中に提出しないと危ないよと宣告されました。
0938ぴー☆6歳@ギコナビ ◆VuUl1LB0qU
2005/12/28(水) 15:42:24wordは予約語
0939936
2005/12/28(水) 15:59:25同一の住所が複数行に渡って記載されている箇所があります。
例
5900158,大阪府,堺市,太平寺(696−2〜696−3、724−1、725−1、726−1、727,1,0,0,0
5900158,大阪府,堺市,、728、728−1、729、730、731、732、733−1〜,1,0,0,0
5900158,大阪府,堺市,733−2、735、786−3番地),1,0,0,0
このような場合、郵便番号と最後の数字が等しければ同一の住所であると判断できます。
長々と申し訳ありませんでした。本当に宜しくお願いします!!!!!!1
落としそうです!!!!
>>938
ご指摘のようにwordをwordzとしました。
しかしエラーメッセージは相変わらずでした
0940デフォルトの名無しさん
2005/12/28(水) 16:57:58↓
procedure insear(x:packed array of char; word: string[50];t:boolean;wordlength,fin:integer;var i :integer);
添え字は0から始まるから注意
0941デフォルトの名無しさん
2005/12/30(金) 03:19:38とりあえずソースはもう流れてて確認できんが
どうせなら第4課題に備えた実装にすると吉
それと講師陣に最低1名VIPPERが居るから、ここはバレてる危険大
0942デフォルトの名無しさん
2005/12/30(金) 16:02:36てっきりプログラム板だと思ってたよ
0943デフォルトの名無しさん
2006/01/02(月) 05:21:27な、何故第四課題と知っているのですかwwwwwwwwwwwwwwwwwww
0944デフォルトの名無しさん
2006/01/02(月) 05:24:080945デフォルトの名無しさん
2006/01/02(月) 19:56:460946デフォルトの名無しさん
2006/01/02(月) 20:24:230947デフォルトの名無しさん
2006/01/04(水) 23:52:030948デフォルトの名無しさん
2006/01/05(木) 00:56:540949デフォルトの名無しさん
2006/01/05(木) 00:59:080950デフォルトの名無しさん
2006/01/05(木) 15:57:41だから誰か教えてください。
0951デフォルトの名無しさん
2006/01/05(木) 17:41:21聞くだけ無駄
0952デフォルトの名無しさん
2006/01/05(木) 19:39:30この頭の弱い大学生めが。
0953デフォルトの名無しさん
2006/01/05(木) 19:58:200954デフォルトの名無しさん
2006/01/05(木) 21:59:57今さらながら、smallest〜プログラムの一部
var x:integer;
begin
frompeg:=positionsmallest;
x:=n mod 2;
if x=1 then
begin
positionsmallest:=positionsmallest - 1;
if positionsmallest < 1 then
begin
positionsmallest:=positionsmallest + 3
end;
end;
if x=0 then
begin
positionsmallest:=positionsmallest + 1;
if positionsmallest > 3 then
begin
positionsmallest:=positionsmallest - 3;
end;
end;
topeg:=positionsmallest;
こんな感じであってますか?
Pascalが出来る人チェックしてくれませんか??
あと、出来れば >>883 のPutDisksOnPeg1とPrintArrayの綺麗な?上手く見える??記述方法ってありませんか?
0955デフォルトの名無しさん
2006/01/05(木) 22:06:380956デフォルトの名無しさん
2006/01/05(木) 22:35:34なんかフツーなのしかできないんで、チェック&Put〜とPrintのプログラム
よろしくお願いします↑↑↑
0957デフォルトの名無しさん
2006/01/06(金) 16:02:11ほんとに女子大生なのに こんなこと言うなんでひどいわ!!!
友達からここのこと教えてもらって書き込んだのにあんまりやわ!!!
何でそんなに疑うの?
0958デフォルトの名無しさん
2006/01/06(金) 16:39:17いいからおっぱいうp
0959>>952
2006/01/06(金) 18:54:15すまんかった。
本当にちんこの付いてない人間が
この板にいるとは思わなかったのだ。
>>958
同感ですな。
おしりでもおま○こでもいいよ。
0960デフォルトの名無しさん
2006/01/07(土) 01:16:21それより、課題が見えないのだけど。
0961デフォルトの名無しさん
2006/01/07(土) 03:46:28君は永遠にプログラミングできるようにならないよ
0962デフォルトの名無しさん
2006/01/07(土) 10:46:28日本語を話してくれ。
0963デフォルトの名無しさん
2006/01/07(土) 12:08:44日本語を勉強してくれ。
0964デフォルトの名無しさん
2006/01/07(土) 12:20:41>>959で結論が出ている。
>>960は余計だった。
0965デフォルトの名無しさん
2006/01/07(土) 18:06:441 から N までの数字を N 個並べる組み合わせをすべて
列挙するプログラムは Pascal で書くとどうなりますか?
例えば N = 3 のとき
1 2 3
1 3 2
2 1 3
2 3 1
3 1 2
3 2 1
となるようにです。
よろしくおながいします。
0966デフォルトの名無しさん
2006/01/07(土) 18:24:31begin
for counter=1 to N do
begin
end;
end;
まずこれが思い浮かんだ。
0967966
2006/01/07(土) 18:34:56for 1 to N do
begin
for counter=1 to N do
begin
end;
end;
0968デフォルトの名無しさん
2006/01/07(土) 18:39:12for j := 1 to N do
begin
end;
だろ。
0969966
2006/01/07(土) 18:47:16for counter1 := 1 to N do
begin
for counter2 := 1 to N do
begin
end;
end;
だった。
0970966
2006/01/07(土) 18:48:170971デフォルトの名無しさん
2006/01/07(土) 18:48:340972デフォルトの名無しさん
2006/01/08(日) 06:26:250973デフォルトの名無しさん
2006/01/08(日) 09:51:38うっさいボケ!自分もでけへんからひがんで荒らしてんのちゃうんか!
アホ↓↓
0974デフォルトの名無しさん
2006/01/08(日) 11:44:59var
t : integer;
begin
t := n[p]; n[p] := n[q]; n[q] := t; swap := true;
end;
function perm(var n : array of integer; s : integer) : boolean;
var
i, j, k : integer;
begin
i := s - 1; j := s - 1;
while (i > 0) and (n[i - 1] >= n[i]) do begin i := i - 1; end;
if i <= 0 then begin perm := false; end
else begin
k := i;
while i < j do begin swap(n, i, j); i := i + 1; j := j - 1; end;
i := k;
while n[i] <= n[k - 1] do begin i := i + 1; end;
swap(n, k - 1, i); perm := true;
end;
end;
var
n : array [0..9] of integer;
i : integer;
begin
for i := 0 to 9 do begin n[i] := i + 1; end;
repeat
for i := 0 to 9 do begin write(n[i], ' '); end; writeln('');
until not perm(n, 10);
end.
0975デフォルトの名無しさん
2006/01/08(日) 18:12:06ハァ?頭悪いの?
0976デフォルトの名無しさん
2006/01/08(日) 18:14:42>ハァ?頭悪いの?
↑
もはやこれだけでは
相手の頭の悪さを指摘するに足りんわけだが。
0977デフォルトの名無しさん
2006/01/09(月) 16:28:020978taihenda
2006/01/11(水) 02:35:15明後日までに仕上げないといけない宿題なのですが、何回やっても上手く組めません(>_<)
Delphi 6を使用
(問題)最小2乗法により直線近似をおこなうプログラムを作成する。
プログラム中には1)条件判定2)繰り返し3)配列の3つをかならず用いる。
実行画面は、(x,y)=(1,2),(2,4),(3,4),(4,6)と(x,y)=(1,2),(1,3),(1,4),(1,5)の二つの場合を示すこと。
(最小2乗法)n個の点(x1,y1),...,(xn,yn)が、ある直線の周りに散らばっているとき、それらにたいしてy=a+bxで近似する。
mx=1/nΣxi
my=1/nΣyi
sx=Σ(xi-mx)2乗
sxy=Σ(xi-mx)(yi-my)
b=sxy/sx
a=my-bmx
0979デフォルトの名無しさん
2006/01/11(水) 06:49:59[1] 授業単元:
[2] 問題文(含コード&リンク):
[3] 環境
[3.1] OS: (Windows/Linux/等々)
[3.2] コンパイラ名とバージョン: (gcc 2.9 VC 6.0等)
[3.3] 言語: (C/C++/どちらでも可 のいずれか)
[4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか)
[5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々)
【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに)
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm
0980978
2006/01/11(水) 08:18:230981taihenda
2006/01/11(水) 18:10:250982デフォルトの名無しさん
2006/01/11(水) 22:15:410983デフォルトの名無しさん
2006/01/11(水) 23:32:37人にやってもらおうという人間を
パスカルで抹殺したいのですが。
0984デフォルトの名無しさん
2006/01/12(木) 00:27:29バカかお前
0985デフォルトの名無しさん
2006/01/12(木) 00:37:29バカかお前
0986デフォルトの名無しさん
2006/01/12(木) 00:42:46バカかお前
0987デフォルトの名無しさん
2006/01/12(木) 00:46:41http://pc8.2ch.net/test/read.cgi/tech/1136994325
0988デフォルトの名無しさん
2006/01/12(木) 00:47:29バカかお前
0989デフォルトの名無しさん
2006/01/12(木) 00:48:56バカかお前
0990デフォルトの名無しさん
2006/01/12(木) 00:51:53>>985 00:37:29
>>988 00:47:29
次は 00:57:29 にtry
0991デフォルトの名無しさん
2006/01/12(木) 05:31:220992デフォルトの名無しさん
2006/01/12(木) 19:17:140993デフォルトの名無しさん
2006/01/12(木) 19:37:20バカかお前
0994デフォルトの名無しさん
2006/01/12(木) 20:10:320995デフォルトの名無しさん
2006/01/12(木) 20:44:530996デフォルトの名無しさん
2006/01/12(木) 21:20:42愚かなる地球連邦教えて厨に大打撃を与える予定。
0997デフォルトの名無しさん
2006/01/12(木) 21:33:500998デフォルトの名無しさん
2006/01/12(木) 21:34:010999デフォルトの名無しさん
2006/01/12(木) 21:35:54きしゃぽっぽ ┌(#))-┐ :: ̄`ヽz..,,_
/ ̄,r'´⌒ヾ:,^/ ̄|;;;:;|ll.|l.llll
(゙,,゙゙゙゙,,,゙,゙) |;;;::〔_| ¢. |||. /~''=| ‖ |
<|,____∧ |;;:: 人.,999 ノ;:| |≧フ|_,,!.-''"
(*‘ω‘ *) .|;:::庄兀巫兀庄|_//,-''"
.(゙,,゙゙゙゙,,,,,゙゙,゙) {二二二二二二}}フ) /`〜'ヽ
/ | ヘテ�合氏ァ/ 、人=====ソ
゙゙゙゙ v゙v゙゙゙゙ .__/__ /_ (><; ) < スリーナインです!
ぼいんっ_/______/__ ノ^ソ~~~ヽ
川 /________/__ ノ λ #ヽ
( ( ) ) / ゙゙゙゙゙ v゙v゙゙゙ ゙゙
1000デフォルトの名無しさん
2006/01/12(木) 21:36:24見たか!!!
俺は華麗。
そして
吉良上野介。
10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。