10/06/30 11:44:59
スレリンク(tech板:861番)
# [1] 授業単元:ファイル操作、2分探索法
# [2] 問題文:学生の身長、体重のデータを読み込みある学籍番号を入力した
# ときにその学生の学籍番号、身長、体重を2分探索法により求め、出力しなさい。
# 学生のデータは、txtファイルでxx yyy zzという風に記載されています。
# (例)出力結果
# 学生番号:xx
# 身長:yyy (cm)
# 体重:zz (kg)
167:デフォルトの名無しさん
10/06/30 17:07:33
>>166
% Prolog
URLリンク(nojiriko.asia)
168:デフォルトの名無しさん
10/06/30 17:24:16
スレリンク(tech板:863番)
# 【質問テンプレ】
# [1] 授業単元:プログラミング
# [2] 問題文:
# 二分法による平方根の計算。但し、求めたい平方根(自
# 然数)を入力できるようにした上で、プログラムの実行時
# の計算回数を計算・表示できるように、プログラムを作成
# すること。
169:デフォルトの名無しさん
10/06/30 18:02:30
>>168
% Prolog
二分法による平方根の計算(X,Y) :-
S1 is X / 2,
二分法による平方根の計算(1,X,S1,Y).
二分法による平方根の計算(N,X,S1,Y) :-
Y is X / 2 + S1,
write_formattd('%t %10.4f\n',[N,Y]),
0.0001 > abs(Y - S1),!.
二分法よる平方根の計算(N1,X,S1,Y) :-
S2 is S / 2 + S1,
N2 is N1 + 1,
二分法による平方根の計算(N2,X,S2,Y).
170:デフォルトの名無しさん
10/06/30 20:56:38
スレリンク(tech板:357番)
# [1] 授業単元:プログラミング
# [2] 問題文(含コード&リンク):
# URLリンク(ime.nu)
#
# 登録番号(int no)と名前(char *name)と年齢(int age)を含む構造体person型のポインタ変数を宣言し,
# 登録人数分だけの動的メモリ確保をせよ. そして, データをファイルから入力せよ. (malloc関数を使用すること)
# ファイルの形式は, 先頭に登録する人数とし, そのあとに人数分のデータを登録番号,名前, 年齢の順に書いていく
# (下の例を参照. 登録番号は入力順に1,2,3,4,5, …とする. そして, 入力した全員データを表示せよ.
#
# (ファイルの例)
# 3
# 1 田中 20
# 2 大田 40
# 3 井上 35
171:デフォルトの名無しさん
10/06/30 21:54:55
>>170
% Prolog データファイルを作ることも問題のうちなのかな。例によってポインター云々は無視。
ファイル作成(_ファイル名) :-
write('作成するデータ数を入力してください : '),
get_integer(N),
tell(_ファイル名),
write_formatted('%t\n',[N]),
for(1,M,N),
write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
get_split_line([',',' '],[_名前,_年齢]),
write_formatted('%t %t %t\n',[N,_名前,_年齢]),
M = N,
told.
ファイルから読み取ったデータを登録する(_ファイル名) :-
get_split_lines(_ファイル名,[' '],LL),
LL = [_|LL2],
'この場合、要素数(構造体の数)はいらないから',
append(_,[[_登録番号,_名前,_年齢]|R],LL2),
assertz(人物(_登録番号,_名前,_年齢)),
R = [].
'この場合、要素数(構造体の数)はいらないから'.
172:デフォルトの名無しさん
10/06/30 22:54:32
>>170
% Prolog >>171はナンセンスで、Prologのプログラマなら、
ファイル作成(_ファイル名) :-
write('作成するデータ数を入力してください : '),
get_integer(N),
tell(_ファイル名),
for(1,M,N),
write('名前と年齢をカンマまたはスペース区切りで入力してください : '),
get_split_line([',',' '],[_名前,_年齢]),
write_formatted(人物('%q,%q,%q).\n',[N,_名前,_年齢]),
M = N,
told.
ファイルから読み取ったデータを登録する(_ファイル名) :-
consult(_ファイル名).
173:デフォルトの名無しさん
10/06/30 23:39:49
>>162
% Prolog
URLリンク(nojiriko.asia)
174:デフォルトの名無しさん
10/07/01 05:33:43
スレリンク(tech板:58番)
# 二分法とニュートン法で次の非線形方程式の解を求めるプログラムを作成せよ
#
# x=2+logx (x≧1)
#
175:デフォルトの名無しさん
10/07/01 09:00:30
>>170
% Prolog (その一) 整列と併合を除く外殻だけ。
オンメモリ整列限界数(1000).
ファイルに保存された会員情報を指定された項目をキーとしてソートする(_対象ファイル,_鍵項目番号,_ソート方法) :-
オンメモリ整列限界数(_オンメモリ整列限界数),
open(_対象ファイル,read,Input),
ふたつの仮ファイルの取得と交互からくり生成,
入力出力ファイルを交互しながらの繰り返し(_,_仮出力ファイル,InputT,OutputT),
対象ファイルから読み込む(Input,_オンメモリ整列限界数,Lines,_診断),
鍵・昇降順・指定整列(Lines,_鍵項目番号,_ソート方法,_整列されたLines),
鍵項目番号とソート方法をしてファイル併合(_整列されたLines,_鍵項目番号,_ソート方法,InputT,OutputT),
_診断 = end_of_file,close(Input),
仮出力ファイルの内容を整理しながら標準出力に表示する(_仮出力ファイル,_鍵項目番号).
入力出力ファイルを交互しながらの繰り返し(_仮ファイルA,_仮ファイルB,InputT,OutputT) :-
仮ファイルからくり(_仮ファイルA,_仮ファイルB),
open(_仮ファイルA,read,InputT),
open(_仮ファイルB,write,OutputT).
仮ファイルからくり(X) :- 仮ファイルからくり(X).
ふたつの仮ファイルの取得と交互からくり生成 :-
tmpnam(_仮ファイル1),open(_仮ファイル1,write,Output1),close(Output1),
tmpnam(_仮ファイル2),opne(_仮ファイル2,write,Output2),close(Output2),
asserta(仮ファイルからくり(_仮ファイル2,_仮ファイル1)),
asserta(仮ファイルからくり(_仮ファイル1,_仮ファイル2)).
176:デフォルトの名無しさん
10/07/01 11:24:56
>>200
% Prolog
学校のホームページに載っている休講情報に接続して、それから先生の名前と日にちだけ取り出す(URL,_休講情報ならび) :-
w3c(URL,Lines),
先生の名前と日にちだけ取り出す(Lines,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(Lines,_休講情報ならび) :-
append(L0,[A|R1],Lines),
sub_atom(A,_,2,_,先生),
月日を取り出す(L0,_月,_日),
ある日の休講情報ならびを得る([A|R1],_月,_日,_ある日の休講となる情報ならび,_残りならび),
先生の名前と日にちだけ取り出す(_残りならび,R),
append(_ある日の休講となる情報ならび,_休講情報ならび),!.
先生の名前と日にちだけ取り出す(_,[]) :- !.
月日を取り出す(Lines,_月,_日) :-
append(_,[A|_],Lines),sub_atom(A,S,1,_,月),sub_atom(A,0,S,_,_月),
append(_,[B|_],Lines),sub_atom(A,S,1,_,日),sub_atom(B,0,S,_,_日),!.
ある日の休講情報ならびを得る([],_,_,[],[]) :- !.
ある日の休講情報ならびを得る(['\n'|R],_,_,[],R) :- !.
ある日の休講情報ならびを得る([A|R1],_月,_日,[[_氏名,_月,_日]|R2],_残りならび) :-
sub_atom(A,_,2,_,先生),
split(A,[' '],[_姓,_名,先生]),
concat_atom([_姓,_名],_氏名),
ある日の休講情報ならびを得る(R1,_月,_日,R2,_残りならび).
177:デフォルトの名無しさん
10/07/01 11:29:40
>>176 の出題レス番号は >>200 ではなくて >>133 でした。
178:デフォルトの名無しさん
10/07/01 13:47:49
>>175
これも >>170 ではなくて >>160 だった。
179:デフォルトの名無しさん
10/07/01 15:45:50
スレリンク(tech板:390番)
# [1] 授業単元: プログラミング言語
# [2] 問題文(含コード&リンク): URLリンク(ime.nu) jp/cgi-bin/joyful/img/10772.txt
#
# 演習1
# 再帰呼び出しを用いたフィボナッチ数
180:デフォルトの名無しさん
10/07/01 16:13:56
>>179
% Prolog
フィボナッチ数(0,1).
フィボナッチ数(1,1).
フィボナッチ数(N,X) :-
N >= 2,
N_1 is N - 1,フィボナッチ数(N_1,X1),
N_2 is N - 2,フィボナッチ数(N_2,X2),
X is X1 + X2.
181:デフォルトの名無しさん
10/07/01 19:54:48
>>160
% Prolog
URLリンク(nojiriko.asia)
182:デフォルトの名無しさん
10/07/02 00:20:09
>>131
使用言語:十進BASIC
FUNCTION ack(m,n)
IF m=0 THEN
LET ack=n+1
ELSEIF n=0 THEN
LET ack=ack(m-1,1)
ELSE
LET ack=ack(m-1,ack(m,n-1))
END IF
END FUNCTION
FOR i=0 TO 8
PRINT USING "ask(3,#) = ####":i,ack(3,i)
NEXT I
END
ask(3,0) = 5
ask(3,1) = 13
ask(3,2) = 29
ask(3,3) = 61
ask(3,4) = 125
ask(3,5) = 253
ask(3,6) = 509
ask(3,7) = 1021
ask(3,8) = 2045
183:デフォルトの名無しさん
10/07/02 00:21:11
>>131
使用言語:Lua
function ack(m,n)
if m==0 then return n+1
elseif n==0 then return ack(m-1,1)
else return ack(m-1,ack(m,n-1))
end
end
for i=0,8 do print("ack(3,"..i..") = "..ack(3,i))end
ack(3,0) = 5
ack(3,1) = 13
ack(3,2) = 29
ack(3,3) = 61
ack(3,4) = 125
ack(3,5) = 253
ack(3,6) = 509
ack(3,7) = 1021
ack(3,8) = 2045
184:デフォルトの名無しさん
10/07/02 00:22:11
>>131
使用言語:Xtal
ack:fun(m,n){
if (m==0) return n+1;
if (n==0) return ack(m-1,1);
return ack(m-1,ack(m,n-1));
}
ix:009>9.times{%f"ack(3,%d)=%d"(it,ack(3,it)).p;};
ack(3,0)=5
ack(3,1)=13
ack(3,2)=29
ack(3,3)=61
ack(3,4)=125
ack(3,5)=253
ack(3,6)=509
ack(3,7)=1021
ack(3,8)=2045
ix:010>
185:デフォルトの名無しさん
10/07/02 04:59:37
スレリンク(tech板:405番)
# 摂氏から華氏,及び華氏から摂氏に換算する関数を作成して、
# main関数でキーボードから温度とその値が摂氏であるか華氏であるかを
# 入力し,摂氏ならば華氏に,華氏ならば摂氏に換算した値を小数点以下1桁までで出力するプログラムを作成しなさい。
# なお出力は main関数で行うこと。
#
186:デフォルトの名無しさん
10/07/02 05:00:56
スレリンク(tech板:409番)
# [1] 授業単元:プログラミングC
# [2] 問題文(含コード&リンク):
# 極座標(r,θ)の値を入力すると、直交座標(x,y)に変換するプログラムを作成せよ。
# 但し,θの値はdegree(度)で入力すること。また、πの値は逆三角関数(arctan(x))を使って計算をすること。
#
187:デフォルトの名無しさん
10/07/02 05:01:48
スレリンク(tech板:410番)
# [1] 授業単元:アルゴリズム論
# [2] 問題文(含コード&リンク):分離連作法と外部ハッシュ法の性能比較
#
188:デフォルトの名無しさん
10/07/02 05:04:19
スレリンク(tech板:215番)
#
# 【 課題 】
# 課題1
#
# 整数型の変数n1,n及びn3には、数値が格納されている。
# これらの3個の数値の大小比較を行い、最大値を変数maxに、最小値を変数minに格納する手続き部である。
# 最初にn1とn2の大小比較を行い、大きいほうをmaxに入れ、小さい方をmmminに入れる。
# 次に、max及びminとn3を大小比較して、大きいほうをmaxに、小さい方をminに入れて、最終的な最大値および
#
# 最小値を決定する。
189:デフォルトの名無しさん
10/07/02 05:21:57
スレリンク(tech板:877番)
# [1] 授業単元:2分探索法
# [2] 問題文: URLリンク(nojiriko.asia) にコピーさせていただきました。
#
190:デフォルトの名無しさん
10/07/02 05:26:20
スレリンク(tech板:45番)
# 以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
# 逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
# 可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ'a','o','n' で表現すること.
# 使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
# 例) (x1∧x2)∨(¬x1∧x3) ⇒ 12a1n3ao
# 使用できない文字が含まれる入力に対してエラーの旨を出力すること.
# 入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.
191:デフォルトの名無しさん
10/07/02 06:10:53
>>189
% Prolog 問題B 問題B.1
_学籍番号+_氏名+_誕生_月+_誕生_日 :-
open('data_b.txt',append,Output),
write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
close(Output).
'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
get_split_lines([' '],'data_b.txt',LL),
鍵項目の付加(LL,LL2),
整列(LL2,LL3),
鍵項目を除去しながら出力する(LL3).
鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
鍵項目の付加(R1,R2).
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).
鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
open('out_b.txt',append,Output),
write_formatted(Output,'%t %t %t月 %t日\n',L),
close(Output),
鍵項目を除去しながら出力する(R).
192:デフォルトの名無しさん
10/07/02 06:57:45
>>191 (>>189)
% Prolog get_split_lines/3の引数の取り方に誤りがあった。修正。
_学籍番号+_氏名+_誕生_月+_誕生_日 :-
open('data_b.txt',append,Output),
write_formatted(Output,'%t %t %t %t\n',[_学籍番号,_氏名,_誕生_月,_誕生_日]),
close(Output).
'data_b.txtを読み込み、4月1日を年初めとして、誕生日の早いもの順にソートし、その結果を「output_b.txt」ファイルに出力する' :-
get_split_lines('data_b.txt',[' '],LL),
鍵項目の付加(LL,LL2),
整列(LL2,LL3),
鍵項目を除去しながら出力する(LL3).
鍵項目の付加([],[]) :- !.
鍵項目の付加([[_学籍番号,_氏名,_誕生_月,_誕生_日]|R1],[_誕生_月_2,_誕生_日,_学籍番号,_氏名,_誕生_月,_誕生_日]|R2]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2),
鍵項目の付加(R1,R2).
'1-3月を13-15月に修正'(_誕生_月,_誕生月_2) :- _誕生_月 >= 1,_誕生_月 =< 3,_誕生_月_2 is _誕生_月 + 12,!.
'1-3月を13-15月に修正'(_誕生_月,_誕生月).
鍵項目を除去しながら出力する([]) :- !.
鍵項目を除去しながら出力する([[_,_|L]|R]) :-
open('out_b.txt',append,Output),
write_formatted(Output,'%t %t %t月 %t日\n',L),
close(Output),
鍵項目を除去しながら出力する(R).
193:デフォルトの名無しさん
10/07/02 07:00:34
>>189
% Prolog 問題B.2
'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、
誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
get_split_lines('output_b.txt',[' ',月,日],LL),
二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).
二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
length(LL,Len),
Len0 is Len // 2,
append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
length(L0,Len0),
'1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番
号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,
_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
194:デフォルトの名無しさん
10/07/02 07:05:19
>>193 (>>189)
% Prolog また、改行ミスがあった。
'output_b.txtを読み込み、ある誕生日を入力したときに、その学生の学籍番号、氏名、誕生月、誕生日を二分探索法により出力する'(_誕生_月,_誕生_日) :-
get_split_lines('output_b.txt',[' ',月,日],LL),
二分探索法(LL,_誕生_月,_誕生_日,[_学籍番号,_氏名,_誕生_月,_誕生_日]),
write_formatted('%t %t %t %t月%t日\n',[_学籍番号,_誕生_月,_誕生_日]).
二分探索法(LL,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
'1-3月を13-15月に修正'(_誕生_月,_誕生月_0),
length(LL,Len),
Len0 is Len // 2,
append(L0,[[_学籍番号_1,_氏名_1,_誕生_月_1,_誕生_日_1|L1],LL),
length(L0,Len0),
'1-3月を13-15月に修正'(_誕生_月_1,_誕生月_10),
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月,_誕生_日,_誕生_月,_誕生_日,L) :- !.
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @> [_誕生_月_10,_誕生_日_1],!,
二分探索法(L0,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
二分探索法(L0,L,L1,_誕生_月_0,_誕生_日,_誕生_月_10,_誕生_日_1,[_学籍番号,_氏名,_誕生_月,_誕生_日]) :-
[_誕生_月_0,_誕生_日] @< [_誕生_月_10,_誕生_日_1],!,
二分探索法(L1,_誕生_月,_誕生_年,[_学籍番号,_氏名,_誕生_月,_誕生_日]).
195:デフォルトの名無しさん
10/07/02 07:17:53
>>191->>194 (>>189)
% Prolog もう二ヶ所エラーがあった。書き直しはしません。アーカイブの方を見てください。
URLリンク(nojiriko.asia)
196:デフォルトの名無しさん
10/07/02 08:00:34
>>188
% Prolog
URLリンク(nojiriko.asia)
197:デフォルトの名無しさん
10/07/02 10:33:56
>>185
% Prolog
main :-
write('温度を入力してください : '),
get_line(Line),
atom_to_term(Line,_温度,_),
write('摂氏または華氏と入力してください : '),
get_line(_摂氏または華氏),
摂氏・華氏温度変換(_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二)
,
write_formatted('入力された%t%t度は%t%3.1f度です,[_摂氏または華氏,_温度,_摂氏または華氏の二,_温度の二).
摂氏・華氏温度変換(摂氏,_温度,華氏,_華氏) :- 摂氏・華氏変換計算(_温度,_華氏).
摂氏・華氏温度変換(華氏,_温度,摂氏,_摂氏) :- 摂氏・華氏変換計算(_摂氏,_温度).
摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_摂氏)),_華氏 is 9 * _摂氏 / 5 + 32,! .
摂氏・華氏変換計算(_摂氏,_華氏) :- \+(var(_華氏)),_摂氏 is 5 * (_華氏 - 32) / 9,!.
198:デフォルトの名無しさん
10/07/02 12:22:18
>>131
使用言語:R
ack <- function(m,n){
if (m==0) n+1
else if (n==0) ack(m-1,1)
else ack(m-1,ack(m,n-1))
}
> for(i in 0:8)cat("ack( 3 ,",i,") =",ack(3,i),"\n")
ack( 3 , 0 ) = 5
ack( 3 , 1 ) = 13
ack( 3 , 2 ) = 29
ack( 3 , 3 ) = 61
ack( 3 , 4 ) = 125
ack( 3 , 5 ) = 253
エラー: 評価があまりに深く入れ子になっています。無限の再帰か options(expressions=)?
>
199:デフォルトの名無しさん
10/07/02 12:44:54
>>131
使用言語:uwsc
for i=0 to 6
print ack(3,i)
next
function ack(m,n)
if m = 0 then result = n+1
elseif n = 0 then result = ack(m - 1,1)
else result = ack(m - 1,ack(m,n - 1))
fend
5
13
29
61
125
253
509
200:デフォルトの名無しさん
10/07/02 17:55:15
>>131
使用言語:Clojure
(defn ack[m n]
(cond (zero? m) (inc n)
(zero? n) (ack (dec m) 1)
:else (ack (dec m) (ack m (dec n)))))
user=> (dotimes [i 9] (printf "(ack 3 %d) -> %d\n" i (ack 3 i)))
(ack 3 0) -> 5
(ack 3 1) -> 13
(ack 3 2) -> 29
(ack 3 3) -> 61
(ack 3 4) -> 125
(ack 3 5) -> 253
(ack 3 6) -> 509
(ack 3 7) -> 1021
(ack 3 8) -> 2045
201:デフォルトの名無しさん
10/07/02 17:56:43
>>131
使用言語:Io
Io> ack:=method(m,n,if(m==0,n+1,if(n==0,ack(m-1,1),ack(m-1,ack(m,n-1)))))
Io> 8 repeat(i,ack(3,i)println)
5
13
29
61
125
253
509
1021
==> 1021
202:デフォルトの名無しさん
10/07/02 19:05:41
スレリンク(tech板:414番)
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):switch 文を使用して
# 1. データファイルの新規作成
# 2. データファイルの追加作成
# 3. データファイルの読み込みと表示
# 4. 終了
# をメニュー形式で処理するプログラムを作成せよ。
# ・ ファイル名はキーボードから入力する。
# ・ 1~4の処理はユーザ関数として定義すること。
# void data_write(void)
# void data_append(void)
# void data_read(void)
# void the_end(void)
# ・1~4以外の数値が入力されたら再入力させること。
203:デフォルトの名無しさん
10/07/02 19:06:31
スレリンク(tech板:417番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 正の整数を引数とし、その階乗(n!)を計算して戻り値とする関数
# factを作成して動作を確認せよ。
#
204:デフォルトの名無しさん
10/07/02 19:13:16
スレリンク(tech板:222番)
# 【 課題 】URLリンク(nojiriko.asia) にコピーさせていただきました。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 期限 】7月7日
# 【 Ver 】"1.6.0_20"
# 【 補足 】アップしたファイルに先生が途中まで解答したものが含まれているので、なるべくならそれを使用して下さい。
#
205:デフォルトの名無しさん
10/07/02 21:07:45
>>202
% Prolog
switch(N,{N:P}) :- !,call(P).
switch(N,{N:P;_}) :- !,call(P).
switch(N,{P1;P2}) :- switch(N,{P1});switch(N,{P2}).
switch述語を使ってメニューを処理する(N,File) :-
switch(N,{1:データファイルの新規作成(File);2:データファイルの追加作成(File);3:データファイルの読み込みと表示(File);4:終了}).
データファイルの新規作成(File) :- open(File,write,Output),close(Output).
データファイルの追加作成(File) :-
write('追加要素を入力しなさい : '),
get_line(Line),
open(File,append,Output),
write_formatted(Output,'%t\n',[Line]),
close(Output).
データファイルの読み込みと表示(File) :-
get_lines(File,Lines),
put_lines(Lines).
終了 :- halt.
206:デフォルトの名無しさん
10/07/02 21:12:00
スレリンク(tech板:420番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 実数値(xとする)と正の実数値(yとする)を引数としてx^yを戻り値とする
# 関数mypowを作成し、プログラムリストと実行結果を示せ。
# ただし、xとyについてはmain関数でキーボードから入力するようにし、
# 出力結果としては、mypow関数の計算結果と数学関数pow関数の結果を
# 両方表示するようにせよ。また、mypow関数のプロトタイプ宣言も行うこと。
#
207:デフォルトの名無しさん
10/07/02 21:13:42
スレリンク(tech板:421番)
# [1] 授業単元: プログラム言語
# [2] 問題文(含コード&リンク):
# 10 人の成績を入力し,その順位を成績と共に表示したい。以下の考え方に基づいた
# プログラムを作成せよ。
# 1 ?
# 2次元配列s[10][2] を用意する。
# 2 ?
# i=0~9 のfor 文を用いてs[i][0] に成績を入力する。
# 3 ?
# s[0][0] とs[j][0],j=0~9 を比較し,s[0][0] より大きい数値の個数n を数え
# る。その個数+1 が成績順位になるので,s[0][1] にn+1 を代入する。
# 4 ?
# 同様の操作をs[i][0],i=0~9 に対して行なえば,その成績順位がs[i][1] とし
# て求められるので,あとは成績と共に表示すればよい。
#
208:デフォルトの名無しさん
10/07/02 22:03:42
>>186
使用言語:J
f=:[:+.[r.(180%~4*_3 o.1)*]
2 f 30
1.73205 1
1 f 45
0.707107 0.707107
209:デフォルトの名無しさん
10/07/02 22:38:10
>>203
% Prolog
fact(N,X) :-
length(L1,N),
fact(L1,L1,LX),
length(LX,X) .
fact(L1,[_],L1) :- !.
fact(L1,[_|R2],LX) :-
findall(L1,member(_,R2),LY),
flat(LY,LZ),
fact(LZ,R2,LX).
210:デフォルトの名無しさん
10/07/02 22:57:09
>>186
使用言語:maxima
f(r,d):=(a:d*4.*atan(1)/180,[float(r*cos(a)),float(r*sin(a))]);
(%i21) f(2,30);
(%o21) [1.732050807568877, 1.0]
(%i22) f(1,45);
(%o22) [0.70710678118655, 0.70710678118655]
211:デフォルトの名無しさん
10/07/03 08:02:22
>>207
使用言語:J
a=: 30 50 50 70 50 100 90 70 80 60
f=:>:@(+/"1)@(</~)
a,:f a
30 50 50 70 50 100 90 70 80 60
10 7 7 4 7 1 2 4 3 6
212:デフォルトの名無しさん
10/07/03 11:19:52
>>207
% Prolog
'10 人の成績を入力し,その順位を成績と共に表示する' :-
'要素数10の変数ならびを二本用意する'(L1,L2),
'L1に成績を入力する'(L1),
'L1の先頭から順位を対応するL2の位置にセット'(1,10,L1,L2),
二本のならびを順に表示(L1,L2).
'要素数10の変数ならびを二本用意する'(L1,L2) :-
length(L1,10),length(L2,10).
'L1に成績を入力する'(L1) :-
for(1,N,10),get_integer(_点数),list_nth(N,L1,_点数),N=10,!.
'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :- N > M,!.
'L1の先頭から順位を対応するL2の位置にセット'(N,M,L1,L2) :-
list_nth(N,L1,_点数),list_nth(N,L2,_順位),
count((member(_点数1,L1),_点数1 > _点数),_成績上位者数),_順位 is _成績上位者数 + 1,
N2 is N + 1,
'L1の先頭から順位を対応するL2の位置にセット'(N2,M,L1,L2).
二本のならびを順に表示(L1,L2) :-
for(1,N,10),
list_nth(N,L1,A),list_nth(N,L2,B),
write_formatted('%t,%t位\n',[A,B]),
N=10.
213:デフォルトの名無しさん
10/07/03 11:28:49
>>186
使用言語:Io
f:=method(r,d,a:=1 atan*4/180*d;list(a cos*r,a sin*r))
Io> f(2,30)
==> list(1.7320508075688774, 0.9999999999999999)
Io> f(1,45)
==> list(0.7071067811865476, 0.7071067811865475)
214:デフォルトの名無しさん
10/07/03 17:26:07
スレリンク(tech板:441番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# UNIXコマンドのgrep(指定したファイルを読み込み、指定した文字列とマッチする行を出力するコマンド)と同じ動作をするプログラムを実装しなさい。
# ただし、オプションなどの副次的な機能はつけなくてもよい。
#
215:デフォルトの名無しさん
10/07/03 19:54:29
>>207
使用言語:Lua
a={30,50,50,70,50,100,90,70,80,60}
b={}
for i,v in pairs(a) do
r=1
for j,w in pairs(a) do
if v<w then r=r+1 end
end
b[i]=r
end
for i,v in pairs(b) do
print(a[i]..' '..v)
end
30 10
50 7
50 7
70 4
50 7
100 1
90 2
70 4
80 3
60 6
216:デフォルトの名無しさん
10/07/03 22:37:10
>>186
% Prolog
'極座標(r,θ)の値を入力すると、直交座標(x,y)に変換する'(_r,_θ,_x,_y) :-
_x is _r * cos(4 * atan(1) * _θ / 180),
_y is _r * sin(4 * atan(1) * _θ / 180).
217:デフォルトの名無しさん
10/07/04 06:18:13
スレリンク(tech板:457番)
# [1] 授業単元:プログラム演習
# [2] 問題文(含コード&リンク):
# 以下のプログラムに、下に示す二つの関数を実装し、組み込みなさい。
# ファイル中に保存するデータはアスキー形式でも、バイナリ形式でもどちらでも構わないものとする。
# URLリンク(ime.nu)
# ・構造体Employee型のデータが順に保存されているファイルからデータを読み込む 数。
# ・作成したデータをファイルに書き出す関数。
# 例えば、構造体Employeeを下に示すものと同じ定義にしたとする。
# この構造体に従ったASCII形式のデータベースファイルを読み込み、
# 社員の追加や、給与の変更をした後、同様なデータベースファイルとして保存できるようにしなさい(もちろん、バイナリ形式のファイルにしても構わない)。 # [構造体Employeeの例]
# typedef struct {
# char name[16];
# int age;
# int salary;
# } Employee;
#
# [データベースファイルの例]
# TANAKA 32 620
# SUZUKI 25 500
# CHIBA 35 650
# NAKAMURA 50 1000
# IIDA 45 800
218:デフォルトの名無しさん
10/07/04 08:26:53
スレリンク(tech板:461番)
# [1] 授業単元: プログラミング実験
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# 【問題3-01】 50点 高速整列算法の挿入法の効率化
# 半乱順列に対する、クイック・マージ・ヒープの3つの高速整列算法の性能を評価する。再帰法を使った実装でよい。
# 計算量は、処理時間で計測する。データ数nを100~10000の範囲で変更してみる。両対数グラフを描くとよい。
# 各条件で、10000回以上の試行を行い、平均と分散を求め、度数分布表も作成してみる。
# 必要なプログラムを作成し、データを用意する。シミュレーション実験を行い、実行結果を数表やグラフで示し、考察を述べる。
# (1) 確率指定 p の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# (2) 回数指定 m の増大による処理時間 t への影響を調べる。各整列算法について、グラフを描き、増加の傾向を考察する。
# 【問題3-02】 50点 クイックソートの効率化
# クイックソートの効率化を実装し、実行結果を考察する。
# (1) クイックソートは、振分処理の基準値によって、効率性が大きく変わってしまう。片寄った基準値では、非常に効率が悪くなる。
# そこで、部分列の先頭要素を選ぶのではなく、先頭・中央・末尾の要素の平均値または中央値を基準値にする手法が用いられる。
# この手法によって、平均計算量がどれくらい効率化されるか調べよ。
# (2) クイックソートは、データ数 nに対して、n×log(n) 程度の計算量となる
# データ数 が大きいときは効率的であるが、小さいときはかえって効率が悪くなる。
# そこで、データ数が m 以下になった部分列に対して、単純挿入法に切り替える手法が用いられる。
219:デフォルトの名無しさん
10/07/04 08:28:30
スレリンク(tech板:466番)
# どなたか教えてください。ずっと考えてたけど、答えがわかりませんorz。
#
# <標準関数>文字列と削除文字列を入力し、文字列中から削除文字列を削除しなさい。
# ※配列の使用は2つだけ。
# 例) 文字列入力→ABCDEFAABCDABC
# 削除文字列→ABC
# 結果文字列→DEFAD
#
# どなたか教えてください、お願いします。
220:デフォルトの名無しさん
10/07/04 10:01:14
>>219
使用言語:J
f=:dyad def 'y{~<<<,(i.#x)+/~I.x E.y'
'ABC' f 'ABCDEFAABCDABC'
DEFAD
'ABA' f 'ABABABC'
BC
二番目の例のように検索文字列が重なった場合どこまで消す?
221:デフォルトの名無しさん
10/07/04 13:25:52
スレリンク(db板:243番)
# プログラム言語で以下の集約を定義しなさい。
# SELECT CASE pref_name
# WHEN '徳島' THEN '四国'
# WHEN '香川' THEN '四国'
# WHEN '愛媛' THEN '四国'
# WHEN '高知' THEN '四国'
# WHEN '福岡' THEN '九州'
# WHEN '佐賀' THEN '九州'
# WHEN '長崎' THEN '九州'
# ELSE 'その他' END AS district,
# SUM(population)
# FROM PopTbl
# GROUP BY CASE pref_name
# WHEN '徳島' THEN '四国'
# WHEN '香川' THEN '四国'
# WHEN '愛媛' THEN '四国'
# WHEN '高知' THEN '四国'
# WHEN '福岡' THEN '九州'
# WHEN '佐賀' THEN '九州'
# WHEN '長崎' THEN '九州'
# ELSE 'その他' END;
222:デフォルトの名無しさん
10/07/04 15:20:36
>>219
% Prolog
文字列中から削除文字列を除去する(_文字列,_削除する文字列,_削除された文字列) :-
sub_atom(_文字列,A,Len,B,_削除する文字列),
sub_atom(_文字列,0,A,_,S1),
sub_atom(_文字列,A+Len,B,_,S2),
文字列中から削除文字列を削除する(S2,_削除する文字列,S3),
concat_atom([S1,S3],_削除された文字列).
文字列中から削除文字列を除去する(S,_,S).
% >>220 の第二番目の解釈、挑戦してみたが、結構複雑。
223:デフォルトの名無しさん
10/07/04 15:23:07
スレリンク(tech板:475番)
# [1] 授業単元:プログラミング
# [2]問題文:
# ファイルseiseki.txt から氏名と点数を読み込んで、成績順に並べ替え、結果を画
# 面に表示するプログラムを作成せよ。
# ・氏名は2次元配列、点数は1次元配列に格納する。
# ・ データの並べ替えには単純挿入法、単純選択法またはバブルソートを使用する。
# ・ 文字列 x[]と文字列y[]の入れ替えは、文字列操作関数strcpy を用いて行う。
# strcpy(z,x); strcpy(x,y); strcpy(y,z);
#
224:デフォルトの名無しさん
10/07/04 16:14:09
スレリンク(tech板:481番)
# [1] 授業単元:方程式の解
# [2] 問題文(含コード&リンク):方程式exp(-x^2/2)=0.5の解を求める
#
225:デフォルトの名無しさん
10/07/04 18:38:36
スレリンク(tech板:230番)
# 【 課題 】テキストファイルを読み込み行毎に出現頻度を統計するプログラムを作れ
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】4. 制限なし
# 【 期限 】7月6日
# 【 Ver 】"1.6.0_20"
# 【 補足 】
# 例:
# ああA1111あa1AAAa
# BBBbいbいbB2
#
# という2行のテキストファイルであれば
#
# 1. 1,5 A,4 あ,3 a,2
# 2. B,4 b,3 い,2 2,1
#
# という風に表示します。
226:デフォルトの名無しさん
10/07/04 18:43:07
スレリンク(tech板:231番)
# 【 課題 】()が使える電卓に改造しなさい。(再帰メソッド使用)
# 【 形態 】2. Applet
# 【 GUI 】2. Swing
# 【 期限 】7/5
# 【 Ver 】1.6.0_15
# 【 補足 】()以外の部分は完成しているのですが、()の部分をどう作って
# いいかわからず困っています。「再帰メソッド」というのも色々調べてみましたが、
# 上手く理解できません。以下がソースです。
# URLリンク(nojiriko.asia) にコピーさせていただきました。
227:デフォルトの名無しさん
10/07/04 23:31:37
>>225
% Prolog (その一)
テキストファイルを読み込み行毎に出現頻度を統計する(_テキストファイル) :-
get_lines(_テキストファイル,Lines),
行毎に出現頻度を統計する(Lines,_行統計ならび),
行統計ならびを表示する(_行統計ならび).
行毎に出現頻度を統計する([],[]) :- !.
行毎に出現頻度を統計する([_行文字列|R1],[_降順に整列した出現頻度ならび|R2]) :-
文字毎の出現頻度を調べる(Chars,[],_出現頻度ならび),
降順に整列(_出現頻度ならび,_降順に整列した出現頻度ならび),
行毎に出現頻度を統計する(R1,R2).
文字毎の出現頻度を調べる([],_出現頻度ならび,_出現頻度ならび) :-
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
\+(member([_,A],L1)),
文字毎の出現頻度を調べる(R1,[[1,A]|L1],_出現頻度ならび),!.
文字毎の出現頻度を調べる([A|R1],L1,_出現頻度ならび) :-
append(L0,[[N1,A]|L2],L1),
N2 is N1 + A,
append(L1,[[N2,A]|L2],L3),
文字毎の出現頻度を調べる(R1,L3,_出現頻度ならび),!.
228:デフォルトの名無しさん
10/07/04 23:34:57
>>225
% Prolog (その二)
降順に整列(L1,L2) :- sort(L1,L3),reverse(L3,L2).
行統計ならびを表示する(_行統計ならび) :-
append(L0,[_行統計|L1],_行統計ならび),
length(L0,Len),
_行番号 is Len + 1,write('%t.'),
行の統計を表示する(_行統計),
L1 = [].
行の統計を表示する([]) :- write('\n'),!.
行の統計を表示する([[N,A]|R]) :-
write_formatted(' %t,%t',[A,N]),
行の統計を表示する(R).
229:デフォルトの名無しさん
10/07/04 23:37:49
スレリンク(tech板:501番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 次式の値を返す関数を作成せよ。
# f(x)=e^{-x} cos(2πx)
# その関数を用いて0≦x≦3の間で0.1刻みで計算し、結果をリダイレクトで
# ファイルに記録せよ。その結果をgnuplotでグラフにして示せ。
#
230:デフォルトの名無しさん
10/07/05 00:18:05
>>221
% Prolog
地方で集約する(_地方,_人口) :-
findsetof(_地方,(
'PopTbl'(_pref_name,_population),
地方(_地方,_pref_name)),
L1),
append(_,[_地方|_],L1),
findsum(_population,(
'PopTbl'(_pref_name,_population),
地方(_地方,_pref_name)),
_人口).
地方(四国,徳島).
地方(四国,香川).
地方(四国,愛媛).
地方(四国,高知).
地方(九州,福岡).
地方(九州,佐賀).
地方(九州,長崎).
231:デフォルトの名無しさん
10/07/05 04:59:32
>>229
% Prolog
program :-
M is truncate((3 - 0) / 0.1),
for(0,N,M),
_x is N * 0.1,
Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
write_formatted('%t\n',[Y]),
N = M .
232:デフォルトの名無しさん
10/07/05 05:30:09
>>229
% Prolog
[IF/Prolog]# prolog -c temp.pro >temp.txt
[SWI-Prolog]# pl -s temp.pro >temp.txt
% temp.pro
program :-
'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算'.
'c137_501:f(x)=e^{-x} cos(2πx) その関数を用いて0≦x≦3の間で0.1刻みで計算' :-
M is truncate((3 - 0) / 0.1),
for(0,N,M),
_x is N * 0.1,
Y is exp(1) ^ (-1 * _x) * cos(2 * pi * _x),
write_formatted('%t\n',[Y]),
N = M .
233:デフォルトの名無しさん
10/07/05 05:34:16
スレリンク(tech板:504番)
# [1]授業単元:プログラミング演習
# [2]問題文;離散探索木(26進)と外部ハッシュ法の比較(探索関数)
# キー: 文字列
# 使用ファイル: wordE100KR.dat
# 上記ファイルを読み込み、通常の配列に格納する。
# この配列から要素を読み込み、分離連鎖法および離散探索木(26進)を生成する。
# 格納された要素と同一の要素集合すなわち、配列に格納された用語集合に対して、1万語毎に探索を行い、照合回数、および探索時間を測定する。
# 結果として、照合回数について20個のデータ(2×10)、同様に探索時間について20
個のデータ(2×10)が得られる。
# これらのデータをExcelに格納し、表、グラフを作成し、分析せよ。
234:デフォルトの名無しさん
10/07/05 06:00:39
>>232
% Prolog "-g program " が必要だった。
[SWI-Prolog]# pl -s temp.pro -g program >temp
235:デフォルトの名無しさん
10/07/05 12:42:13
スレリンク(tech板:506番)
# [1] 授業単元: C言語プログラミング
# [2] 問題文メモリや実行時間の許容範囲内の、最大完全数、最大友愛数、および最大婚約数を算出プログラムを作成
#
236:デフォルトの名無しさん
10/07/05 12:46:03
スレリンク(tech板:233番)
# 【 課題 】部分一致文字列の探索関数の比較(配列‐二分探索とTrie(26進))
# 作成関数: 追加、探索
# キー: 文字列
# 使用ファイル: wordE100KR.dat
# ・二分探索法を改良し、前方一致(例: info?)を実現する関数を作成する。
# ・多分探索木の巡回関数に基づき、部分木出力関数をTrie(26進)に適用し、前方一致(例: info?)を実現する関数(部分木巡回‐出力関数)を作成する。
# ・特定の部分文字集合(100)に対し、比較(照合)回数、および出力時間を測定し、これらの結果を、表、グラフに表し、分析する。
# 【 形態 】1. Javaアプリケーション(main()で開始)
# 【 GUI 】4. 制限なし
# 【 期限 】7月12日
# 【 Ver 】1.6.0_15
# 【 補足 】参照ファイルはアップしてあります。
237:デフォルトの名無しさん
10/07/05 15:08:39
>>233
% Prolog (その一)
分離連鎖法による文字列の検索(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
_ハッシュ値 is truncate(Y) mod 26,
分離連鎖(_ハッシュ値,L),
append(_,[[_文字列|_付加情報]|_],L).
分離連鎖法による文字列の追加(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
_ハッシュ値 is truncate(Y) mod 26,
retract(分離連鎖(_ハッシュ値,L)),
asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).
分離連鎖(0,[]). 分離連鎖(1,[]). 分離連鎖(2,[]).
分離連鎖(3,[]). 分離連鎖(4,[]). 分離連鎖(5,[]).
分離連鎖(6,[]). 分離連鎖(7,[]). 分離連鎖(8,[]).
分離連鎖(9,[]). 分離連鎖(10,[]). 分離連鎖(11,[]).
分離連鎖(12,[]). 分離連鎖(13,[]). 分離連鎖(14,[]).
分離連鎖(15,[]). 分離連鎖(16,[]). 分離連鎖(17,[]).
分離連鎖(18,[]). 分離連鎖(19,[]). 分離連鎖(20,[]).
分離連鎖(21,[]). 分離連鎖(22,[]). 分離連鎖(23,[]).
238:デフォルトの名無しさん
10/07/05 15:24:59
>>233
% Prolog 最後一行が千切れてしまった。
分離連鎖(24,[]). 分離連鎖(25.[]).
239:デフォルトの名無しさん
10/07/05 15:39:40
>>233
% Prolog
分離連鎖の初期化(_ハッシュ表の長さ) :-
abolish(分離連鎖/2),
abolish(ハッシュ表の長さ/1),
assertz(ハッシュ表の長さ(_ハッシュ表の長さ)),
M is _ハッシュ表の長さ - 1,
for(0,N,M),
assertz(分離連鎖(N,[])),
N = M,!.
分離連鎖法による文字列の検索(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
ハッシュ表の長さ(_ハッシュ表の長さ),
_ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
分離連鎖(_ハッシュ値,L),
append(_,[[_文字列|_付加情報]|_],L).
分離連鎖法による文字列の追加(_文字列,_付加情報) :-
atom_codes(_文字列,Codes),
加算(Codes,Y),
ハッシュ表の長さ(_ハッシュ表の長さ),
_ハッシュ値 is truncate(Y) mod _ハッシュ表の長さ,
retract(分離連鎖(_ハッシュ値,L)),
asserta(分離連鎖(_ハッシュ値,[[_文字列|_付加情報]|L])).
240:デフォルトの名無しさん
10/07/05 17:27:48
>>229
使用言語:J
load 'plot'
f=:monad def '(^ -y) * cos 2p1 * y'
smoutput '10.5'(8!:2)(,.f)"0 range 0 3 0.1
exit ''
上のコードをコンソール版で実行すれば、標準出力に下のようなデータが出力される。
(8!:2)のformatは、マイナス符号を変換してくれるようだ。
0.00000 1.00000
0.10000 0.73203
0.20000 0.25300
0.30000 -0.22893
0.40000 -0.54230
:
2.90000 0.04451
3.00000 0.04979
J言語のグラフ機能をつかう場合は
load 'plot'
plot (range 0 3 0.1) ; '(^ -y) * cos 2p1 * y'
241:デフォルトの名無しさん
10/07/05 18:18:25
スレリンク(tech板:241番)
# 【 課題 】1.B木を実現するプログラムを作成しなさい。ただし、プログラムの
最初で各節点が持つ最大の子の数(m)を入力して、プログラムを開始する。
242:デフォルトの名無しさん
10/07/05 21:09:35
スレリンク(tech板:519番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク): 四則演算と平方根を求める事が出来る電卓プログラムを作成せよ.
#
243:デフォルトの名無しさん
10/07/06 04:13:13
スレリンク(tech板:523番)
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# URLリンク(ime.nu)
#
# 問題1
# 下に示すように,非負の整数値を読み込んで,その数を逆順に表示するプログラムを作成せ
# よ.なお,負の値を読み込んだ場合は,再入力を促すメッセージを表示すること.
#
#
# 非負の整数を入力してください: 1963
# 1963 を逆から読むと3691 です.
#
244:デフォルトの名無しさん
10/07/06 04:14:05
スレリンク(tech板:523番)
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# URLリンク(ime.nu)
#
# 問題2
# 下に示すように,非負の整数を次々と読み込んでいき,各値の二乗値の和を表示するプログ
# ラムを作成せよ.なお,整数の読み込みは,負の整数を読み込んだ段階で終了するものとし,
# その数の二乗値の和は加算しないものとする.
#
# 整数を入力してください
# 整数1 : 3
# 整数2 : 5
# 整数3 : -1
# 二乗値の合計は34 です.
#
245:デフォルトの名無しさん
10/07/06 04:15:18
スレリンク(tech板:523番)
# [1] 授業単元: Visual Studio 入門
# [2] 問題文 3問ほどあるのでリンクを
# URLリンク(ime.nu)
#
# 問題3
# 下に示すように,行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行
# 目には2345678901…を列数の個数だけ,…と表示するプログラムを作成せよ.
#
# 何行ですか: 7
# 何列ですか: 12
# 123456789012
# 234567890123
# 345678901234
# 456789012345
# 567890123456
# 678901234567
# 789012345678
246:デフォルトの名無しさん
10/07/06 04:17:51
スレリンク(tech板:534番)
# [1] 授業単元: Visual Studio 入門
# [2] 問題 半乱順列の関数作成
247:デフォルトの名無しさん
10/07/06 04:19:01
スレリンク(tech板:535番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納せよ。
#
248:デフォルトの名無しさん
10/07/06 04:29:25
スレリンク(db板:248番)
# TABLE test
# id | data
# ---+------
# 100 | AAA
#
# TABLE hoge
# id | value
# ---+------
# 100 | 10
# 100 | 20
#
# TABLE 100
# id |val1| val2
# ---+---+----
# 100 | 20 | 40
#
# SELECT a.id, test.data, a.cnt + b.cnt + c.cnt
# FROM
# (SELECT id, SUM( aa.val1 ) cnt FROM (SELECT id, val1 FROM `100`)aa)a,
# (SELECT id, SUM( bb.val2 ) cnt FROM (SELECT id, val2 FROM `100`)bb)b,
# (SELECT id, SUM( value ) cnt FROM hoge WHERE id = 100)c,test
# WHERE a.id = c.id AND test.id = 100
#
# 欲しい結果
# id data a.cnt + b.cnt + c.cnt
# ----------------------------
# 100 AAA 180
#
249:デフォルトの名無しさん
10/07/06 05:01:23
スレリンク(tech板:713番)
# 宿題片づけスレで省られたのでお願いします。
# C言語初級者、画像処理初心者です。
#
# [1] 授業単元:画像処理
# [2] 問題文(含コード&リンク):16×16サイズの白黒ビットマップ画像を読み込んで、
# 上下反転させた画像をビットマップで保存するプログラムを作成。
#
250:デフォルトの名無しさん
10/07/06 06:51:56
>>243
% Prolog
'非負の整数値を読み込んで,その数を逆順に表示する' :-
催促付き整数入力('非負の整数を入力してください: ',N),
number_chars(N,L1),
reverse(L1,L2),
number_chars(L2,N2),
write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'非負の整数値を読み込んで,その数を逆順に表示する' :-
催促付き整数入力('非負の整数を入力してください: ',N),
非負の整数値から逆順整数を得る(N,0,N2),
write_formatted(' %t を逆から読むと%t です.\n',[N,N2]).
非負の整数値から逆順整数を得る(0,X,X).
非負の整数値から逆順整数を得る(N,Y1,X) :-
Y2 is Y1 * 10 + (N mod 10),
N1 is N // 10,
非負の整数値から逆順整数を得る(N1,Y2,X).
251:デフォルトの名無しさん
10/07/06 07:08:51
>>244
% Prolog
'非負の整数を次々と読み込んでいき,各値の二乗値の和を表示する' :-
write('整数を入力してください\n'),
findsum(S,(非負の整数を次々と読み込んでいき(1,X),(X < 0,!,fail;S is X *X)),_二乗和),
write_formatted('二乗値の合計は%t です.\n',[_二乗和]).
非負の整数を次々と読み込んでいき(N,X) :-
write_formatted('整数%t : ',[N]),get_integer(X).
非負の整数を次々と読み込んでいき(N,X) :-
N2 is N + 1,
非負の整数を次々と読み込んでいき(N2,X).
252:デフォルトの名無しさん
10/07/06 07:59:21
>>245
% Prolog
'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
'行数と列数を読み込み(_行数,_列数),
'1から始める数字循環を生成'(_行数,_列数,L),
length(L1,_列数),
append(L0,L2,L),
行数分表示する(L0,L1,L2).
行数と列数を読み込み(_行数,_列数) :-
write('行数を入力してください : '),get_integer(_行数),
write('列数を入力してください : '),get_integer(_列数).
'1から始める数字循環を生成'(_行数,_列数,L) :-
M is _行数 + _列数,
'数字循環を生成'(1,M,L).
'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).
行数分表示する(L0,L0,L2) :- !.
行数分表示する(L0,L1,L2) :-
append(L1,_,L2),
concat_atom(L1,S),
write_formatted('%t\n',[S]),
fail.
253:デフォルトの名無しさん
10/07/06 08:04:52
>>252 (>>245)
% Prolog 行数分表示する/3に誤りがあった。
'行数と列数を読み込み,1 行目には1234567890…を列数の個数だけ,2 行目には2345678901…を列数の個数だけ,…と表示する' :-
'行数と列数を読み込み(_行数,_列数),
'1から始める数字循環を生成'(_行数,_列数,L),
length(L1,_列数),
append(L0,L2,L),
行数分表示をする(_行数,L0,L1,L2).
行数と列数を読み込み(_行数,_列数) :-
write('行数を入力してください : '),get_integer(_行数),
write('列数を入力してください : '),get_integer(_列数).
'1から始める数字循環を生成'(_行数,_列数,L) :-
M is _行数 + _列数,
'数字循環を生成'(1,M,L).
'数字循環を生成'(N,M,[]) :- N > M,!.
'数字循環を生成'(N,M,[X|R]) :- X is N mod 10,N2 is N + 1,'数字循環を生成'(N2,M,R).
行数分表示する(_行数,L0,_,_) :- length(L0,_行数),!.
行数分表示する(_,L0,L1,L2) :-
append(L1,_,L2),
concat_atom(L1,S),
write_formatted('%t\n',[S]),
fail.
254:デフォルトの名無しさん
10/07/06 08:28:59
>>248
% Prolog
'欲しい結果 id data a.cnt + b.cnt + c.cnt' :-
test(_id,_data),
findsum(U,(findsum(_value,hoge(_id,_value),U1),findsum(_val3,('100'(_id,_val1,_val2),_val3 is _val1 + _val2),U2),U is U1 + U2),S).
write('id data a.cnt + b.cnt + c.cnt\n'),
write_formatted('%t %t %t\n',[_id,_data,S]),!.
255:デフォルトの名無しさん
10/07/06 10:45:25
>>247
% Prolog 例によって、配列をリストに変更して解釈。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび
),
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
256:デフォルトの名無しさん
10/07/06 10:54:55
>>255 (>>247)
% Prolog 表示方法をちょっと工夫してみる。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび,
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
257:デフォルトの名無しさん
10/07/06 10:59:41
>>256 (>>247)
% Prolog 失敗。やり直し。やはり、うまくいかない。
'data.txtに書かれている氏名と成績を読み込み、氏名を2次元配列、成績を1次元配列に格納する' :-
get_split_lines('data.txt',[' '],LL),
'氏名を2次元配列、成績を1次元配列に格納する'(LL,_氏名ならび,_成績ならび,
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび).
'氏名を2次元配列、成績を1次元配列に格納する'([],[],[]).
'氏名を2次元配列、成績を1次元配列に格納する'([[_氏名,_成績]|R1],[_氏名文字ならび|R2],[_成績|R3]) :-
atom_chars(_氏名,_氏名文字ならび),
'氏名を2次元配列、成績を1次元配列に格納する'(R1,R2,R3).
氏名ならび・成績ならびを格納する(_氏名ならび,_成績ならび) :-
assertz(氏名ならび(_氏名ならび)),
assertz(成績ならび(_成績ならび)).
258:デフォルトの名無しさん
10/07/06 11:04:03
>>257
Prologのプログラムを読む場合の注意は、引数の中にある論理変数の変化に集中するから、
そこの部分の桁位置を揃えるようにしてみたい。>>256->>257は失敗。
259:デフォルトの名無しさん
10/07/06 12:07:16
>>258
% Prolog 全体として書の雰囲気を持つ算譜にしたい。
URLリンク(nojiriko.asia)
260:デフォルトの名無しさん
10/07/06 16:46:08
スレリンク(db板:255番)
# 同一テーブルで、自分自身を除く前回の履歴を結合したいです
# SQLServer2005
#
# 設備
# X
#
# 生産履歴
# 履歴ID 設備 製造ロット ロット枝番 状態
# 10 X 002 2 生産中
# 09 X 002 1 完了
# 08 X 001 1 完了
#
# 設備と生産履歴から設備稼働状況を表示
# SELECT * FROM 設備
# LEFT OUTER JOIN 生産履歴
# ON 設備.設備=生産履歴.設備
# AND 生産履歴.状態='生産中'
#
# 設備稼働状況 ※これに前回ロットを表示したい。
# 設備 製造ロット ロット枝番 前回ロット
# X NULL NULL 002
# となる。
#
261:デフォルトの名無しさん
10/07/06 16:47:50
>>260 つづき
#
# LEFT OUTER JOIN
# SELECT MAX(製造ロット) AS MAX製造ロット
# FROM 生産履歴 生産履歴前回
# WHERE 製造ロット<>生産履歴.製造ロット※2
# GROUP BY 設備
#
# ※2で引っかかる。
# どなたか回答よろしくお願いします。
262:デフォルトの名無しさん
10/07/06 17:24:08
スレリンク(unix板:83番)
# 1
# 12
# 123
# 1234
# 12345
# このプログラミング作成したい。
263:デフォルトの名無しさん
10/07/06 17:33:45
>>262
% Prolog
'1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('1').
文字連鎖によって文字列を成長させながら表示する(_文字列) :- write_formatted('%t\n',_文字列]).
文字連鎖によって文字列を成長させながら表示する(_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
264:デフォルトの名無しさん
10/07/06 17:41:48
>>263 (>>262)
% Prolog 一ヶ所、間違い。"["が抜けた。
'1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('1').
文字連鎖によって文字列を成長させながら表示する(_文字列) :- write_formatted('%t\n',[_文字列]).
文字連鎖によって文字列を成長させながら表示する(_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
265:デフォルトの名無しさん
10/07/06 18:08:31
>>264 (>>262)
% Prolog 終了指定を忘れてたw
:- op(600,xfx,が). :- op(700,xf,回現れるまで).
'ある文字がN回現れるまで1からの文字連鎖によって文字列を成長させながら表示する' :-
文字連鎖によって文字列を成長させながら表示する('5' が 1 回現れるまで,'1').
文字連鎖によって文字列を成長させながら表示する(_ が 0 回現れるまで,_) :- !.
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
write_formatted('%t\n',_文字列]).
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
sub_atom(_文字列,_,1,1,A),
文字連鎖(A,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
N1 is N - 1,
文字連鎖によって文字列を成長させながら表示する(A が N1 回現れるまで,_付加された文字列).
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_文字列) :-
sub_atom(_文字列,_,1,1,_最後の文字),
文字連鎖(_最後の文字,_次の文字),
atom_concat(_文字列,_次の文字,_付加された文字列),
文字連鎖によって文字列を成長させながら表示する(A が N 回現れるまで,_付加された文字列).
文字連鎖('1','2'). 文字連鎖('2','3'). 文字連鎖('3','4'). 文字連鎖('4','5'). 文字連鎖('5','6').
文字連鎖('6','7'). 文字連鎖('7','8'). 文字連鎖('8','9'). 文字連鎖('9','0'). 文字連鎖('0','1').
266:デフォルトの名無しさん
10/07/06 19:32:02
>>265 (>>262)
% Prolog さらに誤りがあったのでこの修正版は
URLリンク(nojiriko.asia) を参照してください。
% 12345 を数値と解釈するならば、
:- op(600,xfx,が).
:- op(700,xf,回現れるまで).
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(_ が 0 回現れるまで,_) :- !.
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M) :-
A is (M + 1) mod 10,
M10 is M * 10,
M2 is M10 + M1,
write_formatted('%t',[M2]),
N1 is N - 1,
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N1 回現れるまで,M2).
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M) :-
M1 is (M + 1) mod 10,
M10 is M * 10,
M2 is M10 + M1,
write_formatted('%t',[M2]),
N1 is N - 1,
'ある数値がN回現れるまで1からの数値連鎖によって数値列を成長させながら表示する'(A が N 回現れるまで,M2).
267:デフォルトの名無しさん
10/07/06 20:10:02
>>246
% Prolog
:- op(300,xf,回).
:- op(700,xf,切る).
半乱順列の作成(_置換指定,_対象ならび,_半乱順列ならび) :-
整列(_対象ならび,_整列したならび),
整列したならび乱す(_置換指定,_整列したならび,_半乱順列ならび).
整列したならび乱す(最初と最後の要素を入れ替える,L1,L2) :-
[A|R]=L3,
append(L4,[B],R),
append([B|L4],[A],L2),!.
整列したならびを乱す(0 回 切る,L,L) :- !.
整列したならびを乱す(N 回 切る,L1,L2) :-
length(L1,Len),
N1 is random mod Len,
N2 is random mod Len,
ならびの交換(N1,N2,L1,L3),
N1 is N - 1,
整列したならびを乱す(N1 回 切る,L1,L2).
整列したならびを乱す([],L,L) :- !.
整列したならびを乱す([[N1,N2]|R],L1,L2) :-
ならびの交換(N1,N2,L1,L3),
整列したならびを乱す(R,L3,L2).
268:デフォルトの名無しさん
10/07/06 22:29:47
スレリンク(tech板:569番)
# コインの種類(例えば、1円、5円、8円、10円、15円)に対して、金額を入力すると
# その金額を払うのに最も枚数が少なくて済むコインの出し方を出力してくれる
# プログラム。
# 例えば、23円と入力すると、「10円1枚・8円1枚・5円1枚の計3枚」と出力できるプログラムです。
# ただし、「10円2枚・1円3枚の計5枚」は「最小」ではないため、上の出力を優先します。
# 入力された金額が負の場合は、「Error」を出力するようにします。
# そこで、下のようなプログラムを書いたのですが、うまく起動しません。
# このプログラムを、上の出力例のように出力してくれるように書きなおしてくれませんか??
# 下のプログラムでは合計枚数を出力する部分しか書いてません。
# ちなみに、再帰を使ってプログラミングお願いします。
269:デフォルトの名無しさん
10/07/07 05:08:38
スレリンク(tech板:595番)
# [1] 授業単元:プログラミング演習
# Q1. 問題文:4つの整数を入力し、それらを要素とする行列を求め、その値を以下のような
# 形式で表示するプログラムを作成せよ。
#
# 例 100 20 30 40と入力すれば
# | 100 20 | =3400
# | 30 40 | と表示される
#
# Q.2ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で
# 4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算するプログラミングを
# 作成せよ。
#
270:デフォルトの名無しさん
10/07/07 07:32:53
>>269
% Prolog Q1
'4つの整数を入力し、それらを要素とする行列を求め、行列とその値を表示する' :-
get_split_line([' ',','],[A,B,C,D]),
正方行列の行列式の値([[A,B],[C,D]],_行列式の値),
write_formatted(' |%3d %3d| = %t\n',[A,B,_行列式の値]),
write_formatted(' |%3d %3d|\n',[C,D]).
正方行列の行列式の値(_正方行列,_行列式の値) :-
ガウス行列に変形(_正方行列,X,Y),
'行列式|C|の値'(X,Z1),
ならびの積(Y,Z2),
_行列式の値 is Z1 // Z2.
ならびの積([A],A) :- !.
ならびの積([A|R],X) :-
ならびの積(R,Y),
X is A * Y.
'行列式|C|の値'(_行列,_値) :-
length(_行列,Len),
findall(U,(for(1,N,Len),list_nth(N,_行列,_行),list_nth(N,_行,U)),L),
ならびの積(L,_値).
271:デフォルトの名無しさん
10/07/07 07:52:13
>>269
% Prolog Q2
:- op(700,xfx,は).
'ディスカウントストアでどの商品でも5個以上買えば1割引、10個以上で2割引、20個以上で4割引となっていた。キーボードから買う商品の単価と個数を入力し、合計金額を計算する' :-
write('商品単価と個数を入力してください : '),
get_split_line([' ',','],[_単価,_個数]),
合計金額を計算する(_単価,_個数,_合計金額).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) < 5,
_合計金額 は 四捨五入(_単価 * _個数).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 5,abs(_個数) < 10,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.1)).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 10,abs(_個数) < 20,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.2)).
合計金額を計算する(_単価,_個数,_合計金額) :-
abs(_個数) >= 20,
_合計金額 は 四捨五入(_単価 * _個数 * (1 - 0.4)).
_値 は 四捨五入(_式) :- _値_1 は _式,_値 is truncate(floor(_値_1 + 0.5)),!.
_値 は _式 :- _値 is _式.
272:デフォルトの名無しさん
10/07/07 08:33:41
>>271 (>>269)
% Prolog 訂正。
:- op(700,xfx,は).
_値 は 四捨五入(_式) :-
_値_1 は _式,
_値_1 >= 0.0,
_値 is truncate(floor(_値_1 + 0.5)),!.
_値 は 四捨五入(_式) :-
_値_1 は _式,
_値_1 < 0.0,
_値 is truncate(ceiling(_値_1 - 0.5)),!.
_値 は _式 :-
_値 is _式.
273:デフォルトの名無しさん
10/07/07 14:05:52
スレリンク(tech板:602番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):URLリンク(ime.nu)
# 問題文
#
# 0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。
# この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。
# このような組合せを列挙し、何通りあるかを、C言語のプログラムで求める。何通りあるかは、数学的に解いて確認せよ。
# 例題プログラムEnumFull.c を修正する。
#
# 部分問題への分解 0が現れる枚数で場合分けして、それぞれの個数を集計
# 弱化問題への緩和 0および6と7に関する条件を無視して、とりあえず全てを列挙し、題意に合わないものを排除
# 等価問題への還元 2枚の0を、0と8に読み換え、8は単独で選ばないという条件に置換
# 7は外して列挙し、6が現れる場合に、7に読み換えたものも追加
274:デフォルトの名無しさん
10/07/07 15:04:06
>>273
% Prolog
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。こ
の中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくても
よい)。このような組合せを列挙する'(U) :-
findall(L,(
組み合わせ([0,0,1,2,3,4,5,6,7],4,L),
許される組み合わせ(L)),
X),
sort(X,Y),
append(_[U|R],Y).
許される組み合わせ(A) :- append(_[6|_],A),append(_,[7|_],A),!,fail.
許される組み合わせ(A) :- append(B,[0|C],A),append(D,[0|E],C),!,fail.
許される組み合わせ(A).
275:デフォルトの名無しさん
10/07/07 15:11:45
>>274 (>>273)
% Prolog 述語名の途中で改行してしまった。書き直し。
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せを列挙する'(U) :-
findall(L,(
組み合わせ([0,0,1,2,3,4,5,6,7],4,L),
許される組み合わせ(L)),
X),
sort(X,Y),
append(_[U|R],Y).
許される組み合わせ(A) :- append(_[6|_],A),append(_,[7|_],A),!,fail.
許される組み合わせ(A) :- append(B,[0|C],A),append(D,[0|E],C),!,fail.
許される組み合わせ(A).
276:デフォルトの名無しさん
10/07/07 16:06:52
>>273
% Prolog
'0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せは何通りあるか'(_何通り) :-
count(('0から7までの数字が描かれたカードがある。ただし、0だけ2枚で、合計9枚とする。この中から4枚を選ぶ組合せを考える。ただし、6と7は同時に選ばない(両方選ばなくてもよい)。このような組合せを列挙する'(U)),_何通り).
277:デフォルトの名無しさん
10/07/07 16:09:47
スレリンク(tech板:603番)
# [1] 授業単元: プログラミング演習
# [2] 問題文(含コード&リンク):
# 10人の成績を入力し、その順位を成績と共に表示したい。以下の考えに基づいたプログラムを作成せよ。
#
# 1. 2次元配列s[10][2]を用意する。
# 2. i=0~9のfor文を用いて、s[i][0]に成績入力する。
# 3. s[0][0]とs[j][0], j=0~9を比較し、s[0][0]より大きい数値の個数nを考える。
# その個数+1が成績順位になるので、s[0][1]にn+1を代入する。
# 4. 同様の操作をs[i][0]にi=0~9に対して行えば、その成績順位がs[i][1]として求められるので、
# あとは成績と共に表示すればいい。
278:デフォルトの名無しさん
10/07/07 22:33:59
>277
% Prolog これは既出。
URLリンク(nojiriko.asia)
279:デフォルトの名無しさん
10/07/08 00:52:11
>>243
使用言語:J
load 'misc'
f=:monad define
a=.prompt '非負の整数を入力してください: '
smoutput a,' を逆から読むと ',(|.a),' です.'
)
f ''
非負の整数を入力してください: 1234
1234 を逆から読むと 4321 です.
280:デフォルトの名無しさん
10/07/08 01:22:17
>>244
使用言語:J
load 'misc'
f=:monad define
s=.0
n=.1
smoutput '整数を入力してください'
while. 0<a=.".prompt '整数',(":n),' : ' do.
n=.n+1
s=.s+ *:a
end.
smoutput '二乗値の合計は ',(":s),' です.'
)
f ''
整数を入力してください
整数1 : 3
整数2 : 5
整数3 : -1
二乗値の合計は 34 です.
281:デフォルトの名無しさん
10/07/08 01:32:42
>>245
使用言語:J
load 'misc'
f=:monad define
m=.".prompt '何行ですか: '
n=.".prompt '何列ですか: '
smoutput (8!:2)10|(i.m)+/>:i.n
)
f ''
何行ですか: 7
何列ですか: 12
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
282:デフォルトの名無しさん
10/07/08 01:40:50
>>262
使用言語:J
smoutput@(8!:2)\>:i.5
1
12
123
1234
12345
283:デフォルトの名無しさん
10/07/08 05:05:31
スレリンク(tech板:618番)
# 【質問テンプレ】
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# 円形テンプレートマッチングのプログラムを作成せよ。
#
# 白い楕円が複数書いてあるBMP画像を読み込み(適当にペイントで作成)画像左下からラスタ走査し、円形テンプレートマッチングをするプログラムを作成せよ。
# 円形テンプレートはサイズA~Bまで変化させ、一致率(円形テンプレートの円周上に一致する白画素と一致している数/円形テンプレート円周のプロット数、円形テンプレート内の黒画素に一致している黒画素数/円形テンプレート内の黒画素数)
# 上位5つを色を変えて描画せよ。
#
# また、一致率上位5つの半径、一致率、座標(画像の左下をx=0、y=0とする)をdos窓上に標示せよ。
#
284:デフォルトの名無しさん
10/07/08 05:08:09
スレリンク(tech板:619番)
# [1] 授業単元:Cプログラミング演習
# [2] 問題文(含コード&リンク):
# 問題1. 10進数1234を2進数で表示するプログラムを作成せよ。
# 問題2. 変数の下位16ビット中の1のビット数を数える関数 int bit_count(int x) を作成せよ
#
285:デフォルトの名無しさん
10/07/08 05:11:58
スレリンク(tech板:630番)
# [1] 授業単元:Cプログラミング
# [2] 問題文(含コード&リンク):
#
# 概要:数値を1つ(2~9の数字)入力し、その個数分の"*"を1辺とする
# 完成図(*=★、空白=☆):
#
# 3を入力した場合
# ★★★
# ☆☆★
# ★★★
#
# 9を入力した場合
# ★★★★★★★★★
# ☆☆☆☆☆☆☆☆★
# ★★★★★★★☆★
# ★☆☆☆☆☆★☆★
# ★☆★★★☆★☆★
# ★☆★☆☆☆★☆★
# ★☆★★★★★☆★
# ★☆☆☆☆☆☆☆★
# ★★★★★★★★★
286:デフォルトの名無しさん
10/07/08 07:12:02
>>284
% Prolog
URLリンク(nojiriko.asia)
287:デフォルトの名無しさん
10/07/08 07:31:47
>>284
使用言語:J
NB. p1
(8!:2)#:1234
10011010010
NB. p2
bit_count=:monad def '+/(16#2)#:y'
a=:1234
bit_count a
5
288:デフォルトの名無しさん
10/07/08 10:35:47
>>285
% Prolog
URLリンク(nojiriko.asia)
289:デフォルトの名無しさん
10/07/08 12:45:49
>>269
使用言語:J
NB. Q1
f=:monad def '-/ .* 2 2 $ y'
f 100 20 30 40
3400
NB. Q2
f=:dyad define
s=.x*y
r=.0
if. (5<:y) *. (y<10) do. r=.0.1
elseif. (10<:y) *. (y<20) do. r=.0.2
elseif. 20<:y do. r=.0.4
end.
s=.s-<.s*r
)
100 f 2
200
100 f 5
450
100 f 10
800
100 f 20
1200
290:デフォルトの名無しさん
10/07/08 13:49:38
スレリンク(tech板:632番)
# [1] 授業単元:C・プログラミング
# [2] 問題文(含コード&リンク):
# 下記のGPA計算のプログラムを読み込んだ数値を入れる配列を指すポインタを用いて書き換えよ.ただし,配列は1次元配列を用い,また関数を使う必要はない.
# URLリンク(ime.nu)
#
291:デフォルトの名無しさん
10/07/08 23:27:41
>>285
使用言語:J
f=:monad define
if. 0=2|y do.
b=.(,|.)i.-:y
else.
b=.(}:,|.)i.-:>:y
end.
c=.0=2|<./~b
d=.y{0 0 1 1 1 2 3 3 3 4
((d$0 1)(;/&.><"1(,.~>:)i.d)}c){ucp'☆★'
)
f 2
★★
☆★
f 4
★★★★
☆☆☆★
★☆☆★
★★★★
f 5
★★★★★
☆☆☆☆★
★★★☆★
★☆☆☆★
★★★★★
292:デフォルトの名無しさん
10/07/09 19:19:10
>>273
使用言語:J
comb=:dyad define
k=. i.>:d=.y-x
z=. (d$<i.0 0),<i.1 0
for. i.x do. z=. k ,.&.> ,&.>/\. >:&.> z end.
; z
)
f=:dyad define
a=. x comb y
(2 ~: +/ |: +/ 6 7 =/ a) # a
)
# 4 f 9
105
293:デフォルトの名無しさん
10/07/10 02:25:47
使用言語:pascal
以下の条件(仕様)を満たすプログラムを作成し, そのプログラム(Pascalプログラムソースファイル)とともに その解説書を提出すること.
逆ポーランド記法で入力された論理式の充足可能性を判定し, その式の値をtrueにする変数値を,通常の表記とともに出力すること.
可能な演算は論理積(and), 論理和(or), 否定(not), の3種類として, それぞれ 'a','o','n' で表現すること.
使用可能な論理変数は x0, x1, ..., x9 の10種類とし, それぞれ '0','1',...,'9' で表現すること.
例) (x1∧x2)∨(¬x1∧x3) ⇒ 12a1n3ao
使用できない文字が含まれる入力に対してエラーの旨を出力すること.
入力された論理式の充足可能性を判定, 式の値を true にする変数値を出力した後, 再度入力待ち状態になり, 空の文字列を入力するとプログラムが終了すること.
padcalの宿題スレで返答がないのでこちらに書かせていただきました。
解説も出来たらお願いします。
294:デフォルトの名無しさん
10/07/12 18:55:29
>>245
使用言語:maxima
f(m, n) :=
for i thru m do (
for j thru n do printf(true, "~d", mod(i + j - 1, 10)),
newline()
);
(%i63) f(7,12);
123456789012
234567890123
345678901234
456789012345
567890123456
678901234567
789012345678
295:デフォルトの名無しさん
10/07/16 01:38:24
# 問題文(含コード&リンク):URLリンク(kansai2channeler.hp.infoseek.co.jp)
コピーさせていただきました
ホームページ上からデータを追加、検索したりする問題です。
# OS:Linux
296:デフォルトの名無しさん
10/07/18 10:04:24
スレリンク(tech板:42番) # 1] 授業単元:く興味本位での自習 # [2] 問題文 # (繰り返し文を用いて) # 1~10までの偶数を出力 # # 2 # 4 # 6 # 8 # 10 #
297:デフォルトの名無しさん
10/07/18 12:52:47
>>296
使用言語:Scilab
-->2:2:10
ans =
2. 4. 6. 8. 10.
298:デフォルトの名無しさん
10/07/18 12:58:29
>>296
使用言語:J
>:i.10
1 2 3 4 5 6 7 8 9 10
_2,\>:i.10
1 2
3 4
5 6
7 8
9 10
|:_2,\>:i.10
1 3 5 7 9
2 4 6 8 10
}.|:_2,\>:i.10
2 4 6 8 10
299:デフォルトの名無しさん
10/07/18 19:05:48
prologの問題で5本ハノイの塔を考えているのですが、効率のいいアルゴリズムがわかりません。
協力お願いします。
#使用言語:prolog
#単元:演習問題
#a;b;c;d;eという5 本の棒があり、棒aに円盤1からnまでが存在している。
#棒aの1からnまでの円盤を棒eに移す。
#3本の時の例
move(N,A,B) :- display(N), display(' from '),
display(A), display(' to '),
display(B), nl.
hanoi(1,A,B,C) :- move(1,A,C).
hanoi(N,A,B,C) :- M is N-1, hanoi(M,A,C,B),
move(N,A,C),
hanoi(M,B,A,C).
こんな感じでやりました。(見にくくてすみません)
300:デフォルトの名無しさん
10/07/18 19:26:52
↑の続きですが、試行回数を3本の時以下にする問題です。
301:デフォルトの名無しさん
10/07/19 21:28:51
落雷による停電で不通になっていたPrologアーカイブ URLリンク(nojirio.asia) 復旧しました。
302:デフォルトの名無しさん
10/07/19 21:30:29
>>301 間違えました。 URLリンク(nojiriko.asia) ですね。
303:デフォルトの名無しさん
10/07/20 06:28:12
書き込み規制中に100題以上進んでしまいました。順にアップしていくつもりですが、追いつかないかもしれない。C/C++の課題は上のアーカイブにc13[7-8]_*.htmlのファイル名でコピーしてあります。中には解答を含んでいるものもありますが、四分の一くらいかな。
304:デフォルトの名無しさん
10/07/20 06:36:38
Javaの宿題からの出題分は j69_*.html ですね。たとえば、URLリンク(nojiriko.asia) でindexに未登録のものでも参照できます。
305:デフォルトの名無しさん
10/07/23 04:12:54
スレリンク(tech板:648番)
# [1] 授業単元:
# [2] 問題文(含コード&リンク):
# 2~9の数字を入力その数字に応じて図形を表示させる関数を作る
# 正方形 三角形 六角形 菱形 星 渦巻き
# 星と渦巻き以外できたからこの2つについて知りたい
# 例 7を入力したとき 左:渦 右:星
#
# ******* * * *
# * * * *
# ***** * ***
# * * * *******
# * *** * ***
# * * * * *
# ******* * * *
#
306:デフォルトの名無しさん
10/07/23 04:19:04
スレリンク(tech板:655番)
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
#
# 以下の仕様に従って,分数の四則演算を行うプログラムを作成せよ。
# [仕様1] 以下のような構造体を定義し,分数のデータ構造に利用すること。
# struct fraction{
# int parent; /* 分母(denominator) */
# int child; /* 分子(numerator) */
# };
# [仕様2] 以下の実行結果となるようなプログラムを作成せよ。
# プログラムの実行結果↓
# 1つ目の分数を入力して下さい。
# 3/4 ←キーボードより入力
# 2つ目の分数を入力して下さい。
# 1/4 ←キーボードより入力
# 演算方法(1.加算,2.減算,3.乗算,4.除算)を入力して下さい。
# 2 ←キーボードより入力
# 3/4 - 1/4 = 1/2
# 計算結果は約分をして表示
#
307:デフォルトの名無しさん
10/07/23 04:22:05
スレリンク(db板:276番)
# 以下のようなテーブルがあります。
#
# itemテーブル
# item_id name color
# 1 商品1 3
# 2 商品2 12
# 3 商品3 7
#
# colorテーブル
# color_id name
# 1 赤
# 2 青
# 4 緑
# 8 黒
#
# item.colorの部分は、ビット演算の概念を使って
# 3なら赤+青
# 12なら緑+黒
# 7なら赤+青+緑
# の色を持っていることを意味します。
308:デフォルトの名無しさん
10/07/23 04:23:44
>>307 のつづきです。
# これを結合の段階で、以下のように色名を取得することは可能なのでしょうか?
#
# 1 商品1 赤
# 1 商品1 青
# 2 商品2 緑
# 2 商品2 黒
# 3 商品3 赤
# 3 商品3 青
# 3 商品3 緑
#
309:デフォルトの名無しさん
10/07/23 04:33:04
これはまだ7月9日分です。この後140題くらい出題されています。
310:デフォルトの名無しさん
10/07/23 07:03:30
>>307
% Prolog
色名を取得する :-
item(_item_id,_name,_color),
色の割り当て(_color,_色名),
write_formatted('%t %t %t\n',[_item_id,_name,_色名]),
fail.
色名を取得する.
色の割り当て(_色番号,_色名) :-
findall([_color_id,_name],color(_color_id,_name),L),
sort(L,L1),
reverse(L1,L2),
色の割り当て(_色番号,L2,_色名).
色の割り当て(N,_,_) :- N =< 0,!,fail.
色の割り当て(N,[[C,_色名]|R1],_色名) :-
1 is N // C.
色の割り当て(N,[[C,_]|R1],_色名) :-
1 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).
色の割り当て(N,[[C,_]|R1],_色名) :-
0 is N // C,
M is N mod C,
色の割り当て(M,R1,_色名).
311:デフォルトの名無しさん
10/07/23 13:26:16
スレリンク(tech板:260番)
# 【 課題 】今月のカレンダ作成詳細は下に書きます
# 【 形態 】Javaアプリケーション(main()で開始)
# 【 期限 】7月14日日
# 【 Ver 】1.6.0_20
#
# 今月、7月のカレンダーを2次元配列に格納してください。
# 要素数は縦5横7の配列となります。(曜日は格納する必要がありません。)
# 週の先頭が日曜日はじまりで格納してください
# 配列のカレンダーを表示するコードを追加してください。
# 日にちを1つ入力するとその日が何曜日かを表示するコードに修正してください。
# よろしくお願いします
312:デフォルトの名無しさん
10/07/23 13:39:21
>>311
% Prolog
'今月、7月のカレンダーを2次元配列に格納する'(LL) :-
今日の日付と曜日番号(_日,_曜日番号),
カレンダーの構造を作る(_31日定数平坦ならび,_35日平坦ならび,_5週間ならび,
'全体の枠の中で1-31日の位置を確定する'(_日,_曜日番号,L0,_31日定数平坦ならび,L2,_35日平坦ならび),
変数として残った両端部分は空白に(L0,L2),
平坦化の逆変換(_5週間ならび,_35日平坦ならび).
今日の日付と曜日番号(_日,_曜日番号) :-
_時刻 is time,
localtime(_時刻,_年,_月,_日,_曜日番号,_累積日,_時,_分_秒).
カレンダーの構造を作る(_31日定数平坦ならび,_35日平坦ならび,_5週間ならび) :-
findall(N,for(1,N,31),_31日定数平坦ならび),
findall(_,for(1,N,35),_35日平坦ならび),
findall(L,(for(1,_,5),length(L,7)),_5週間ならび).
'全体の枠の中で1-31日の位置を確定する'(_日,_曜日番号,L0,_31日定数平坦ならび,L2,_35日平坦ならび) :-
append(L0,_31日定数平坦ならび,L2,_35日平坦ならび),
append(U,[J|_],_35日平坦ならび),\+(var(J)),J=_日,
length(U,Len),
_曜日番号 is Len mod 7,!.
変数として残った両端部分は空白に(L0,L2) :- all(L0,' '),all(L2,' ').
平坦化の逆変換(L1,L2) :- flat(L1,L2).
313:デフォルトの名無しさん
10/07/23 13:43:32
>>296
% Prolog 解答例その一
'1~10までの偶数を出力' :-
for(1,N,10),
偶数(N),
write_formatted('%t\n',[N]),
fail.
'1~10までの偶数を出力'.
314:デフォルトの名無しさん
10/07/23 13:45:36
>>296
% Prolog その二
'1~10までの偶数を出力' :-
'1~10までの偶数(非決定性)'(1,N),
write_formatted('%t\n',[N]),
fail.
'1~10までの偶数'.
'1~10までの偶数(非決定性)'(N,_) :- N > 10,!,fail.
'1~10までの偶数(非決定性)'(N,N) :- 偶数(N).
'1~10までの偶数(非決定性)'(N1,N) :-
N2 is N1 + 1,
'1~10までの偶数(非決定性)'(N2,N).
315:デフォルトの名無しさん
10/07/23 13:49:38
>>296
% Prolog その三
'1~10までの偶数を出力' :-
'1~10までの偶数を出力'(1).
'1~10までの偶数を出力'(N) :- N > 10,!.
'1~10までの偶数を出力'(N) :-
偶数(N),
write_formatted('%t\n',[N]),
N2 is N + 1,
'1~10までの偶数を出力'(N2).
'1~10までの偶数を出力'(N) :-
奇数(N),
N2 is N + 1,
'1~10までの偶数を出力'(N2).
316:デフォルトの名無しさん
10/07/23 13:50:58
>>296
% Prolog その四
'1~10までの偶数を出力' :-
'1~10までの偶数ならび'(1,L),
concat_atom(L,'\n',S),
write_formatted('%t\n',[S]).
'1~10までの偶数ならび'(N,[]) :- N > 10,!.
'1~10までの偶数ならび'(N,[N|R]) :-
偶数(N),
N2 is N + 1,
'1~10までの偶数ならび'(N2,R).
'1~10までの偶数ならび'(N,R) :-
奇数(N),
N2 is N + 1,
'1~10までの偶数ならび'(N2,R).
317:デフォルトの名無しさん
10/07/23 13:52:28
>>296
% Prolog その五
'1~10までの偶数を出力' :-
'1~10までの偶数を出力'(1).
'1~10までの偶数を出力'(N) :- N > 10,!.
'1~10までの偶数を出力'(N) :-
偶数(N),
write_formatted('%t\n',[N]),
N2 is N + 1,
'1~10までの偶数を出力'(N2).
'1~10までの偶数を出力'(N) :-
奇数(N),
N2 is N + 1,
'1~10までの偶数を出力'(N2).
318:デフォルトの名無しさん
10/07/23 13:56:07
>>296
% Prolog これは上記5個の '1~10までの偶数を出力'/0 述語から呼び出されている定義です。
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
'1~10までの偶数を出力' :-
findall(N,(for(1,N,10),偶数(N)),L),
concat_atom(L,'\n',S),
write_formatted('%t\n',[S]).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
偶数(N) :- 0 is N mod 2.
奇数(N) :- 1 is N mod 2.
319:デフォルトの名無しさん
10/07/23 14:04:39
>>313->>318 Prologのプログラミングではほとんどの場合数個のプログラムパターンが選択可能だ。この点Pythonなどとはかなり性質のことなったプログラム言語だといえよう。
320:デフォルトの名無しさん
10/07/23 18:22:30
スレリンク(tech板:678番)
# [1] 授業単元:C言語
# [2] 問題文(含コード&リンク):
# 以下の機能を持つプログラムを作ること。
#
# -1から100の数字の中から素数を抽出する (配列に直接数字を指定することは不
# 可)
# -抽出した素数を大きい順(降順)にソートする
# -ソートした素数を1行につき5個表示する(6個目以降は次の行に表示する)
#
# 但し、以下の4つの機能を使ったプログラムにすること。
# -サブ関数
# -配列
# -if文
# -for文
#
# 以下の点に関して工夫をした場合は加点の対象とする
#
# -素数の計算時間の低減
# -見つけた素数の数のカウント
# -ソートのアルゴリズム高速化
# -実行時間の表示
321:デフォルトの名無しさん
10/07/23 18:23:58
スレリンク(tech板:684番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 二つのint型整数の小さい方の値を返す関数
# int i_minof(int x, int y){ /* ... */}
# を作成せよ。
#
322:デフォルトの名無しさん
10/07/23 18:24:47
スレリンク(tech板:685番)
# [1] 授業単元:C言語入門
# [2] 問題文(含コード&リンク):
# 下に示すように、整数値を読み込んで、その値を0までカウントダウン
# しながら表示するプログラムを作成せよ。なお、負の値を読み込んだ時は
# 何も表示しない(改行も表示せず終了する)ようにせよ。
# =====
# 整数を入力してください:9
# 9 8 7 6 5 4 3 2 1 0
# =====
323:デフォルトの名無しさん
10/07/23 18:30:15
スレリンク(tech板:262番)
# 【 課題 】自動販売機プログラム(レイアウトは自由)
# 【 形態 】 Servlet/JSP
# 【 GUI 】制限なし
# 【 期限 】7/13(最長7/16)
# 【 Ver 】1.6.0_15
# 【 補足 】
# 1. 商品は10種類、購入商品は選択可能。
# 2. 商品の価格は150円が3種類、130円が2種類、100円が5種類とする。
# 3. 使用できる硬貨は、500円、100円、50円、10円とし、紙幣は1000円のみ使用可能
とする。硬貨投入後に投入した硬貨の返却が出来る。
# 4. お釣り用の硬貨は初期値でそれぞれ10枚ずつ設定されている。
# 5. 500円硬貨が0になった場合に、100円硬貨が5枚以上存在した場合には100円硬貨を
返却する。また、100円硬貨以下についても、代替できるものは他の硬貨を用いて返却を
可能とする。
# 6. お釣りが返却できない硬貨投入時には、お釣りが無くなった旨を表示、購入不可
とする。
# 7. 商品は初期値でそれぞれ10個ずつ在庫があるものとする。
# 8. 商品の在庫が無くなった場合には、商品の在庫が無くなった旨を表示し、購入不
可とする。
324:デフォルトの名無しさん
10/07/23 20:26:49
スレリンク(tech板:694番)
# [1] 授業単元:プログラミング演習
# [2] 問題文(含コード&リンク):
# バイナリ形式で保存されたWindows Bitmap形式の画像ファイルを読み込み、3つの色成分(Blue, Green, Red)に分離し、
# それぞれを異なるファイルに保存するプログラムを実装しなさい。
# プログラム中でやることは以下のことである。
# 1.ヘッダ部分を適切に読み込む
# 2.読み込んだヘッダ部分(ファイルヘッダ、情報ヘッダ)を用いて、適切なバイト数(画素数×1画素あたりのバイト数)を読んでくる。
# 3.分離したい色成分以外を0に書き換え、ヘッダ部分と色情報をファイルに書き込む。
# ただし、以下のような構造体を使用する。
# URLリンク(ime.nu)
#
325:デフォルトの名無しさん
10/07/23 20:29:42
スレリンク(tech板:696番)
# 【質問テンプレ】
# [1] 授業単元:Visual C++ でのプログラミング演習
# [2] 問題文(含コード&リンク):課題4.3.bをお願いします。URLリンク(ime.nu)
# 2.71 < (1 + 1/N) ^ N < 2.72 を満たす最小の整数Nを求める
#
326:デフォルトの名無しさん
10/07/23 20:37:16
スレリンク(tech板:756番)
# [1] 授業単元: ソフトウェア信頼性
# [2] 問題文(含コード&リンク):
# 問題文+自分で作った部分は以下のファイルに
# URLリンク(ime.nu)
#
# //単語の集合からなるファイルを読み込んで、辞書順に並べ替えて出力するプログラムを作成しなさい。
# //(*) ファイルは一行に一単語であり、すなわち単語間は改行コードで区切られる。