★★ Java の宿題ここ ..
[2ch|▼Menu]
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の境目になる線は太くする。)
Wikipedia項目リンク この画像のようなデザイン
問題として与えられている数字をマスに入力し、「解を求める」ボタンを押すことで残りのマスに数字を埋めていく。
求めた数字の文字色を青色とする。
リセットボタンを用意し、白紙のマスに戻す機能を付けること。
【 形態 】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煤ix-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
【 用語 】前進消去=行列の掃き出しです。これの前半部分です

Wikipedia項目リンク

【 補足 】一応、作っては見たもののコンパイルエラーが起きてしまいました

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で初期化した方がいいと思う


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5042日前に更新/316 KB
担当:undef