09/09/03 00:08:35
>>174
クイックソートは意味ない。
単純に
1.ある範囲ごとに記録するファイルを変更する
2.各々のファイルに関して
2.1そのデータを丸ごとメモリに読めるなら、読んでクイックソート。
2.2丸ごと読めないならそのファイルに関して1に戻る。
3.全てのファイルでソートが終わったら
ソート済みのファイルを、記録範囲が小さい順番に結合する。
こんな感じじゃない?
速度を気にするなら、
1で元ファイルのデータ読み込みで1度に読む量を増やす。
(当然メモリ使用量は増える)
2.1で丸ごと読める上限を上げる。
位じゃないかな?
176:172
09/09/03 00:19:04
>>174
>>175に追記
マルチプロセッサなら、
2の処理を複数のスレッドに分配すれば、処理時間は短くなるかも知れん。
あと、メモリ8GB積んでいるってことは64bitOSなんだよな?
遅くていいなら>>167は動くはず。
64bitプロセスならデータがメモリに載らないことはない。
177:165
09/09/03 01:09:18
>>176
すみません、あまり理解できていません…
3 5 4 1 9 8 7 2 15 を、まず一部分ごとにQuick sort して、
3 4 5 | 1 8 9 | 2 7 15 というようにして、このファイルを先頭から交互に2つのファイルに記録し、
その二つのファイルをmergeする(繰り返し)という意味だったのですが、
やはり、はじめのQuick sortは意味がないでしょうか?
学校のサーバで、OSはRedhat Enterprise Linux 5.3です。
178:デフォルトの名無しさん
09/09/03 06:40:43
もし>>174の通りfloatデータが16GB分あるのならデータ個数はintの範囲を超えるので、
たとえメモリが潤沢にあったとしてもデータ全体を収めるfloatの配列を作ることはできない。
また物理メモリサイズと同程度の大きさを確保してデータを収めるために使えば、
JVMやOSその他で使っているメモリが追いやられてしまうので速度的にとても不利になる。
もう少し小さめの例えば4GBくらいのfloat配列を確保して、
(1) 4GB分データをfloat配列に読み込む。
(2) float配列をソートする。クイックソートを使うArrays#sortでもいいし、他の好みのソートでもいいと思う。
(3) ソートされた配列の内容を一時ファイルに書き出す。
(4) (1)-(3)を4回繰り返して4つの一時ファイルを作成する。
ここまでが部分ごとにソートされたデータを作成する段階で、
(5) 1番目と2番目、3番目と4番目に作成した一時ファイルをそれぞれマージして新たなファイルを2個作成する。
(6) (5)で作成した2個のファイルをマージして全体がソートされた出力ファイルとする。
のように2つのファイルの先頭から小さい方(大きい方)を取り出して新しいファイルに出力することを繰り返す。
もちろんファイルの読み書きでは1個ずつとかでなくバッファを利用した読み書きにする。
FileChannelを利用し、バッファも大きいサイズのダイレクトバッファを予め用意して使い回せば、
ファイルの読み書きは少しは速くなるかもしれない。
ディスクの空き容量がそれなりに必要(上の例なら元データ+ソート済みデータ+2段階の一時ファイルで64GB分)なので、
空き容量次第で一時ファイルはマージ終了後にすぐに消さないといけないかもしれない。
それからJVMの最大ヒープサイズの初期設定は物理メモリの1/4か1GBの小さい方なので-Xmxで必要分を指定してやること。
初期ヒープサイズもついでに最初から大きく取っておいてもいいかも。
179:デフォルトの名無しさん
09/09/03 06:53:49
> たとえメモリが潤沢にあったとしても
は余計でした。
メモリ容量のこととJavaの文法的に作れないこととは別の話なので。
180:デフォルトの名無しさん
09/09/03 08:36:57
>>177
URLリンク(rg550.hp.infoseek.co.jp)
効率とかエラー処理とか諸々を全く考えずに大まかな流れだけを実装するとこんな感じに。
データ数を10000個(CHUNK_SIZE=2500)にしてソートされたっぽいファイルができたことだけは確かめた。
181:165
09/09/03 14:20:19
>>180
何から何までありがとうございます
これを参考にして、頑張ってみます
182:デフォルトの名無しさん
09/09/04 06:15:27
>>177
もう見てないかも知れんが。
3 5 4 1 9 8 7 2 15 を例にとると、
・データの範囲を0~19とする。
・データは3つまでしか読めない。
という仮定で、簡略化のため、テンポラリファイルにも3つの値しか書きこまないとする。
テンポラリファイルは7つできる。それぞれ0.dat~6.datとする。
最初に、3つ読み込む
メモリには「3,4,5」がある。
これを0.dat~6.datに振り分ける。
この場合、1.datに3,4,5が書き込まれ、他のテンポラリファイルには何のデータもない。
次にもう3つ読む。
メモリには「1,9,8」がある。
これを振り分けると、1→0.dat、9→3.dat、8→2.datとなる。
最後に3つ読み振り分ける。7→2.dat、2→0.dat、15→5.datとなる。
この時点で振り分け終わり。各テンポラリファイルには、
0.dat:「2」、1.dat:「3,4,5」、2.dat:「8,7」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」
というデータが入っている。
次に各テンポラリファイルごとに読み込みなおして、クイックソート→書き戻しを行う。
これでテンポラリファイルの内容は
0.dat:「2」、1.dat:「3,4,5」、2.dat:「7,8」、3.dat:「9」、4.dat:「」、5.dat:「」、6.dat:「15」
となる。これを連結すれば
「2,3,4,5,7,8,9,15」
となって全体のソートが完了する。
こんな感じ。
183:デフォルトの名無しさん
09/09/04 07:35:40
>>182
float範囲内にどう分布しているか分からないのに振り分けてどうするんだよ。
ヘタしたら1ファイルに全部入るだろ。
184:182
09/09/04 21:45:19
>>183
むしろ振り分けなくてどうやるつもりなんだ?
1ファイルに入ることは何の問題もないだろ。
そのファイルを再分割するだけじゃん。
185:デフォルトの名無しさん
09/09/05 13:04:42
>>184
狭い範囲に集中してた場合、時間が掛からんか?
186:182
09/09/05 14:54:44
>>185
何を問題視しているかが良く分からん。
一体何と比較して時間がかかることを懸念しているんだ?
再帰が1段増えるだけじゃん。
再帰の深さもlogNのオーダだよな?
187:デフォルトの名無しさん
09/09/05 17:28:29
>>186
DataInputStreamがデータ一周なめるだけで15分の大半を消費しね?
ファイル処理の再帰が不用意に一段深くなるだけでアウトになりかねない。(時間制限的に)
バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ
上の流れならいけると思う。
DataInputStreamを最低2周させる必要がある。
ファイル分割以降の処理をCPUコア数で並行処理できても、
最後のマージを工夫しないと結構きついかな。
188:182
09/09/05 18:57:22
>>187
>バイナリレベルでファイル分割->ソート(一発メモリ上ソート)->マージ
その場合マージの過程が大変じゃね?
と思って最初の分割に一工夫入れてマージ作業を楽にしようと考えたんだけど。
>>187のやり方だと、マージ処理で次に結果ファイルに書き込む値を決めるときに
ファイルから値の読み込み→ソートという処理を行う必要があるよね?
メモリ上にN個のデータの最小値を決定して、結果ファイルに書き込んで
次に書き込む値を決定するときに、ファイル上のデータ最小の可能性もある訳で、
メモリ上のN-1個のデータで最小値を決めるわけには行かないよね?
俺的にはこの部分が非常にヤバイ(データの偏り関係に関係なく必ずI/O数が爆発する)と
思うんだけど、その辺は大丈夫なの?
189:182
09/09/05 19:11:47
追記。
俺のやり方が突っ込みまくられてるのは、I/Oのデータ量が
馬鹿にならなくなるからだと思う。
んで、確認しておきたいんだけど、このテの問題って
・I/Oのデータ量を抑えること
・I/Oの要求数を抑えること
のどっちが大切なの?
俺は今まで後者だと思っていたんだけど、この認識が
間違い?
190:デフォルトの名無しさん
09/09/05 19:22:50
>>186
どう再分割するかが問題
狭い範囲にデータが集中しているようなものの場合その再分割を
たとえば値が集中した区画を単純に等分していくなら再帰が一段増える程度では済まんだろ
対象のデータ量の規模が大きいから1段増加するだけでもかなりのロスになる
何かlogNよりも大きい方法と比べているわけでないからlogNのオーダーであることは意味を持たない
結局データの分布を調べないといけないんだが
一度にfloatがとりうる各値の度数を調べるには無理がきかない体だ
確かに分布さえ分かっているのなら分布数え上げソートできなくもないが
何段になるか分からない再帰を行うよりも
オンメモリの範囲で分割して回数の分かっているマージを行う>>187の方が現実的
191:デフォルトの名無しさん
09/09/05 19:29:06
>>188
マージソートについて何か勘違いしてるんじゃないか?
マージ前の各部分については既にソート済みなんだから、
マージは各部分の先頭を見てどちらかを選択していくだけで済む。
192:182
09/09/05 20:10:36
>>190
理解できた。ありがと。
>>191
勘違いしてた。
いっぺんにマージすることばっかり考えてて、ボトムアップ的に
マージすることが頭になかったわ。
確かに>>187が普通のやり方だね。
193:デフォルトの名無しさん
09/09/05 21:01:11
floatの上位4ビットを使ってテンポラリファイル0~15に書き出す。
テンポラリファイル8~15、0~7の順にバケットソート→結果ファイルに出力。
これで良い気がしてきた。
194:193
09/09/05 21:13:17
NaNの扱いをどうにかしないとだめか
195:デフォルトの名無しさん
09/09/06 01:50:59
もちっと期限に余裕があったら182のも書けば165が実際に試してくれたかもな。
196:デフォルトの名無しさん
09/09/08 04:00:11
【 課題 】
1.
キーボードから次々に非負整数の入力を受け付け、それらの中での正の最小値を表示するプログラムを作成せよ。
データ入力の終わりは負の整数の入力とする。
2.
キーボードから次々に非負整数の入力を受け付け、それらの中での(正の)偶数、奇数、ゼロが
それぞれ何個ずつであったのかを*の数で表示するプログラムを作成せよ。
データ入力の終わりは負の整数の入力とする。
【 形態 】1. Javaアプリケーション(main()で開始 ??
【 GUI 】?
【 期限 】今から2時間後まで
【 Ver 】?
【 補足 】初歩のプログラムの授業の課題で、私自身もさっぱりの状態です・・・
できるだけ基本的なプログラムでお願いします。
197:196
09/09/08 05:45:57
期限を1時間伸ばします
どなたかよろしくお願いいたします
198:デフォルトの名無しさん
09/09/08 06:10:51
>>196
課題1
public class MainClass {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
System.out.print("整数を入力してね(負数で終了):");
int input = sc.nextInt();
int min = input;
while(0<=input){
if(input<min){
min=input;
}
System.out.print("整数を入力してね(負数で終了):");
input = sc.nextInt();
};
System.out.print("最小の値は ");
if(0<=min){
System.out.println(min);
}else{
System.out.println("定まりませんでした ");
}
}
}
199:デフォルトの名無しさん
09/09/08 06:11:10
>>196
課題2
public class MainClass {
public static void main(String[] args) {
java.util.Scanner sc = new java.util.Scanner(System.in);
int zero=0,even=0,odd=0;
while(true){
System.out.print("整数を入力してね(負数で終了):");
int input = sc.nextInt();
if(0<=input){
if(input==0){
zero++;
}else if(input%2==0){
even++;
}else{
odd++;
}
}else{
break;
}
};
System.out.println("ゼロの個数:"+zero);
System.out.println("偶数の個数:"+even);
System.out.println("奇数の個数:"+odd);
}
}
200:196
09/09/08 06:47:36
>>198-199
ありがとうございます。非常に助かりました。
201:デフォルトの名無しさん
09/09/09 02:15:25
課題2の結果は、「*」の繰り返しで表示するんじゃないの?
微妙に仕様と違う動きなのが
初心者っぽさの演出にはなっているが…。
202:デフォルトの名無しさん
09/09/09 02:24:56
非常に付きで助かったんだからいいんじゃないの?
依頼者は動作確認どころか課題そのものを読んでもいないのかもしれないけど
203:デフォルトの名無しさん
09/09/09 03:10:50
>>201
ああ、そうだっけ。
まあ、そのくらいでき…できるならここに丸投げしてないな。
204:デフォルトの名無しさん
09/09/10 20:54:12
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始?
【 GUI 】?
【 期限 】9月11日正午まで
【 Ver 】?
【 補足 】始めたばかりで不明な所が多く、申し訳ございません。
よろしくお願いします。
205:デフォルトの名無しさん
09/09/10 21:10:36
>>204
Webページの表示はフレーム上、ブラウザ上?
206:205
09/09/10 21:15:02
>>204
フレーム上でお願いします。
207:205
09/09/10 21:16:04
名前と安価が逆でしたorz
208:デフォルトの名無しさん
09/09/10 21:21:45
>>206
フレーム上にページを表示するとなると表示はどのレベルまでサポートするの?
209:204
09/09/10 21:30:15
>>208
普段ブラウザで見ているのと同じ様に表示されるようにしたいのです
上手く答えられなくてすいません
210:デフォルトの名無しさん
09/09/10 22:19:47
>>209
JEditorPaneレベルならともかく、
明日の昼までにフルブラウザは厳しいな。
っていうか、俺には出来ない。
偉い人、よろしく。
211:204
09/09/10 22:45:39
うはっ、フルプラウザとまではいかなくても
ただWebページが表示されればいいなと思っていましたが、難しいですかね。
212:デフォルトの名無しさん
09/09/11 21:26:32
>>204
一応、RESETボタンを押すとimg2の画像をimg1に戻すようにしたソース↓
URLリンク(rg550.hp.infoseek.co.jp)
画像クリックのやつはわからんかった
213:デフォルトの名無しさん
09/09/11 21:28:27
よく見たら期限過ぎてた
214:デフォルトの名無しさん
09/09/11 23:11:27
【 課題 】URLリンク(matomesite.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)/
【 期限 】9月13日
【 Ver 】1.6.0_11
丸投げで申し訳ないのですが、どなたかお願いします
215:デフォルトの名無しさん
09/09/12 00:37:38
訂正
語群 11.k=k+1 です
丸投げといったのですが、所々わかったところがあるので追記です
アは5.Math.abs((x[k]-x[k-1])/x[k-1])<eps か 9.Math.abs(f(x[k]))<eps
イは11.k=k+1 か 13.iteration = k
ウは3..breakで間違いないと思います
エ、オはわかりません
216:デフォルトの名無しさん
09/09/12 01:17:04
>>214
ア=5
イ=13
ウ=3
エ=4
オ=12
と思ったけど、12の括弧が閉じてない。
217:デフォルトの名無しさん
09/09/12 01:55:18
>>216
すみません、12の括弧は書き忘れました
ありがとうございました
218:デフォルトの名無しさん
09/09/12 11:08:51
ここに出てる課題を解けば勉強になると思ってる時期がありました
219:デフォルトの名無しさん
09/09/12 18:33:53
次の数列の和を小数第11を四捨五入して第10位まで求めよ
またそれぞれについて、どちらの方が誤差が少なくなるか
あるいは同じ値になるか?理由もつけて答えよ
N=10 20 30 に対して
(1)∑[n=1,N](1/(2^n)
(2)∑[n=N,1](1/(2^n)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】7月14日
【 Ver 】1.6.0_11
前スレで教えていただいたプログラムの数値部分だけをいじったのですが
2^nをどのように表記すればいいのかがわからず解がうまくでません
URLリンク(rg550.hp.infoseek.co.jp)
(Math.pow(2,k)の所がおかしいのだと思うのですが・・・初歩的なことですみません
よろしくお願いします
220:デフォルトの名無しさん
09/09/12 19:21:02
>>218
まあ、普段ならしないことをやるチャンスはある。殆どないけど。
221:デフォルトの名無しさん
09/09/12 19:31:54
>>219
いくつになれば、正しいんだ?
222:デフォルトの名無しさん
09/09/12 19:58:25
>>221
答えはわかりませんが、張ったソースは数列の和ではなく誤差を調べるものでした
言葉足らずですみません
>>次の数列の和を小数第11を四捨五入して第10位まで求めよ
の部分は無視してもらって構いません
N=10、20、30の全ての場合で誤差がでず
まったく同じ数値になってしまったのでおかしいなと思って質問しました
223:デフォルトの名無しさん
09/09/12 21:30:26
>>222
足す順序で誤差が出るってこと?
どうなると誤差を調べたことになるの?
224:デフォルトの名無しさん
09/09/12 22:14:51
>>223
そういうことです
例えば前スレの
N=10 100 1000 10000に対して
(1)∑[k=1,N](1/(k^2)
(2)∑[k=N,1](1/(k^2)
この場合の結果が
URLリンク(www.dotup.org)
で、N=10以外で数値に誤差がでました
計算誤差(丸め誤差や打ち切り誤差?)が起こってるんだと思うのですが
225:デフォルトの名無しさん
09/09/12 22:32:19
>>219
Math.powが怪しいとか適当なことを言っていないできちんと誤差評価した方が建設的だ
doubleは52ビットの仮数部を持っている
そして1/2のべき乗を2^-1から始めて大きい順か2^-30から始めて小さい順に加算するということは
その総和であるsumでは加算するたびに仮数部のビットを1個ずつ立てていくことになる
つまり2進数表記で
0.1 + 0.01 + 0.001 + ...
というように足した回数桁分の1が並ぶ数が総和になる
doubleでは仮数部の最も大きいビットは1であると決められて省略されているから
この数を表すのに必要な仮数部は29ビットになる
どちらの順から加算を始めたとしても52ビットある仮数部で十分に総和も加算する数自体も正確に表せる
元々正確に表せている数値を10進小数第10位までの表記になっても同じになるのは当然
1/2のべき乗の場合はまあ大丈夫だけど四捨五入は10進数の数値操作なのでdoubleの値の評価に使うときは注意
226:デフォルトの名無しさん
09/09/12 22:34:19
> この数を表すのに必要な仮数部は29ビットになる
N=30の場合ね
227:デフォルトの名無しさん
09/09/12 22:49:37
>>225
ありがとうございます
誤差は起こり得ないということですね
試しに52ビットを超える場合(N=54以上)でやってみたところ、すべて1.0になりました
これの意味することが、まだいまいち把握できてないのですが
あとは参考書なり読んでみます
お騒がせしてしまって、すみませんでした
228:デフォルトの名無しさん
09/09/12 23:11:03
>>227
ついでなので
その場合足す数はdoubleで正しく表せるが足される総和の方が正確に表せる範囲を超える
大きい順に足していった場合N=53で総和の仮数部が一杯になり次の2^-54を足した段階で総和は正確に表せず1となってしまう
次の2^-55以降を足してもそれは1のイプシロンつまり機械イプシロン以下の大きさしかないから総和は変化しない
小さい順に足していった場合N=8で総和の仮数部が一杯になり次の2^-7を足した段階で総和は正確に表せず2^-6となってしまう
あとは2^-6、2^-5と足していけば総和は2^-5、2^-4と増えてゆき最後は1になる
229:デフォルトの名無しさん
09/09/12 23:30:59
>>228
なるほど
まだなんとなくですが、イメージは掴めました
わざわざ詳しい説明をしてくださって、ありがとうございました
230:デフォルトの名無しさん
09/09/12 23:31:30
またNを書き忘れたorz
>>228の話はN=60の場合ね
要は有限桁しか表せない浮動小数点では
1 * 2^-m = 0.1111111....111 * 2^-m
とみなされてしまう桁長が右辺の数値にはあるということ
mは大きい順なら0、小さい順なら足し始めた数に応じる
231:デフォルトの名無しさん
09/09/20 16:20:59
【 課題 】以下のようなサーバプログラムCountServer.javaとクライアントプログラム
CountClient.javaを作成してください。
[条件]
・サーバは、クライアントから文字列を受信し、その文字数をカウントして
結果をクライアントに返す。
・クライアントプログラムを実行時に、コマンドラインから、サーバホスト名
java CountClient サーバホスト名 "文字列"
・クライアントは、サーバからの結果を受け取り、画面に表示する。
・サーバは、ポート番号 4321 で接続要求を受け付けるようにする。
サーバプログラムの実行
>java CountServer
クライアントプログラムの実行と実行結果
>java CountClient host1 "Java Programming"
16
【 形態 】Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】9月22日午後5時までお願いします。
【 Ver 】1.6.0_11
【 用語 】
【 補足 】丸投げです。お願いします。
232:デフォルトの名無しさん
09/09/20 18:15:50
>>231
URLリンク(rg550.hp.infoseek.co.jp)
233:デフォルトの名無しさん
09/09/20 19:39:06
>>232
CountServer.javaでは4行目で
「インポートされた java.io.DataOutputStream は 1 度も使用されていません」
とエラーが出て、
countClient.javaでは18行目で
「フィールド CountClient.inDataStream はローカルで読み取られません」
とエラーが出ました。
CountServer.javaの方は単純に4行目を削除すればよいのでしょうか?
234:デフォルトの名無しさん
09/09/20 19:50:46
>>233
それ、使ってないね。決して良いよ。
16:private DataInputStream inDataStream;
33:inDataStream = new DataInputStream(inStream);
235:デフォルトの名無しさん
09/09/20 20:50:18
決しちゃっていいのか
236:デフォルトの名無しさん
09/09/20 20:58:00
おう、キッチリと決しちゃってくれ。悔いが残らぬように。
237:デフォルトの名無しさん
09/09/20 21:02:04
エラーと警告の区別がついていないのはいいのか
238:デフォルトの名無しさん
09/09/20 21:08:39
学ぶ事を放棄して来たのだから良いんじゃないか。
239:232
09/09/20 23:06:20
>>231
>>232のコードのリファクタ版。
今回はワーニングでないと思うが、なんかあったらレスくれ。
URLリンク(rg550.hp.infoseek.co.jp)
240:デフォルトの名無しさん
09/09/21 05:43:28
嫌だ
241:デフォルトの名無しさん
09/09/21 09:34:50
じゃあ好きにしろ
242:デフォルトの名無しさん
09/09/21 09:57:14
(´・ω・`)やんのかお?
243:232
09/09/21 17:09:28
>>231
暇なのでまたちょっとリファクタ
変更点:
最大文字数制限に対応
複数クライアント対応
スレッドプール変更
URLリンク(rg550.hp.infoseek.co.jp)
244:デフォルトの名無しさん
09/09/21 17:20:33
もういいって・・・
245:デフォルトの名無しさん
09/09/22 13:40:20
【 課題 】1.ユニークな9桁の数値100万個を記述した乱数ファイルを作成する
※数値はランダムに生成し作成された順に記述される
※9桁目はゼロであってはならない→×000000001 ○100000000
※ひとつの数値が1行に記述され改行で区切られる
※乱数ファイルがユニークに作成されている根拠をコメントに書け
2.9桁の数値を入力し、その数値の乱数ファイル上の行番号と
昇順でソートした際の順序番号で表示するアプリを作成する
※乱数ファイルは一度しかパースしてはならない
※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可)
※ブルートフォースアルゴリズムを使用してはならない
3.エクストラポイント
※検索手順をGUI上で可視化する(制限なし)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】2. Swing
【 期限 】9月24日18:00まで
【 Ver 】1.6.0_15
【 用語 】
【 補足 】丸投げです。宜しくお願いします。
246:デフォルトの名無しさん
09/09/23 01:18:41
>>245
>※ブルートフォースアルゴリズムを使用してはならない
制約の意味がわからない
247:デフォルトの名無しさん
09/09/23 01:21:44
>>246
総当たりの事です。要はO(n)のアルゴリズムではダメ。
248:デフォルトの名無しさん
09/09/23 01:49:50
>>247
未ソートのデータから検索なんて、他に方法はないのでは?
249:デフォルトの名無しさん
09/09/23 09:04:13
>>248
ありませんよ
250:デフォルトの名無しさん
09/09/23 11:47:56
ソートが出来ない訳ではありませんが、パース出来るのは一度だけです。
251:245
09/09/23 14:30:49
誰か分かる方いらっしゃらないでしょうか。
252:デフォルトの名無しさん
09/09/23 23:25:48
>>251
いや、未ソートのデータの検索に総当り以外のアルゴリズムなんて無いだろ。
253:デフォルトの名無しさん
09/09/23 23:53:31
>>252
一度パースができるとあるので、そこでソートしながら自前のデータ構造にいれれば良いんじゃね。
で、出来上がったデータ構造上をO(log)位のアルゴリズムで検索すれば
ソートオーダの位置と未ソート時の位置を取得できるんじゃないのかな?俺には作れないけど。
254:デフォルトの名無しさん
09/09/24 01:18:09
>>253
それでいいのならソート自体が目的ではないのでO(n)のメモリが必要なデータ構造を用意する必要はない。
ファイルをスキャンしながら検索対象以下の数値の個数をカウントして、
最後まで読み終わった時点で検索対象が現れていたら、
現れた行番号が「乱数ファイル上の行番号」であり、
検索対象以下の数値の個数が「昇順でソートした際の順序番号」になるので、
行番号と個数を覚えておくだけのO(1)のメモリで済むしファイルを読んだ後の探索もいらない。
でもこれって結局ファイル上ではあるもののO(n)の探索には変わりないんだよね。
ファイルを一通り読んでいいのに探索はO(n)では駄目とかの>>245の要求が矛盾しているというか。
255:デフォルトの名無しさん
09/09/24 02:10:30
>>254
その場合2回目の検索はどうする?
256:デフォルトの名無しさん
09/09/24 02:24:21
複数回問い合わせることを前提に、検索部分のコストだけということでは?
URLリンク(rg550.hp.infoseek.co.jp)
257:デフォルトの名無しさん
09/09/24 02:42:28
Arrays.sortとArrays.binarySearchで許してくれんのかな。
余計かもしれんがDataのamountがIntegerなのはcompareToしたいから?
intのまま減算して返せばよくね?
258:デフォルトの名無しさん
09/09/24 02:49:03
>>257
>Arrays.sortとArrays.binarySearchで許してくれんのかな。
>※ライブラリのデータ構造を使用してはならない(プリミティブタイプ、配列は可)
って文言には反してないが、どうなんだろうね。
出題者の期待している解答ではないかも。
>余計かもしれんがDataのamountがIntegerなのはcompareToしたいから?
yes
intの差の方が良いね。
259:デフォルトの名無しさん
09/09/24 03:05:17
>>256
【 GUI 】2. Swing
260:デフォルトの名無しさん
09/09/24 03:08:54
>>259
>3.エクストラポイント
っていってるし。面白みも無い。
つか、そもそも、主旨が合っているのかどうかもあやうい。
261:デフォルトの名無しさん
09/09/24 03:13:51
あとはArrays.binarySearchのステップを可視化できたら尚OKか。
えーと、最初にcompareTo呼ばれたDataは50万個目だよね。
staticに(binarySearchによる)compareToの呼び出しカウントを保持しておけば
次回配列インデックスへの差分量がわかるから、compareToの結果を元に追跡可能だな。
表示は極端にシンボル化されるから、仮に配列インデックスの計算誤差があっても無視できるしね。
262:245
09/09/24 03:50:03
ご対応頂いてありがとうございます。
>>254
最初の読み込みで自前のデータ構造に取り込んでソートすることはOKです。
GUI上のテキストフィールドで入力した数値で複数回検索する必要がありますので、
読み込み時にO(n)であっても以降の検索処理がO(n)で無ければ良いそうです。
>>257>>258
Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。
>>259>>260
基本的にコマンドではなくGUIでアプリをつくる必要があります。
エクストラポイントについては検索時のツリー構造等の移動/変化を
GUI上に描画してグラフィカルに表示した場合にポイントとなります。
以上、宜しくお願いします。
263:245
09/09/24 03:51:10
追記:
乱数ファイルを作成するクラスについてはGUIである必要はありません。
264:デフォルトの名無しさん
09/09/24 04:02:59
>>262
>Arraysは利用出来ません。ソートは自前のデータ構造に対して実装する必要があります。
構造と言っても二分探索は配列で出来るし、実装は退屈だからパス
>基本的にコマンドではなくGUIでアプリをつくる必要があります。
面白味は無いのでパス
>エクストラポイントについては検索時のツリー構造等の移動/変化を
着目している対象くらいは変わるが、構造自体は検索中に変わったりしないのだが…
265:デフォルトの名無しさん
09/09/24 07:46:23
URLリンク(rg550.hp.infoseek.co.jp)
視覚化してみた
266:デフォルトの名無しさん
09/09/24 07:59:09
【 課題 】 作曲プログラムの作成について
JAVAで作曲ソフトを作成しなさい。
しかし普通の作曲ソフトではなく、もともと持っていた画像を取り込み、そこに5線譜を引き、点をとって音を再生するというようなものです。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】2. Swing
【 期限 】9月24日18:00まで
【 Ver 】1.6.0_15
【 用語 】
【 補足 】わかりにくくてすいません。
URLリンク(nikitoki.blog.so-net.ne.jp)
↑の中でやっているようなことができる作曲ソフトを作りたいと考えています。
よろしくおねがいします
267:デフォルトの名無しさん
09/09/24 08:03:21
↑訂正です
期限は9月26日18時まででした。
すみません。
268:デフォルトの名無しさん
09/09/24 08:48:17
何言ってんだか、さっぱりだし、宿題感がしねえ
269:デフォルトの名無しさん
09/09/24 10:24:16
【課題提示用テンプレ】
【 課題 】「プログラム言語Java」と「JRuby」の特徴比較について調べ、記述せよ
RubyではなくJRubyである点に注意してください。特に、両者に差が
あるポイントを明確に論じてください。
【 形態 】その他(記述)
【 期限 】明日まで^^;
JRubyの資料が全然なくて困ってます^^;
簡単でもいいのでだれかお願いします
270:デフォルトの名無しさん
09/09/24 10:38:59
ゆとりか・・・
271:デフォルトの名無しさん
09/09/24 10:55:21
そりゃ、現時点で学生だろうし、その中でも極限のバカしかここに依頼しないし
272:デフォルトの名無しさん
09/09/24 11:36:31
>>269
抜け作の君に20代男性からの老婆心だ
とりあえず顔文字つけときゃいいってもんじゃないよ
頼みごとをしようって時にふざけてんの?
資料がないっつーのも苦しい言い訳
プログラムを書くわけでもないし、ちょちょっとまとめるくらい難しくはないでしょ
JavaとJRubyではどちらが早いか、どちらが普及しているか、便利な点、不便な点
そういうのを読み取って羅列する
273:245
09/09/24 12:18:46
>>265
ありがとうございます。
自前のソート、検索処理の部分もお願い出来ないでしょうか。
274:デフォルトの名無しさん
09/09/25 07:22:41
>>267
土曜に締め切りって何だよ
275:デフォルトの名無しさん
09/09/25 09:49:01
>>266
パンをパンと認識するのは人間だからできることだ。
それをコンピュータにやらせるのがどんだけ大変か分かってるのか。
しかもそれを宿題スレで人にやってもらうってか。
もっと要件を限定せい。
276:デフォルトの名無しさん
09/09/25 20:18:23
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】9/31
【 Ver 】1.6.0_13
【 用語 】特に無し
【 補足 】丸投げです。お手数をおかけしますが、宜しくお願いします。
277:デフォルトの名無しさん
09/09/25 22:03:35
public class Kadai01_5 {
public static void main(String[] args) {
double theta;
double f;
int divider = 18;
for(int i = 1; i <= divider; i++){
theta = Math.PI * i / divider;
f = Math.sin(theta) + Math.cos(theta);
System.out.printf("孤度 θ: %10.5f [ラジアン]\t\t関数F: %10.5f \n", theta, f);
}
}
}
278:デフォルトの名無しさん
09/09/26 10:05:06
ここは美術のアイデアも教えていただけますか?
279:デフォルトの名無しさん
09/09/26 11:57:17
>>277 180/18=10 なんだな
280:デフォルトの名無しさん
09/09/26 17:02:45
>>279
何か?
281:デフォルトの名無しさん
09/09/28 00:50:59
forループの数が18回になってる
282:デフォルトの名無しさん
09/09/28 00:56:19
ああ、Π/18ごとは10度ごとだから18回で良かったのか
283:デフォルトの名無しさん
09/09/28 01:00:16
何が言いたいのかわからん?間違いを指摘してるのかな?
なんか課題ないのー?
もう寝るけどさ。
284:276
09/09/29 09:44:02
すみません。>>277をコンパイルして実行してみたのですが実行例と数値が違うみたいです。
285:デフォルトの名無しさん
09/09/29 11:56:20
>>284
i を0からはじめればいいよ。
for(int i = 0; i <= divider; i++){
286:デフォルトの名無しさん
09/09/29 23:36:42
【 課題 】9×9の数独の解を求めるAppletを作成せよ。
9×9ののマスを用意し、問題を手で入力する。(マスの外枠と3×3の境目になる線は太くする。)
URLリンク(ja.wikipedia.org) この画像のようなデザイン
問題として与えられている数字をマスに入力し、「解を求める」ボタンを押すことで残りのマスに数字を埋めていく。
求めた数字の文字色を青色とする。
リセットボタンを用意し、白紙のマスに戻す機能を付けること。
【 形態 】2. Applet
【 GUI 】4. 制限なし
【 期限 】10月6日午前中
【 Ver 】java version "1.6.0_15"
よろしくお願いします。
287:デフォルトの名無しさん
09/10/02 23:33:36
【 課題 】以下のプログラムを元に標準偏差も計算できるように変更せよ。数値は実数を受け入れられるようにせよ。データはファイルで与え1.0 2,0 3,0 4,0 5,0 を試してみよ。
標準偏差は全体7カラム。小数点以下5桁で表せ。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】10月6日
【 Ver 】java version "1.6.0_05"
【 用語 】標準偏差 = √1/n∑(x-a)^2 (aはxの平均)
【 補足 】
288:デフォルトの名無しさん
09/10/02 23:40:15
>>287の続き
URLリンク(rg550.hp.infoseek.co.jp)
よろしくお願いします
289:デフォルトの名無しさん
09/10/03 00:40:13
>>287
import java.io.*;
class k3_1 {
public static void main(String[] args) {
try {
BufferedReader br = new BufferedReader(new FileReader("test2.txt"));
double[] test = new double[5];
for (int i = 0; i < test.length; i++) {
String str = br.readLine();
test[i] = Double.parseDouble(str);
}
double max = test[0], min = test[0], s1 = 0, s2 = 0;
for (int i = 0; i < test.length; i++) {
if (max < test[i]) max = test[i];
if (min > test[i]) min = test[i];
s1 += test[i] / test.length;
s2 += test[i] * test[i] / test.length;
System.out.println(test[i]);
}
System.out.println("最高点は" + max + "です");
System.out.println("最低点は" + min + "です");
System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
br.close();
} catch (IOException e) {
System.out.println("入出力エラーです");
}
}
}
290:デフォルトの名無しさん
09/10/04 23:04:40
>>289
ありがとうございます。
>System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
この部分のみ、エラー吐いたのですが自己解決できました。
291:デフォルトの名無しさん
09/10/04 23:15:17
>>290
どんなエラー?
292:デフォルトの名無しさん
09/10/05 00:25:18
>>291
k3_1.java:33: シンボルを見つけられません。
シンボル: メソッド println(java.lang.String,double)
場所 : java.io.PrintStream の クラス
System.out.println("標準偏差は%7.5fです",Math.sqrt(s2 -
s1 * s1));
^
エラー 1 個
293:デフォルトの名無しさん
09/10/05 00:29:40
【 課題 】テキストファイルをあらかじめ作っておいて、その内容を表示しながら
別のファイルにコピーするプログラムを書け。
コマンド例(file_a.txtからfile_b.txtへコピーする)
内容例
123456
234567
abcdefg
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】10月7日
【 Ver 】java version "1.6.0_05"
【 用語 】
【 補足 】
よろしくお願いします
294:デフォルトの名無しさん
09/10/05 00:35:35
>>292
>>289と違うじゃねーかw
295:デフォルトの名無しさん
09/10/05 00:38:14
>>292
> System.out.printf("標準偏差は%7.5fです%n", Math.sqrt(s2 - s1 * s1));
でエラーを吐いたわけじゃなかったのか
296:デフォルトの名無しさん
09/10/05 00:52:03
>>293
import java.io.*;
public class Copy {
public static void main(String[] args) throws IOException {
BufferedReader in = null;
BufferedWriter out = null;
try {
in = new BufferedReader(new FileReader(args[0]));
out = new BufferedWriter(new FileWriter(args[1]));
char[] buf = new char[10 * 1024];
int n;
while ((n = in.read(buf)) != -1) {
System.out.print(String.valueOf(buf, 0, n));
out.write(buf, 0, n);
}
} finally {
if (out != null) out.close();
if (in != null) in.close();
}
}
}
使い方 java Copy file_a.txt file_b.txt
297:デフォルトの名無しさん
09/10/05 01:09:44
>>293
import java.io.*;
public class TextFileCopy {
public static void main(String[] args) {
String inFile = "file_a.txt";
String outFile = "file_b.txt";
BufferedReader br = null;
BufferedWriter bw = null;
try {
br = new BufferedReader(new FileReader(inFile));
bw = new BufferedWriter(new FileWriter(outFile));
String tmpStr;
while ((tmpStr = br.readLine()) != null) {
bw.write(tmpStr);
bw.newLine();
System.out.println(tmpStr);
}
} catch (IOException e) {
System.out.println(e.getMessage());
} finally {
try {
if (br != null) {br.close();}
if (bw != null) {bw.close();}
} catch (IOException e) {}
}
}
}
298:デフォルトの名無しさん
09/10/05 08:27:20
>>297
その方法だとコピーとは言えないな
文字のコピーであって、ファイルのコピーじゃない
299:デフォルトの名無しさん
09/10/05 18:15:54
>>296-297
ありがとうございます。共に正常に動作確認できました。
>>296について厚かましいのですが、
>char[] buf = new char[10 * 1024];
この一文は何をしているのか教えていただけませんか?
300:デフォルトの名無しさん
09/10/05 19:11:03
10240要素の char 配列を作成してる。
なぜ char 配列が必要かは BufferedReader のドキュメント読め。
バッファサイズ(ここでは配列の要素数)に関してはどのくらいがいいかは一概に言えない。
301:デフォルトの名無しさん
09/10/05 22:04:39
>>298
297じゃないが、そこまでこだわるほどのものには思えないがな。
302:デフォルトの名無しさん
09/10/05 22:15:09
298ではないが、297はファイル名を引数で渡せない作りになってたり
解答としては微妙だからな。つい突っ込みたくなったんじゃないか?
303:デフォルトの名無しさん
09/10/06 12:10:54
>>299
ホントにあつかましいな。
自分で調べろ、カス。
304:デフォルトの名無しさん
09/10/06 22:57:36
【 課題 】与えられた行列データ A.txt (20×2) を読み込み前進消去し、txtファイルB.txtに出力せよ
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月8日
【 Ver 】1.6.0_11
【 用語 】前進消去=行列の掃き出しです。これの前半部分です
URLリンク(ja.wikipedia.org)
【 補足 】一応、作っては見たもののコンパイルエラーが起きてしまいました
URLリンク(rg550.hp.infoseek.co.jp)
お願いします
305:デフォルトの名無しさん
09/10/06 23:36:09
>>304
IDE使ってないの?コードコピペしただけで、おかしいって文句言ってくるじゃん
>String shutsuryoku = "%13.10f";
>fileOutMatrix(outputfolder,matrix_out,shutsuryoku);
>static void fileOutMatrix(String outputfolder, String matrix_out, String shutsuryoku, double [][]a)
fileOutMatrix()がdoubleの二次元配列を要求しているのに、Stringを渡したら例外出るさ
内容?眠いから見てない
306:デフォルトの名無しさん
09/10/07 01:40:25
>>304
4つの引数が必要なメソッドに3つの引数しか渡さずに呼び出している
第4引数に a を指定すればコンパイルは通るけどそれが正しい結果を返すコードかどうかは知らない
自分でA.txtを作って確かめてもしおかしようならA.txtやその正答もうpして再依頼すればいい
307:デフォルトの名無しさん
09/10/07 02:14:02
>>305-306
ありがとうございます
第4引数にaを指定し、A1.txtを
1,2
2,1
に設定して実行してみたところ
1,2
2,-3
と出力されましたが
正答は
1,2
0,-3
なので、ピボットに選んだ下の列が0になっていないようです
1,2,1
2,1,1
1,1,1
で試したところ、やはり同様に
1,2,1
2,-3,-1
1,-1,1/3
正答は
1,2,1
0,-3,-1
0,0,1/3
となって、行列の下三角?の部分が与えた行列と変化してないようです
間違っている箇所を直していただけたら助かりますorz
お願いします
308:デフォルトの名無しさん
09/10/07 02:29:05
>>307
人の話は聞け。
309:デフォルトの名無しさん
09/10/07 02:34:09
for(int k=0; k<a[0].length; k++) {
for(int i=k+1; i<a[0].length; i++) {
n = a[i][k] / a[k][k];
a[i][k] = 0;
for(int j=k+1; j<a[0].length; j++) {
a[i][j] -= n * a[k][j];
}
}
}
前進消去部分のみ
a[i][k]をピボットで割ったあとそれ自身には0を代入する
310:デフォルトの名無しさん
09/10/07 02:53:17
勘違いしないために念のために付け加えておく
0を代入するのは無理に0にするためではなく計算しなくても自分自身を引いて0になることがわかっているから
ためしにつぎのように0を代入することをやめてj=kから計算を始めるようにしても結果は同じになる
for(int k=0; k<a[0].length; k++) {
for(int i=k+1; i<a[0].length; i++) {
n = a[i][k] / a[k][k];
for(int j=k; j<a[0].length; j++) {
a[i][j] -= n * a[k][j];
}
}
}
311:デフォルトの名無しさん
09/10/07 15:28:57
>>308
聞いたつもりだったのですが・・・すみません
>>309-310
詳しくありがとうございます
よく分かりました
312:デフォルトの名無しさん
09/10/09 00:16:13
【 課題 】URLリンク(www.dotup.org)
【 形態 】Applet
【 GUI 】制限なし
【 期限 】10/10
【 Ver 】1.6.0-11
お願いします
313:デフォルトの名無しさん
09/10/09 01:33:21
>>312
真面目にやる気がなくなるほどのif-elseの羅列だw
init()メソッドの一番末尾に追加
((Button)add(new Button("reverse"))).addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
StringBuilder buf = new StringBuilder();
for (ListIterator i = v.listIterator(v.size()); i.hasPrevious(); ) buf.append(i.previous()).append(" ");
showStatus(buf.toString());
}
});
もし元ソースのフォーマットに合わせたいならreverse用のボタンreverseBtnをインスタンス変数として定義して
displayBtnの場合を参考にしてinit()メソッドとactionPerformed()メソッドにこの処理を分ける
元のソースから出てる警告は質問者が自分で修正してくれ
314:デフォルトの名無しさん
09/10/11 22:12:01
【 課題 】2進数で000000001から111111111まで作成する。
【 形態 】Javaアプリケーション(main()で開始)/
【 GUI 】制限なし
【 期限 】10/15
【 Ver 】わからん
315:デフォルトの名無しさん
09/10/11 22:32:19
>>314
作成するってどういう意味?
000000001
000000010
000000011
000000100
...
111111111
という感じで文字列を表示すればいいの?
問題文はできれば自分で解釈したりせずに原文をそのまま出してほしい
316:314
09/10/11 23:37:51
問題文:2進数で1から255までの数字を表現しなさい。
ので315のように表示できるようにして欲しいです。
317:デフォルトの名無しさん
09/10/11 23:39:17
>>314
public class Bin {
public static void main(String[] args) {
final int START = Integer.parseInt("000000001", 2);
final int END = Integer.parseInt("111111111", 2);
StringBuffer sb = new StringBuffer("000000000");
for (int i = START; i <= END; i++) {
sb.append(Integer.toBinaryString(i));
System.out.println(sb.substring(sb.length() - 9));
sb.setLength(9);
}
}
}
318:デフォルトの名無しさん
09/10/11 23:44:07
念為2進数を扱うメソッドそのものを実装することが目的の場合用
public class Bin2 {
public static void main(String[] args) {
final int START = parseInt("000000001");
final int END = parseInt("111111111");
for (int i = START; i <= END; i++) showBinaryString(i);
}
private static int parseInt(String s) {
int result = 0, len = s.length();
for (int i = 0; i < len; i++) result += result + s.charAt(i) - '0';
return result;
}
private static char[] buf = new char[9];
private static void showBinaryString(int i) {
int j = 9;
do {
buf[--j] = (char)('0' + (i & 1));
} while ((i>>>= 1) != 0);
while (j-- > 0) buf[j] = '0';
System.out.println(buf);
}
}
319:デフォルトの名無しさん
09/10/11 23:56:09
問題文は1から255じゃないかw
>>314が9ビットだったから>>317-318は511まで表示するようにしてる
適当に直してくれ
それに問題では1とか255というように与えられているからparseIntせずに直接START=1,END=255でいいね
320:デフォルトの名無しさん
09/10/12 02:11:18
これ、読んだひと居ますか?
URLリンク(page19.auctions.yahoo.co.jp)
URLリンク(page18.auctions.yahoo.co.jp)
321:デフォルトの名無しさん
09/10/12 03:21:06
>>314
やっぱり255までなのが気になったのでついでに記述をシンプルに
もし9桁必要ならj = 128をj = 256に変更
public static void main(String[] args) {
for (int i = 1; i <= 255; i++) {
for (int j = 128; j > 0; j >>= 1) System.out.print((i & j) == 0 ? '0' : '1');
System.out.println();
}
}
Integer#toBinaryStringを利用していいのなら
for (int i = 1; i <= 255; i++) {
String s = "00000000" + Integer.toBinaryString(i);
System.out.println(s.substring(s.length() - 8));
}
みたいな感じに
本当はStringBufferや1.5以上ならStringBuilderを使えばいいけどこの程度なら変わらない
322:デフォルトの名無しさん
09/10/12 04:34:56
teikadeってどうなったの?
323:デフォルトの名無しさん
09/10/12 05:57:40
>>314
なんか見たなと思えば
C/C++の宿題片付けます 130代目
スレリンク(tech板:783番)
783 名前:デフォルトの名無しさん[] 投稿日:2009/10/11(日) 11:31:43
[1] 授業単元:
プログラミング1
[2] 問題文(含コード&リンク):
2進数で00000001から11111111まで表示する。
[3] 環境
[3.1] OS:windows
[3.2] わからん
[3.3] C言語
[4] 期限: 10月15日まで
[5] とくになし。この前for文を習ったばっかり。
324:デフォルトの名無しさん
09/10/12 20:56:48
どなたか教えてください。例えば、
hoge[]={300,400,500,200,100} をソートしたときに元の配列番号の並びかえで
{4,3,0,1,2}として別の配列に格納したいんですがどうしたらいいでしょうか。
テンプレ使うまでもない質問だと思ったので、こんな形ですいません。
よろしくお願いします。
325:デフォルトの名無しさん
09/10/12 21:18:01
すいません>>324の補足です
ソート時にはjava.util.Arrays.sort(hoge)を使います。
326:デフォルトの名無しさん
09/10/12 23:04:07
>>324
テンプレ使うまでもない質問なら質問スレへどうぞ
327:デフォルトの名無しさん
09/10/13 01:07:20
>>324
3000,4001,5002,2003,1004をソートして%10
新たにclass作ってimplements Comparable
328:デフォルトの名無しさん
09/10/13 09:35:59
>>324
>>245
329:デフォルトの名無しさん
09/10/13 11:45:44
>>327
答えてやるなよ・・
330:デフォルトの名無しさん
09/10/13 17:28:17
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月17日
【 Ver 】1.6.0_11
A=
{-7.29565,6.54738,4.07991}
{-5.58592,7.51773,-1.78163}
{9.22599,-3.26847,-3.03223}
{6.25081,-8.75345,-4.31528}
行列norm ||A||1、||A||∞を求めるプログラムを作成せよ
参考になるかはわかりませんが、複素数ベクトル版の2-norm、∞-normを
求めるプログラムはこれです
URLリンク(rg550.hp.infoseek.co.jp)
お願いします
331:デフォルトの名無しさん
09/10/13 18:16:53
>>330
URLリンク(rg550.hp.infoseek.co.jp)
332:デフォルトの名無しさん
09/10/13 20:21:39
わざわざベクトルノルムのソースを出してきてるということは
誘導ノルムでなく成分に関するノルムが求めるものなのかも…
意味も分からず探し出してきたものを提示しただけかもしれんが
課題は実行列なのに無駄に複素ベクトル用だし
333:デフォルトの名無しさん
09/10/13 21:01:50
>>331-332
ありがとうございます
いえ、これで合っていると思われます
わかりにくくてすみません
複素ベクトルは授業で少しやったので
少しでも参考になる部分があるかなと
Double.MIN_VALUEというのが初めて見るものなので調べてみます
334:デフォルトの名無しさん
09/10/14 00:11:19
【 課題 】1.任意のWebページから、"http://"で始まるハイパーリンクを抽出するように下のプログラムを改良
URLリンク(rg550.hp.infoseek.co.jp)
2.上のプログラムと下のプログラムを合わせて任意のWebページ10ページに含まれる単語のうち
上位10位の単語リストとその出現頻度を表示
URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】10/15
【 Ver 】1.6.0_11
【 用語 】
【 補足 】2.はsenという形態素解析器がないと実行できないと思いますが
プログラムコードだけでもどうかよろしくお願いします。
335:デフォルトの名無しさん
09/10/14 00:30:27
>>333
その課題のAを含むほとんど全ての行列で大丈夫だけど
ただ零行列のノルムを求めようとすると0を返せないので
maxは素直にDouble.MIN_VALUEでなく0で初期化した方がいいと思う
336:デフォルトの名無しさん
09/10/14 00:50:38
>>335
なんのことかさっぱりわからんけど、x[0].lengthで死ぬと思う
337:デフォルトの名無しさん
09/10/14 01:11:12
>>336
零行列というのは全ての成分が0になっている行列
行や列の数が0であるようなものは行列とは普通考えない
||A||1や||A||∞の誘導ノルムは各行や各列の成分の絶対値の和の中で最大のものなので
最大値を検索するときに最大値候補が入るmaxがDouble.MIN_VALUEで初期化されていると
零行列ではmaxを越える和sumがないので本来0を返すべきなのにDouble.MIN_VALUEが返ってしまう
338:デフォルトの名無しさん
09/10/14 12:56:43
【 課題 】URLリンク(www.dotup.org)
【 形態 】Applet
【 GUI 】制限なし
【 期限 】10/15
【 Ver 】1.6.0-11
お願いします。
339:デフォルトの名無しさん
09/10/14 13:01:06
>>337
ああ やっと意味わかった
Double.MIN_VALUEって正の数なのか
340:デフォルトの名無しさん
09/10/14 14:07:29
【 課題 】1.任意のWebページから、"http://"で始まるハイパーリンクを抽出するように下のプログラムを改良
URLリンク(rg550.hp.infoseek.co.jp)
2.上のプログラムと下のプログラムを合わせて任意のWebページ10ページに含まれる単語のうち
上位10位の単語リストとその出現頻度を表示
URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】10/15
【 Ver 】1.6.0_11
【 用語 】
【 補足 】2.はsenという形態素解析器がないと実行できないと思いますが
プログラムコードだけでもどうかよろしくお願いします。
341:デフォルトの名無しさん
09/10/14 14:17:26
>>340
上はパターンにhttp://を足せばいいだろうけど、
下は、senちゃら言うのを使ってるか、これから入れてくれる人が現れないと…
342:デフォルトの名無しさん
09/10/14 18:07:35
>>338
まず、ソースがアプレットじゃねーし
343:デフォルトの名無しさん
09/10/15 09:33:13
>>342
すいませんアプリケーションでしたorz
344:デフォルトの名無しさん
09/10/15 20:13:51
【課題】
コマンド引数(Java プログラム実行時の引数)を利用する。
キーボード(標準入力)から単語(アルファベット)入力し,入力した順番と逆の順にモニタ(標準出力)に表示する.
入力した文字列の個数も number of use として表示する。
プログラムの実行結果。
$ java Kadai 1 2 3 4 5
number of use = 5
args[0] = 5
args[1] = 4
args[2] = 3
args[3] = 2
args[4] = 1
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 Ver 】1.6.0_11
【 期限 】10/16
import.java.io*;を使うそうです。意味不明すぎて丸投げです。お願いします。
345:デフォルトの名無しさん
09/10/15 20:21:19
超難問だな。単語(アルファベット)の入力は「プログラムの実行結果」で言うところのどれよ?
346:デフォルトの名無しさん
09/10/15 20:39:00
わかりづらくてすみません。
$ java Kadai "1 2 3 4 5"の部分です
347:デフォルトの名無しさん
09/10/15 20:53:45
【 課題 】コマンドライン引数に任意で入力した文字列に文字列毎にカンマを入れ、カンマ区切りの文字列を
カンマ区切りごとに分割し、最後に分割した回数を出力する。
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月16日AM10
【 Ver 】java version "1.6.0_14"
【 補足 】丸一日悩みましたが結果わからずです。
ソースに含まれる文章を.split(",")で分割できるのはわかったのですが、
コマンドラインで、任意となるとわからなくなりました。
java Bunkatu java,Java,JAVA
↓
java
Java
JAVA
以上3件に分割しました。
こんな感じです。
よろしくお願いします。
348:デフォルトの名無しさん
09/10/15 21:00:05
>>344
class Kadai{
public static void main(String[] args)
{
System.out.println("number of use = " + args.length);
for(int i=args.length-1;i>=0;i--){
System.out.println(args[i]);
}
}
}
349:デフォルトの名無しさん
09/10/15 21:25:54
>>347
public class Bunkatu{
public static void main(String[] args)
{
String[] strary= args[0].split(",");
for(int i=0;i<strary.length;i++){
System.out.println(strary[i]);
}
System.out.println("以上" + strary.length + "件に分割しました。");
}
}
350:デフォルトの名無しさん
09/10/15 22:26:57
>>345ありがとうございます!
351:デフォルトの名無しさん
09/10/15 22:35:49
【課題】
キーボード(標準入力)より整数を1つ入力し,その数値までの九九の表を作成し,モニタ(標準出力)に表示する。
二次元配列と for 文を利用する。
各行の数字が縦に揃うように注意せよ。
九九の値の表示部分は以下のようにするのがよい。
int[][]a = new int[n][n];
for(i=0;i<あ;i++){
for(j=0;j<い;j++){
a[i][j] = う;
if(a[i][j]<10){
System.out.print(" ");
}
System.out.print(" " + a[i][j]);
}
System.out.println();
}
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】なし
【 期限 】10/16
【 Ver 】1.6.0_11
3を入力すると
1 2 3
2 4 6
3 6 9
のような結果になるそうです。お願いします
352:デフォルトの名無しさん
09/10/15 22:59:45
>>351
表示部分の指定がひどすぎるwwwww
353:デフォルトの名無しさん
09/10/15 23:07:36
あ i<n&i<9
い j<n&j<9
う (i+1)*(j+1)
354:デフォルトの名無しさん
09/10/15 23:11:06
>>351
与えられている部分の前に
System.out.print("1から9までの整数を入れてください:");
int n = Integer.parseInt(System.console().readLine());
int i, j;
の3行を加え
「あ」、「い」は n、「う」は (i + 1) * (j + 1)
355:デフォルトの名無しさん
09/10/15 23:27:05
>>349
ありがとうございます!!!
無事起動できました。
String[] str = args[0].split(",");
for(int i = 0; i < str.length; i++)
ここが思い浮かばなかったです・
素早い回答に感謝します。
356:デフォルトの名無しさん
09/10/15 23:51:08
どなたか>>334お願いできませんか?
ちなみに同じやつの>>340自分じゃないので・・
357:デフォルトの名無しさん
09/10/16 00:52:44
【課題】
整数値を値とする5行3列の大きさの2次元配列 a を定義し,0 から 9 までの整数乱数を代入して初期化する。
2次元配列 a をモニタ(標準出力)に表示する。
【形態】1. Javaアプリケーション(main()で開始)
【期限】10/16
【Ver】1.6.0_11
実行結果として
$ java Kadai
a[0,0] = 8 a[0,1] = 0 a[0,2] = 8
a[1,0] = 9 a[1,1] = 0 a[1,2] = 3
a[2,0] = 0 a[2,1] = 2 a[2,2] = 8
a[3,0] = 0 a[3,1] = 6 a[3,2] = 1
a[4,0] = 3 a[4,1] = 9 a[4,2] = 8
ただし、この例の配列要素の値は整数乱数であるので、場合ごとに異なった値が代入されている。
だそうです。まったく意味がわかりません。お願いします
358:デフォルトの名無しさん
09/10/16 01:08:50
import java.util.Random;
public class Kadai {
public static void main(String[] args) {
int[][] a = new int[5][3];
Random r = new Random(System.currentTimeMillis());
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a[i].length; j++) {
a[i][j] = r.nextInt(10);
if (j != 0) System.out.print(" ");
System.out.print("a[" + i + "," + j + "] = " + a[i][j]);
}
System.out.println();
}
}
}
359:デフォルトの名無しさん
09/10/16 01:24:37
>>358ありがとうございました
360:デフォルトの名無しさん
09/10/16 02:25:56
>>351
URLリンク(kansai2channeler.hp.infoseek.co.jp)
361:デフォルトの名無しさん
09/10/16 11:53:30
【 課題 】URLリンク(www.dotup.org)
【 形態 】Applet
【 期限 】10/20
【 Ver 】1.6.0-11
よろしくお願いします
362:デフォルトの名無しさん
09/10/16 13:09:32
>>361
URLリンク(rg550.hp.infoseek.co.jp)
363:デフォルトの名無しさん
09/10/16 15:13:56
>>362
無言は勘弁してください…
364:デフォルトの名無しさん
09/10/16 20:56:26
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】10/21
【 Ver 】1.6.0_11
【 補足 】参考プログラムを添付してありますので、それを参考にお願いします。
365:デフォルトの名無しさん
09/10/16 21:26:52
>>364
public class Kadai03_5 {
public static void main(String[] args) {
int[] num = {23, 76, 48, 93, 16, 34, 87};
showArray(num);
System.out.println("\t----- Sort -----");
sort(num);
System.out.println("\t----- Result -----");
showArray(num);
}
private static void showArray(int[] a) {
if (a.length != 0) {
for (int i = 0; i < a.length - 1; i++) System.out.print(a[i] + ", ");
System.out.print(a[a.length - 1]);
}
System.out.println();
}
private static void sort(int[] a) {
for (int i = 0; i < a.length - 1; i++) for (int j = i + 1; j < a.length; j++) {
if (a[i] < a[j]) {
System.out.print("Exchange num[" + i + "]=" + a[i] + " for num[" + j + "]=" + a[j] + " ");
int b = a[i]; a[i] = a[j]; a[j] = b;
showArray(a);
}
}
}
}
366:デフォルトの名無しさん
09/10/17 07:41:30
>>365
すみません。
参考プログラムの穴に埋めるような形でお願いします。
367:デフォルトの名無しさん
09/10/17 08:32:57
参考プログラムをコピペしてブランクを埋めようとしたんだけど
なぜかコピーできなかったからクラス名とかだけ参考にしたよ
368:デフォルトの名無しさん
09/10/17 08:38:02
>>367
すみません。
この形式ではコピーできませんよね、失礼しました。
public static void main(String args[]){
int num[] = {23,76,48,93,16,34,87};
int num_work;
int i,j,n=7;
for( i = 0; i < n; i++)
System.out.print(num[i] + " , ");
System.out.println("\n \t----- Sort ----- ");
ここから下をお願いします。
369:デフォルトの名無しさん
09/10/17 12:16:48
パソコンを変えて環境変数をpathで設定したがプロントでjavaってやると英語が大量に原因がわかりません。
最後の部分コピペしてきました。
ommon Files\Roxio Shared\10.0\DLLShared\;C:\Program Files\Java\jdk1.6.0_13\bin
binのオブジェクト名のところC:\Program Files\Java\jdk1.6.0_16\bin
370:デフォルトの名無しさん
09/10/17 12:18:58
あ,13じゃなくて16になってます。スミマセン
それでも無理です
371:デフォルトの名無しさん
09/10/17 12:33:53
自己解決しましたスイマセンでした
372:デフォルトの名無しさん
09/10/17 12:42:15
>>369
全部貼りなさいよ!
373:デフォルトの名無しさん
09/10/17 13:07:04
【 課題 】C♯もしくはJAVAでBMI計算プログラムをvisual studio 2005 で作成
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】10月18日 日曜22時まで
【 補足 】できればC♯でお願いします。
374:デフォルトの名無しさん
09/10/17 13:11:15
>>373 web アプリケーションでお願いします。
375:デフォルトの名無しさん
09/10/17 13:54:19
>>373
マルチの上にJavaスレでC#希望とか死ねばいいのに
376:デフォルトの名無しさん
09/10/17 22:03:54
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月21日
【 Ver 】1.6.0_11
・課題
与えられたベクトルファイル(c.txt)を読み込み
1-normの結果を表示させるプログラムを作成せよ
途中までのソースとベクトルファイルです
URLリンク(rg550.hp.infoseek.co.jp)
URLリンク(kissho.xii.jp)
お願いします
377:デフォルトの名無しさん
09/10/17 22:25:36
>>368
class Kadai03_5 {
public static void main(String args[]) {
int num[] = {23, 76, 48, 93, 16, 34, 87};
int num_work;
int i, j, n = 7;
for (i = 0; i < n; i++)
System.out.print(num[i] + " , ");
System.out.println("\n \t----- Sort ----- ");
// 2重ループ(for文など)を用いる。(pp.202-203を参照)
for (int l = 0; l < num.length - 1; l++) for (int m = l + 1; m < num.length; m++) if (num[l] < num[m]) {
// 交換の条件を満たした場合に交換の要素を表示。
System.out.printf("Exchange num[%d]=%d for num[%d]=%d ", l, num[l], m, num[m]);
// 交換の実行
int nm = num[l]; num[l] = num[m]; num[m] = nm;
// 交換後の要素表示。(別の変数int kなどを用いてループで出力)
for (int k = 0; k < num.length; k++) System.out.print(num[k] + ", ");
System.out.println();
}
// ソート後の結果表示。
System.out.println();
System.out.println("\t----- Result ----- ");
for (int k = 0; k < num.length; k++) System.out.print(num[k] + " , ");
}
}
378:デフォルトの名無しさん
09/10/17 23:06:23
>>376
/* 操作するプログラム ここから */
double norm = 0;
for (double d : c) norm += Math.abs(d);
System.out.println(norm);
}
/* ここまで */
379:デフォルトの名無しさん
09/10/18 06:00:46
出力書式を使用するなら
System.out.println(norm);
を
System.out.println(String.format(shutsuryoku, norm));
とか
System.out.printf(shutsuryoku + "%n", norm);
とか
System.out.printf(shutsuryoku, norm);
System.out.println();
とか
380:デフォルトの名無しさん
09/10/18 14:25:50
【 課題 】
1・コマンドライン引数で2つの文字列を入力し、1番目に指定された文字列の中に2番目に指定された文字列が存在する場合は
「この文字列はあります。(○文字目)」と表示し、存在しない場合は「この文字列は存在しません」と表示しなさい。 入力文字数は、1番目の文字列は10文字以上とし、2番目の文字列は2文字以上4文字以内とする。
また、文字列は先頭から検索し、最初に見つかった文字のインデックスを表示することとする。。
2・任意の文字列を内部で指定し、コマンドライン引数で2つの文字列を入力する。
もし内部で指定した文字列に、1番目に指定した文字列が存在する場合は、その文字列を
2番目に指定した文字列と置き換えてから表示し、存在しない場合は「置き換えなし」と表示しなさい。
入力文字数は、1番目、2番目ともに4文字以内とする。また最初に内部指定文字列を表示し、
1番目の文字列が複数する場合は、すべて置き換わっていること。
3・コマンドライン引数で入力された文字列が
3文字以下なら、その文字列を20個文字列連結して表示
4文字以上なら”たくさん” を表示しなさい。
文字列連結の際はStringBufferクラスを使用しなさい
for文を使用しなさい
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月19日AM11
【 Ver 】java version "1.6.0_14"
【 補足 】3問ありますが、複数の条件が重なった場合の文法の書き方がわかりません。
よろしくお願いします
381:デフォルトの名無しさん
09/10/18 16:37:23
>>380
public class Kadai01 {
public static void main(String[] args) {
if(args[0].contains(args[1])){
System.out.println("「この文字列はあります。("+(args[0].indexOf(args[1])+1)+"文字目)」");
}else{
System.out.println("「この文字列は存在しません」");
}}}
public class Kadai02 {
public static void main(String[] args) {
final String str = "abracadabra";
if(str.contains(args[0])){
System.out.println("「この文字列はあります。("+(args[0].indexOf(args[1])+1)+"文字目)」");
System.out.println(str);
System.out.println(str.replaceAll(args[0], args[1]));
}else{
System.out.println("「置き換えなし」");
}}}
public class Kadai03 {
public static void main(String[] args) {
if(args[0].length()<=3){
StringBuffer sb = new StringBuffer();
for(int i=0;i<20;i++){
sb.append(args[0]);
}
System.out.println(sb.toString());
}else{
System.out.println("たくさん");
}}}
382:デフォルトの名無しさん
09/10/18 16:38:44
>>381
おっと、要らない行が混じっていた。
public class Kadai02 {
public static void main(String[] args) {
final String str = "abracadabra";
if(str.contains(args[0])){
System.out.println(str);
System.out.println(str.replaceAll(args[0], args[1]));
}else{
System.out.println("「置き換えなし」");
}}}
383:デフォルトの名無しさん
09/10/18 21:07:09
>>382
"abracadabra"なら大丈夫だけどstrに正規表現のメタキャラクタとかが含まれていた時のために、
str.replaceAll(java.util.regex.Pattern.quote(args[0]), args[1])
にしておいた方がいいんではなかろか。
384:デフォルトの名無しさん
09/10/18 21:23:34
【 課題 】ソースコードのプログラムに追加機能をつける
(機能はソースコードにあります)
【 形態 】2 Applet
【 期限 】10月22日
【 Ver java version "1.6.0_14
【 補足 】
ソースコードは
URLリンク(rg550.hp.infoseek.co.jp)
のjava810です。
385:デフォルトの名無しさん
09/10/18 21:47:16
URLリンク(rg550.hp.infoseek.co.jp)
386:デフォルトの名無しさん
09/10/18 21:56:01
>>381
ありがとうございます。
そのままの使用だとあまりにも為にならないため、少し自分なりに構文を変更し
作成しました。ありがとうございます。
387:デフォルトの名無しさん
09/10/18 22:08:14
>>384
失礼しました。正しいソースコードはjava811のものです。
388:デフォルトの名無しさん
09/10/19 00:43:01
>>378-379
ありがとうございました
389:デフォルトの名無しさん
09/10/19 06:24:36
>>384
ここら辺で躓いてたら中盤の掃除機問題とかに行く前に死んじゃうんじゃないか?
390:デフォルトの名無しさん
09/10/19 13:27:36
>>362
解答ありがとうございます
しかしこれだと2つほど型のエラーが出てくるのですが・・・
391:デフォルトの名無しさん
09/10/19 13:35:30
>>390
もう一度問題をあげておきます
URLリンク(www.dotup.org)
テンプレは>>381です
392:デフォルトの名無しさん
09/10/19 16:51:55
>>391
テンプレは>>361でした…何度もすみません
393:デフォルトの名無しさん
09/10/19 17:59:56
>>391
元のソースがジェネリクス以前だしバージョン1.6でコンパイルしてないだろ
>>384とか見てないようだしどうも同じカリキュラムを受けてる人間が2人来てるようだな
そんなことじゃ人工知能なんて全然理解できないぞ
394:デフォルトの名無しさん
09/10/19 18:05:31
× >>384とか見てないようだし
○ >>384とか過去ログを見てないようだし
dotupを使ってパッケージ名を削除しているの(>>312とかもそうだろう)と
rg550使ってるのとの二人だな
395:デフォルトの名無しさん
09/10/19 18:15:52
>>390
エラーくらい貼り付けろ
あと、>>394の言うようにコンパイラのバージョンがあってない。
>>1の"【 Ver 】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》"にしたがって確認しろ。
396:デフォルトの名無しさん
09/10/19 18:16:44
>>395
×>>394
○>>393
397:デフォルトの名無しさん
09/10/20 19:17:05
【 課題 】URLリンク(www1.axfc.net)
【 形態 】1. Javaアプリケーション
【 GUI 】制限無し
【 期限 】10月21日の15時まで
【 Ver 】1.6.0_07
【 補足 】課題4-1と4-2をお願いします。できれば両方ですが片方だけなら4-2をお願いします
398:デフォルトの名無しさん
09/10/20 19:27:01
>>397
ごめんなさい
×【 形態 】1. Javaアプリケーション
○【 形態 】Eclipse ver3.4.2
399:デフォルトの名無しさん
09/10/20 19:39:06
課題4-1とも4-2とも設問がどこにも書いてないし課題4-2の実行例だけしかないように見えるのは気のせいか
>>398はなぜ正しかったものをわざわざ誤った記述にするのか意味不明
400:デフォルトの名無しさん
09/10/20 19:43:52
>>397
URLのpdfに課題番号なし
一応 (a, b, c) (d, e, f) の内積は ad + be + cf ってのは覚えてるけど
ベクトル同士の畳込みについて計算方法うp
401:デフォルトの名無しさん
09/10/20 19:44:40
そんなんだからこうなったんだね
すっごくわかるよー
402:デフォルトの名無しさん
09/10/20 20:15:18
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月21日AM12
【 Ver 】java version "1.6.0_14"
【 補足 】3問です。本日1日悩みましたが、わかりませんでした。
いかなる場合でも予期しない例外が出ないこと。
①
コマンドライン引数に入力された日付から現在日まで何日かを計算し、「今日まで●日」と表示しなさい。
現在日より入力された日付が小さい場合は「-(マイナス)」をつけて表示すること。
(日付その他のチェックも行う事)
②コマンドライン引数に入力された年と月から、その月が何日まであるかを表示しなさい。
(日付その他のチェックも行う事)
③コマンドライン引数に入力された日付が、入力された日付の年の何番目の週かを
「●年の●週目」と表示しなさい。(●年の"●"は入力された日付の年)
(日付その他のチェックも行う事)
403:デフォルトの名無しさん
09/10/20 20:21:28
例外が投げられっぱなしにならないようにcatchして適切な処理をするという意味でなくて、
どんな例外も投げられること自体がないように予防線を張ったコードにするってこと?
404:デフォルトの名無しさん
09/10/20 20:28:11
>>397の畳み込みのpdfです
URLリンク(www1.axfc.net)
課題については勘違いしてたみたいです。1問だけです
405:デフォルトの名無しさん
09/10/20 20:29:33
>>403
自分なりに考えられるキャッチしたものは、その症状を表示し、
プログラムを終了させる感じです。
406:デフォルトの名無しさん
09/10/20 20:31:56
>>404
課題が書かれてないし
407:デフォルトの名無しさん
09/10/20 21:14:22
>>397
URLリンク(codepad.org)
408:おねがいします
09/10/20 21:36:14
【 課題 】文字列"GPIB-002.70V"から文字列"-022.70"を取り出して、
その文字列をDoubleオブジェクトにし、それをdouble型
実数値に変換して数値を表示している。空欄を埋めよ。
public class Kadai{
public static void main(String a[ ]){
String s = "GPIB-022.70V",ds;
ds = s.substring( ① );
Double dd = ② ;
double d = ③ ;
System.out.println(d);
}
}
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】 今週中
【 補足 】ど素人なのでよろしくお願いします。
409:たのみます
09/10/20 21:50:16
【 課題 】 半径が10ピクセルの黒塗り円がマウスをドラッグすることで、
円がマウスポインタに追従するように、次の空欄を埋めて
Javaアプレットを完成させなさい。
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class Kadai3ee extends ① {
int x = 10 , y = 10;
public void init( ) {
②
}
public void paint(Graphics g){
③ (x,y,20,20);
}
public void mouseDragged (MouseEvent me) {
④
⑤
⑥
}
public void mouseMoved (MouseEvent me) { }
}
【 形態 】 2. Applet
【 GUI 】 ?
【 期限 】今週中
【 補足 】①~⑥が空欄です。
410:たのみますNo.3
09/10/20 22:13:02
【 課題 】
マウスをクリックして描画の起点とし、そのままマウスをドラッグしたときに楕円を逐次描き、マウスボタンを放したとき最終的に
終点を決定して楕円を描くように、次の空欄を埋めてJavaアプレットを完成させなさい。ただし、マウスを左や上にドラッグしても
楕円を表示するように起点と終点を選択するように処理する事。
importは省略
public class Kadai3gg extends①{
int x1,y1;
public void init( ){
②
③}
public void mouseDragged(MouseEvent me){
int x0,y0,x2,y2;
Graphics g = this.getGraphics( );
g.clearRect(0,0,300,300);
x2 = ④
y2 = ⑤
if(x1>=x2) ⑥ else ⑦
if(y1>=y2) ⑧ else ⑨
g.drawOval(⑩,⑪,⑫,⑬);}
public void mouseMoved(MouseEvent me) {}
public void mousePressed(MouseEvent me){
⑭
⑮
}
public void mouseReleased(MouseEvent me)←この他の文も省略
}
【 形態 】 2. Applet
【 GUI 】 ?
【 期限 】今週中
【 補足 】①~⑮が空欄です。
411:たのみますNo.4
09/10/20 22:40:26
【 課題 】画像を表示し、マウスをクリックすればその場所に画像が移動するように、次の空欄を埋めてJavaアプレットを完成させなさい。
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Kadai3ff extends ① {
② img;
int x=10 ,y=10;
public void init(){
img = ③ (getCodeBase(),"a.gif");
④
}
public void paint(Graphics g)
{
⑤(img,x,y,this);
}
public void mouseClicked(MouseEvent me){
⑥
⑦
⑧
}
public void mouseReleased(MouseEvent me){}←この他の文省略
}
【 形態 】 2. Applet
【 GUI 】 ?
【 期限 】今週中
【 補足 】①~⑧が空欄です。
何度も何度も本当にすみません、理解に苦しんでいるため書き込まさせていただきました。
空欄のところの具体的なコードをいただけるとありがたいです。最初の2つの名前にナンバーを
つけ忘れました。No.1~No.4までよろしくお願いします。
412:デフォルトの名無しさん
09/10/20 22:45:32
ここまで穴だらけだと一から作り直したい
中途半端に識別子が決められてるとこうぇぇ
413:たのみます
09/10/20 22:47:34
穴埋め課題なもので・・・。
すみません&お願いします。
414:デフォルトの名無しさん
09/10/21 00:53:23
あれ,結構前にも同じ課題があがったらしいな
>>409
URLリンク(detail.chiebukuro.yahoo.co.jp)
>>410
URLリンク(detail.chiebukuro.yahoo.co.jp)
>>411
みつからね
なんとかなるんでね?
415:デフォルトの名無しさん
09/10/21 02:46:15
>>407
起動確認できました。
ありがとうございました。
416:デフォルトの名無しさん
09/10/21 12:52:56
【 課題 】URLリンク(rg550.hp.infoseek.co.jp) 813.txt
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】その他
【 期限 】10月22日
【 Ver 】1.6.0-14
417:デフォルトの名無しさん
09/10/21 13:41:53
application/octet-stream
ほお。
418:デフォルトの名無しさん
09/10/21 14:17:33
>>416
URLリンク(codepad.org)
419:デフォルトの名無しさん
09/10/21 14:53:05
メモ帳を作成していますができません。メニューにファイルとあって、
それをクリックするとメニューアイテムの新規作成、ファイルの読込、ファイルの保存と
表示されます。外観はwinのメモ帳とほぼ同じです。
【 課題 】
初期実行画面(メニューバーの"ファイル"をクリックした状況が下記のように表示される
簡単なメモ帳機能を有するプログラムを作成しなさい。(写真が載っている。)
TinyMemo、Panels、FileIOの3個のクラスで実現してください。ただし、Panelクラスでは部品
(MenuBar,TextAreaなど)定義を行い、FileIOクラスでは、ファイルの読込、保存の処理を
行います。
新規作成アイテムをクリックすると、画面が初期化(削除)されるようにしてください。
また、ファイルの読込、保存で、ファイル名の選択はFileDialogを使ってください。
【 形態 】1. Javaアプリケーション(main()で開始)/
【 GUI 】1. AWTのみ
【 期限 】11月1日まで
よろしくお願いします。
420:デフォルトの名無しさん
09/10/21 23:11:46
穴埋めとかクラスの数を指定とか、うざい課題が多いな
クラス数とか指定する必要なんてないだろうに
421:デフォルトの名無しさん
09/10/22 01:33:41
あなたの宿題じゃないんですからうざければわざわざやらなくてもいいんですよ
422:デフォルトの名無しさん
09/10/22 04:42:35
>>421
おかげさまで、やらないことにしました。
423:デフォルトの名無しさん
09/10/22 22:33:39
>>419
URLリンク(rg550.hp.infoseek.co.jp)
1.6.0_16+WinXPでTextAreaの最末尾が改行だと
コンポーネントをマウスクリックするなどすると
その最後の改行がされないように見える現象が起きるけどAWTの不具合なのかな
データ的に消えるわけではないしカーソルキーでカレットを次の行に移動できるけど
Frame f = new Frame();
f.add(new TextArea());
f.pack();
f.setVisible(true);
単にフレームに貼り付けたこれだけでも再現するし1.5.0_21でも同じだった
最近AWTコンポーネントをほとんど使わないので気がつかなかったがうちの環境だけ?
424:デフォルトの名無しさん
09/10/23 00:10:02
【 課題 】
(1) クラスQintegerを改良し、更に長い桁の計算ができるようにせよ。
(2) 改良したQintegerを利用し、Qfactで100!の正確な値を計算せよ
・クラスQintegerの仕様は変更しない(コンストラクタ等の追加は可)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】10月25日(日)
【 Ver 】1.6.0_15
【 補足 】
[1]Qinteger.java(sample) URLリンク(rg550.hp.infoseek.co.jp)
[2]Qfact.java(sample)+Qintegerの補足説明 URLリンク(rg550.hp.infoseek.co.jp)
[3] [1]を[2]の説明に基づいて自身で作成したQinteger.java URLリンク(rg550.hp.infoseek.co.jp)
よろしくお願いします
425:デフォルトの名無しさん
09/10/23 00:41:18
もうちょいちゃんと説明書いてくれ。
[3]のコードを期待した動きをするように直せばいいんだな?
先頭コメントつけた2行を直した。
public Qinteger add(Qinteger n){
/*貼り付けできないから省略....*/
for(i=4; i<MAXARR; i++){
temp = (long)num[i] + (long)n.num[i] + (long)carry ;
/*上の行に修正*/ temp = (long)num[i] + (long)carry ;
rnum[i] = (int) (temp % MAXINT) ;
carry = (int) (temp/MAXINT) ;
}
return new Qinteger(rnum);
}
public String toString(){
java.text.DecimalFormat df = new java.text.DecimalFormat("000000000");
StringBuilder rs = new StringBuilder();
for(int i=MAXARR-1; i>=0; i--)
rs.append(rs.length() == 0 ? trimzero(df.format(num[i])) : df.format(num[i]));
/*上の行に修正*/ rs.append(trimzero(df.format(num[i])));
return new String(rs);
}
426:デフォルトの名無しさん
09/10/23 00:43:53
/*上の行に修正*/
で始まってる行消してコンパイルしてくれ。
427:デフォルトの名無しさん
09/10/23 00:48:44
>>424
ごめん。もう一箇所直してた。
private static String trimzero(String arg){
int i = 0, n = arg.length();
while( i < n && arg.charAt(i) == '0' ){
i++ ;
}
return( arg.substring(i) );
}
428:424
09/10/23 01:10:53
>>425
おかげ様で無事にコンパイルでき動かすことができました
わざわざこちらのコードを訂正していただく形で素早い回答ありがとうございました
429:419
09/10/23 05:49:21
>>423 ありがとうございます。
430:デフォルトの名無しさん
09/10/27 01:48:44
【 課題 】URLリンク(uploader.sakura.ne.jp)
【 形態 】1. Javaアプリケーション
【 GUI 】4. 制限なし
【 期限 】10月27日
【 Ver 】1.6.0_14
【 補足 】携帯で撮影したものを繋げました
431:デフォルトの名無しさん
09/10/27 02:12:59
歪んでるはコントラスト低いはでやる気が出にくい課題だなw
432:デフォルトの名無しさん
09/10/27 03:09:44
>>430
URLリンク(rg550.hp.infoseek.co.jp)
433:デフォルトの名無しさん
09/10/27 11:03:00
>>432
ありがとうございます
434:デフォルトの名無しさん
09/10/27 12:23:07
【 課題 】URLリンク(www1.axfc.net)
【 形態 】1. Javaアプリケーション
【 GUI 】4. 制限なし
【 期限 】10月27日
【 Ver 】1.6.0_07
435:デフォルトの名無しさん
09/10/27 14:50:12
できれば5-2もお願いします
436:デフォルトの名無しさん
09/10/27 18:33:56
はやくしろよ!時間なくなるだろ!
437:デフォルトの名無しさん
09/10/27 19:53:36
>>434ですが>>436ではありません
438:デフォルトの名無しさん
09/10/28 13:30:44
URLリンク(rg550.hp.infoseek.co.jp)
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】2. Applet
【 GUI 】制限なし
【 期限 】091029
【 Ver 】1.6.0_14もしくは16
439:デフォルトの名無しさん
09/10/28 13:34:20
>>434じゃないけどこの課題の5-1のレベル3までできたらお願いしたいです。
期限は10/29の夜9時までです
440:デフォルトの名無しさん
09/10/28 14:34:40
>>439
何でだよ・・
まぁいいや、やってやるからちょっと待ってろ。
441:デフォルトの名無しさん
09/10/28 16:14:34
>>438
すいませんファイルは819です
442:デフォルトの名無しさん
09/10/29 12:11:41
【 課題 】h URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】2. Applet
【 GUI 】制限なし
【 期限 】11/3
【 Ver 】1.6.0_16
よろしくおねがいします
443:デフォルトの名無しさん
09/10/29 17:18:50
【 課題 】(nの階乗 < 10000)が成り立つ最大の n を求める.ループは while 文を利用すること.
n の階乗とは, n! := 1×2×3×…×n である.[ヒント]: 10000 を超えるまで順に階乗の n を増やし,階乗が 10000 を超えた時点で最後の n を乗算する前の n を出力する.与えられた課題文をそのまま書きます
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4 【 期限 】29
444:デフォルトの名無しさん
09/10/31 00:06:20
【課題】課題は3つあります。
URLリンク(www.dotup.org)
【形態】Javaアプリケーション【GUI】制限なし
【期限】11/2
【Ver】1.6.0_16
宜しくお願いします。
445:デフォルトの名無しさん
09/11/01 11:20:12
>>444
リンクが死んでいるよ
446:デフォルトの名無しさん
09/11/01 14:14:15
>>444です。リンク先の障害でファイルが削除されてしまったので再度アップしました。
宜しくお願いします。
URLリンク(www.dotup.org)
>>445
ご指摘有り難うございました。
447:デフォルトの名無しさん
09/11/01 15:10:01
>>446
URLリンク(rg550.hp.infoseek.co.jp)
最低限の処理しかやってない
気になるとこあったら自分で直してね
448:デフォルトの名無しさん
09/11/01 21:01:09
>>447
少し修正しましたが無事実行例通り動作しました。
有り難うございました。
449:デフォルトの名無しさん
09/11/02 17:05:52
【 課題 】次の条件を満たすjavaプログラムを作成しなさい。
(1)分岐構造と反復構造をともに一つ以上持つ
2)一つ以上のメソッドを利用
【 期限 】提出期限は11/2 19:30
【 補足 】できるだけ既存のものとかぶらない
お願いします。
450:デフォルトの名無しさん
09/11/02 22:23:51
既存てなんだよw
451:デフォルトの名無しさん
09/11/02 22:57:11
変態的な書き方がお望みか?
452:デフォルトの名無しさん
09/11/03 01:29:50
だれか>>442をお願いします
453:しょしんしゃです
09/11/03 08:54:39
public class ans443 {
public static void main(String[] args) {
int i=1, a=1;
while(a<10000) {
System.out.println(i+" "+a);
a *= i++;
}
System.out.println("ans="+(i-1));
}
}
454:デフォルトの名無しさん
09/11/06 14:38:15
【 課題 】URLリンク(rg550.hp.infoseek.co.jp) 822.txt
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】11/9 15:00
【 補足 】よろしくお願いします。
455:デフォルトの名無しさん
09/11/06 17:57:10
>454
import java.util.*;
public class P68_454 {
public static void main(String[] args) {
System.out.printf("正の整数を入力してください: ");
Scanner scanner = new Scanner(System.in);
int input = scanner.nextInt();
System.out.printf("%dは" + (isPrime(input) ? "素数です。%n" : "素数ではありません。%n"), input);
System.out.printf("%dの最小の素因数は%dです。%n", input, minimumDivisor(input));
}
private static boolean isPrime(int input) {
if(input == 1) return false;
for(int i=2; i<input; i++) {
if(input % i == 0) return false;
}
return true;
}
private static int minimumDivisor(int input) {
if(input == 1) return 0;
for(int i=2; i<input; i++) {
if(input % i == 0) return i;
}
return 0;
}
}
456:デフォルトの名無しさん
09/11/06 23:24:28
【 課題 】クラスQintegerで掛け算を行うメソッドtimesを作成し、n!の結果を求めるプログラムQfact.javaがBigIntegerを用いた場合(Bfact.java)の計算速度に近づけるようにせよ。
URLリンク(www.dotup.org)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】11月8日(日)まで
【 Ver 】1.6.0_16
【 補足 】上記ファイルのQinteger.javaに含まれるメソッドtimesは自分で作成途中のものなので無視して構いません
よろしくお願いします