★★ Java の宿題ここ ..
[2ch|▼Menu]
64:デフォルトの名無しさん
09/07/29 09:55:12
>>63
double に変えたって整数は使えるだろ
正確さが欲しいなら BigDecimal でも使っとけ

65:デフォルトの名無しさん
09/07/29 10:49:04
>>61
BigDecimal化変更分のみ
URLリンク(rg550.hp.infoseek.co.jp)

66: ◆MvRbZL6NeQ
09/07/29 15:13:42
>>64-65
書き込みが遅れてすみません.
ありがとうございました!

67:デフォルトの名無しさん
09/07/29 21:50:27
【 課題 】与えられたクラスを利用して,複数の図形を描くクラスを作成する
      ※詳しい内容や利用するプログラムは
      URLリンク(rg550.hp.infoseek.co.jp)
      内のsetsumei.txtに書いてあります。
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】7/30 15:00
【 Ver  】java version 1.6.0_14
【 補足 】一日中考えてて今も頑張ってますが、
      javaに馴染みがなくてさっぱり分かりません(;つД`)
      よろしくお願いします。

68:デフォルトの名無しさん
09/07/30 00:48:21
>>67
とりあえず、TurtleRectangle.javaがコンパイル通んないんだけど?

69:デフォルトの名無しさん
09/07/30 00:59:32
>>67
問題文の
> // 初期座標(100, 200), 速度 10, 長さ 15, 赤色
> remocons[3] = new TurtleHexagon(100, 200, 10, 15);
> remocons[3].setColor(java.awt.Color.BLACK);
の添え字は4の間違いだな。

70:デフォルトの名無しさん
09/07/30 01:00:33
>>67
TurtleHexagon.javaが六角形のはずが五角形を描くし

71:デフォルトの名無しさん
09/07/30 01:09:12
>>67
とりあえず、引数とループはこんな。
public static void drawFigures(TurtleRemoCon[]trcs ) {
while (true) { // 無限ループ
// 引数の配列を順番に操作し、
// step() メソッドを利用して図を書かせる
for(TurtleRemoCon t:trcs){
t.step();
}
}
}



72:67
09/07/30 01:22:31
67です。
アップした課題ですが、先程自力で完成させることが出来ました。
レス下さったのにすみません&ありがとうございます!

そしてたった今動作確認していて、六角形と書いたにも関わらず、
なぜか五角形の動きをしているのに気付いて、茶を吹いていた所です。
アップ前に見直したはずなのにこの有様は酷い…orz
TurtleRectangle.javaは自分の方ではエラーは出なかったのですがなぜだろう…


73:デフォルトの名無しさん
09/07/30 01:37:28
>>72
そいつだけ文字コードがEUCになってたぞ。
ついでに、Turtle.java の 97行目で
java.util.ConcurrentModificationException が発生するぞぼけ
と講師に言っとけ。
いまどき
private Vector turtles; // must be atomic.
なんて書いてちゃあな。

74:デフォルトの名無しさん
09/07/30 23:48:55
【 課題 】じゃんけんとその結果を記録する
URLリンク(files.or.tp)
      
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】8/5
【 Ver  】java version 1.6.0_14


75:デフォルトの名無しさん
09/07/31 02:35:35
すいません、>>67の課題の中にある問題3なんですが、
どういうことを書けばいいんでしょうか。
例外処理の説明?


76:デフォルトの名無しさん
09/07/31 02:47:34
【 課題 】タートルグラフィックスを描写するプログラムを作成する。
      URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】8/2
【 Ver  】 java version 1.6.0_14
【 補足 】どう手を付けたらいいのか分からない状態です…
       実装するのはright left forwardの3つだけでいいみたいです。
       よろしくお願いします。

77:デフォルトの名無しさん
09/07/31 04:05:50
>>76
とても大人が書いたとは思えない文章だな…

78:デフォルトの名無しさん
09/07/31 17:24:16
>>76
URLリンク(rg550.hp.infoseek.co.jp)
リピートとか出来ないし、字下げとかも未対応

79:デフォルトの名無しさん
09/07/31 22:18:53
>>78
Commandパターンは何処へ行った?

80:デフォルトの名無しさん
09/07/31 23:50:07
>>79
特に要求されてないし

81:デフォルトの名無しさん
09/08/01 02:36:32
>>76
URLリンク(rg550.hp.infoseek.co.jp)
リピートしてみた。

>>79
デザインパターンわかんない

82:デフォルトの名無しさん
09/08/01 03:35:43
>>78 >>81
まぁ、学生が作ったっぽくはあるな

83:デフォルトの名無しさん
09/08/01 03:47:10
まじめに作ろうかと思ったけど、学生がつくったっぽさがあった方がいいのか
そこは気付かなかった

84:デフォルトの名無しさん
09/08/01 15:32:34
>>74お願いします。

85:デフォルトの名無しさん
09/08/01 16:43:31
>>74
このjavadoc通りの構成にして、どう実行したらどう出力されればいいんだ?

86:デフォルトの名無しさん
09/08/01 18:05:15
ここに出されてる宿題って成果物の仕様とかがあいまいでどこまでつくればいいのか
分からない

87:デフォルトの名無しさん
09/08/01 18:34:33
>>86
javaで入門レベルの宿題が出来ないやつが質問してるんだから・・・

88:デフォルトの名無しさん
09/08/01 20:00:24
>>74
こんなんでいいか
URLリンク(rg550.hp.infoseek.co.jp)

89:デフォルトの名無しさん
09/08/02 14:05:09
>>88
少し自分で変えることで完璧なものができました。
どうもありがとうございました。
できましたら、学校の講師に見つかってしまうかもしれないので、
うpろだのファイルを削除してもらえたら嬉しいです。
勝手ではありますが、お願いします
本当にありがとうございました。

90:デフォルトの名無しさん
09/08/02 14:58:18
>>89
まだ時間はある。
「少し」と言わずあちこちをいじって動かしてみれば、それが「理解」することになるし、
プログラムが自分のモノになるぞ。

91:デフォルトの名無しさん
09/08/03 00:39:26
問題と回答を各所に無断転載しました

92:デフォルトの名無しさん
09/08/03 01:14:03
>>89
バレるのが怖いなら自分でやれよw

93:デフォルトの名無しさん
09/08/03 03:20:44
【 課題 】
RacingCar.javaとRaceManager.javaから成るカーレースゲームを作れ
車1台で走るバージョンのソースと,複数台を競走させるバージョンのクラスファイルを配付
車1台バージョンを複数台競走バージョンに改造せよ
【 形態 】
1. Javaアプリケーション(main()で開始)
【 GUI  】
4. 制限なし
【 期限 】
提出期限:8月4日23:59まで
【 Ver  】
1.6.0_11
【 用語 】
【 補足 】
添付ファイル
URLリンク(rg550.hp.infoseek.co.jp)
お願いします

94:デフォルトの名無しさん
09/08/03 06:38:47
>>93
import java.io.*;

// レーシングカーによるレースの管理
public class RaceManager{
public static void main(String args[]) throws IOException{
int goal = args.length>0?Integer.parseInt(args[0]):72;
RacingCar.setGoal(goal); // ゴールまでの距離の設定
final int ksize = 9;
RacingCar[] rcs = new RacingCar[ksize]; // レーシングカーの生成
for(int i=0;i<ksize;i++){
rcs[i]=new RacingCar();
}
BufferedReader br =
new BufferedReader(new InputStreamReader(System.in));
boolean flag = true; // レース継続/終了フラグ
System.out.println("START!!");
while(flag){
br.readLine(); // キーボードからの入力を待つ
for(RacingCar rc:rcs){
flag = rc.run() & flag; // 車を走らせる。ゴールしたらfalseが返るので,flagもfalseになる rc.run() & flag
}

for(int i=0; i<goal; i++){
System.out.print("-");
} // 走行1回分の区切り線を表示
System.out.println();
}
System.out.println("FINISHED!!");
}
}
こんな?

95:デフォルトの名無しさん
09/08/03 07:36:53
>>93
つjad

96:デフォルトの名無しさん
09/08/03 19:55:15
>>94
ありがとうございます。間に合いました。
>>95
それは何ですか?
reflectorみたいなものですか?

97:デフォルトの名無しさん
09/08/04 11:22:18
>>96
ggrks

98:デフォルトの名無しさん
09/08/06 17:11:21
>>97
yfrks

99:98
09/08/06 17:12:57
>>96のみす

100:デフォルトの名無しさん
09/08/07 11:54:52
夏休み〜夏休みだよ〜

101:デフォルトの名無しさん
09/08/07 20:55:45
夏休みの宿題の駆け込みとかあったらイヤだな

102:デフォルトの名無しさん
09/08/08 15:34:04
jad知らないもんなんだな。もしかしたらeclipseも知らないのかね。
学生ってまぞいことやってるんだな。

103:デフォルトの名無しさん
09/08/08 15:48:47
>>102
学生に割り当てられるショボイPCだと、最新のeclipseはきついかも知れない。

104:デフォルトの名無しさん
09/08/08 16:19:51
>>102
昔Jadclipseってのがあったな。今もあるのか知らないけど。

>>103
eclipseはごちゃごちゃプラグイン入れなければ、
バージョン3の方が2の時より軽い気がするが、気のせいか。
10年程前か、始めて使いはじめた頃は正直遅くて使えなかったな。

105:デフォルトの名無しさん
09/08/08 18:09:21
>>102
つーか、学生にclassファイル渡してこれと同じのを作れって言う
講師ともどもってことだなw

106:デフォルトの名無しさん
09/08/10 16:59:12
わからないことが多すぎて
もう自分に向いてない気がしてきた。
問題も全部英語だし、その意味すらもあやふやだし
この科目の単位さえ取れればいいのに。

107:デフォルトの名無しさん
09/08/10 17:52:03
>>106
講師に言え

108:デフォルトの名無しさん
09/08/10 18:22:21
なんか、延々、オーストラリアかどこかの通信制大学の課題を投げてるやつがいたっけ。

109:デフォルトの名無しさん
09/08/11 21:03:20
abstract class Animal {
private static int count;
public static void increment() { count++; }
public static int getCount() { return count; }
abstract void noise();
}
class Dog extends Animal {
public Dog() {};
public void noise() {
System.out.println("Woof");
increment();
}
}
class Cat extends Animal {
public Cat() {};
public void noise() {
System.out.println("Meow");
increment();
}
}
public class Counter{
public static void main(String[] args) {
Animal[] a = {new Dog(), new Cat(), new Cat(), new Dog(), new Dog()};
for (int i = 0; i < a.length; i++)
a[i].noise();
System.out.println(Dog.getCount() + " woofs and " + Cat.getCount() + " meow");
}
}
なんかおかしいところありますか?

110:デフォルトの名無しさん
09/08/11 21:50:09
>>109
スレ違い。

111:デフォルトの名無しさん
09/08/11 21:57:10
>>109
おかしくはないが、思っているようには動かんだろうな。

112:デフォルトの名無しさん
09/08/11 23:29:19
暇だから弄るか

>>109
プログラムは書かれている通り動いたぞ
>Woof
>Meow
>Meow
>Woof
>Woof
>5 woofs and 5 meow

113:デフォルトの名無しさん
09/08/12 00:33:54
>>110-112
ありがとうございました。
どう変えれば
3Woofs and 2Meowになるのでしょうか?

114:デフォルトの名無しさん
09/08/12 00:46:07
>>113
スレ違いだといってるだろうが
>>1を見るか質問スレへ行くかしろ

115:デフォルトの名無しさん
09/08/12 01:12:40
>>113
自分で考えろ。以上。

116:デフォルトの名無しさん
09/08/12 17:41:03
【 課題 】3×3のマス目で行うマルバツゲームの作成。人対コンピュータで、難易度の選択が可能。
レベル1 だれでも勝てるようなレベル レベル2 人間と互角 レベル3 勝つことは不可能に近い
【 形態 】2. Applet
【 GUI  】4. 制限なし
【 期限 】8月22日 正午まで
【 Ver  】java version "1.6.0_13"


117:デフォルトの名無しさん
09/08/12 17:55:27
>>116
ええと、人間なら勝敗はつかないゲームなんだけど・・・
Wikipedia項目リンク

118:デフォルトの名無しさん
09/08/12 17:59:03
3x3のマルバツゲームなら最善手で引分けになる
そして最善手で進めるのは普通の人間でも十分可能
つまり人間と互角のレベルと
勝つことは不可能に近い=引き分けになってしまうレベルは同じくらいだろう
どんな人間を想定しているのか知らないがレベル1とレベル3だけでいいんでは?
人間と互角っていうのがあやふや過ぎる

119:デフォルトの名無しさん
09/08/12 17:59:09
>>116
これ出した奴はただのアホだな。

120:デフォルトの名無しさん
09/08/12 18:14:32
>>119
「○×ゲームつくれ、あと、工夫したら加点」くらいの課題だったのでは?

121:デフォルトの名無しさん
09/08/12 19:08:38
>>120
出題者乙

とか言ってみたり

122:デフォルトの名無しさん
09/08/12 22:57:27
>>116
レベル1:人間先手で、交互に置いて、最終的に多く置けたほうが勝ち
レベル2:特定のマスをランダムに決めておいて、そこに置いたほうが勝ち
レベル3:人間先手で、交互に置いて、最終的に少なく置いたほうが勝ち

123:デフォルトの名無しさん
09/08/12 23:33:19
それ既にマルバツゲームじゃなくね?w

124:デフォルトの名無しさん
09/08/12 23:36:26
そうか、仕様策定からはいるわけか。。。
うまいな

125:デフォルトの名無しさん
09/08/13 21:09:07
引き分けは後手勝ちにすればいんじゃね?

126:デフォルトの名無しさん
09/08/13 21:22:21
人間ってなんだろう?

127:デフォルトの名無しさん
09/08/14 00:01:21
>>125
それで、レベル1は人間が後手、レベル2はランダムで後手が決まり、
レベル3はコンピュータが後手ということですね。

128:デフォルトの名無しさん
09/08/14 00:39:21
期限まで時間がまだあるから難易度についての詳細か仕様変更の>>116のレス待ちだな

129:デフォルトの名無しさん
09/08/14 00:59:09
マルバツゲームをするときは、相手に揃えさせたら勝ちって風にすることがある


130:デフォルトの名無しさん
09/08/14 01:04:08
>>129
その場合でも先攻後攻ともに最善を尽くせば引き分けになる

131:デフォルトの名無しさん
09/08/14 14:24:55
先手が真ん中取れば相手の反対側に打っていけば絶対そろわないしな

132:デフォルトの名無しさん
09/08/14 14:30:55
引き分けたら乱数で決めちゃえ

133:デフォルトの名無しさん
09/08/15 18:50:39
>>116

URLリンク(rg550.hp.infoseek.co.jp)

EASY:負けるように負けるようにと動く
HARD:最悪でも引き分けに持ち込む
NORMAL:基本的にHARDとして振舞うがたまにミスる(ミスるところが人並み)
というようにした
めんどくさいのでユーザは常に先手

改良の余地多し
特に メモリを喰いすぎる点がまずい
そこを半端に対策練って変に高度になってしまったとこもまずい

134:デフォルトの名無しさん
09/08/16 01:15:35
【 課題 】JPEG圧縮データからBMP画像を生成するプログラム。
      ただし、ハフマン復号化、逆量子化、逆DCT変換の処理は自ら作成する。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】4. 制限なし
【 期限 】8月いっぱい
【 Ver  】java version "1.6.0_13"


135:134
09/08/16 01:35:35
御免!!これも頼みます。

これは一応なんとなくはできてるんだけど、自信がないので。

【 課題 】BMP画像からJPEG圧縮データ生成するプログラム。
      ただし、DCT変換、量子化、ハフマン符号化の処理は自ら作成する。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】4. 制限なし
【 期限 】8月いっぱい
【 Ver  】java version "1.6.0_13"

136:デフォルトの名無しさん
09/08/16 03:53:50
>>135
自ら作成するというのが死ぬほど難しいな。

137:デフォルトの名無しさん
09/08/16 04:01:29
jpegに関する資料とかあればやってくれる人いるかも

138:134
09/08/16 04:21:48
jpeg圧縮のプログラムは↓を参考にしてみた。ってかこれ一応できてるけど。

URLリンク(www.geocities.co.jp)

jpegのファイル構造は↓にある

URLリンク(hp.vector.co.jp)

あと↓には詳しいアルゴリズムが載ってる

URLリンク(www.marguerite.jp)

一番苦労しそうなのが、jpegデータからハフマン復号するところかな!?

どうか、よろしく頼みます。

139:デフォルトの名無しさん
09/08/16 09:55:07
既にハードチップに組み込まれてるほど普及してるのになんでまたjavaで再生産するの?
それよりjpegのアルゴリズムのコツをまとめたサイトを作るほうに時間使ったほうが断然いいんじゃないのか。

140:デフォルトの名無しさん
09/08/16 13:43:44
Palm用にアセンブラで JPEG デコーダ作ったことあったな・・・
その情熱はもう無いわ

141:デフォルトの名無しさん
09/08/16 17:09:04
【 課題 】ろだ2の783でうpしてあります。
【 形態 】1
【 GUI  】4
【 期限 】8月28日まで
事情があり授業にほとんど出れてないので、ほとんどわかりません。。
一応参考書は開いてみたのですが、自力でできる気がしないのでよろしくお願いします。

142:デフォルトの名無しさん
09/08/16 17:18:26
>>141
授業出ないと学費払ってる親が泣くぞ.

143:141
09/08/16 17:57:08
>>142
すみません、やむを得ない事情がありまして。。
よろしくお願いします。

144:デフォルトの名無しさん
09/08/16 18:23:33
>>141 に限らずだが。
確かに>>1に添った書き方にはなってるがな。
もうちょっと、せめてどんなレベルなのか(じゃんけんなのか電卓なのかjpedCODECなのか程度)
一言でいいから書いといて貰えないか。
出来そうもないようなモノをわざわざダウンロードして中身みる手間をかけずにすむ。

145:デフォルトの名無しさん
09/08/16 20:00:38
学校も高校・高専・専門・大学一般・大学理工に分けてくれると判り易いな

146:デフォルトの名無しさん
09/08/16 20:57:08
たんなるテキストデータだからDLしなくてもブラウザで見れる
URLリンク(rg550.hp.infoseek.co.jp)

147:デフォルトの名無しさん
09/08/17 10:38:10
>>141
URLリンク(rg550.hp.infoseek.co.jp)

148:tor-proxy
09/08/17 17:51:51
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その3
『いつもサボってばかりのキャップがウゼえ』

スレリンク(news4vip板) ID:PVAf+dux0 = 自動焼人 ★
> 71 :以下、名無しにかわりましてVIPがお送りします [sage] :2009/08/10(月) 00:58:57.28 ID:PVAf+dux0
> >>69
> 大変って言うか
> 毎日、報告されたのを見て、判断して、処理して、完了報告して、以下ループ。
> ちょっとでもミスすると、普段は作業もしてないキャップさんたちがさんざん文句言ってきて
> その言いわけを考えないと、キャップはく奪されたりアカウント凍結されたりするから
>
> 登録されてから一年以上経って、やっといいたいこと言えるようになってきたよ。



----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
スレリンク(sec2chd板)
にて自動焼人 ★までご連絡ください

149:デフォルトの名無しさん
09/08/24 13:14:28
サーブレットプログラミングに関する宿題の質問は受け付けていませんか?


150:デフォルトの名無しさん
09/08/24 13:16:57
>>149
【 形態 】3. Servlet

151:デフォルトの名無しさん
09/08/24 20:06:06
>>149
>>1

152:名無しさん@そうだ選挙に行こう
09/08/30 13:36:47
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】3
【 GUI  】4
【 期限 】今日中

よろしくお願いします。


153:名無しさん@そうだ選挙に行こう
09/08/30 17:03:27
プログラム中でどう使用されているかの説明を求められているわけでなく
クラスやメソッドの機能の説明をせよってことなんだから
APIドキュメントの記述をそのままコピーすればいいんじゃない?

154:名無しさん@そうだ選挙に行こう
09/08/30 19:03:40
>>153
すみません、具体的に教えてもらってもいいですか?
ほんと知識が0に等しいもので・・・

155:デフォルトの名無しさん
09/08/31 16:57:20
>>154
URLリンク(sdc.sun.co.jp)

156:デフォルトの名無しさん
09/09/01 14:12:33
>>155
??

157:デフォルトの名無しさん
09/09/01 15:40:13
【 課題 】URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】コマンドプロンプト
【 GUI  】制限なし
【 期限 】9月2日16時まで (なるべく早く)
【 Ver  】1.6.0_12

行列や固有値を扱う数値計算の課題です。
締切まで時間がなく申し訳ありませんが、どうぞよろしくお願いします。

158:157
09/09/01 15:50:39
↑一個ズレました。

【 課題 】URLリンク(rg550.hp.infoseek.co.jp)

です。
よろしくお願いします。

159:デフォルトの名無しさん
09/09/01 16:21:15
>>157
参考リンクの逆反復法のソースを見たけど変なプログラムだな。
命名規則は置いておいても再描画のたびに数値計算を最初から繰り返すとか。
改造の大まかな方針としては、
paintの中のコードをそのままmainのコードとして置き換えて、
Drawで始まるメソッドやg.drawStringは数値計算ではなく出力するだけの部分なので、
drawStringについてはSystem.out.printlnでdrawStringの第一引数を与えるものに置き換える。
本来フレームのタイトルになるsetTitleについてもそのまま標準出力に出せばいい。
Drawで始まるメソッドについては与えられた行列やベクトルを表示するためのものなので、
例えばDrawMatVect(g, "*","=", 240, A, B, C, 4,4);なら、
A, B, Cという行列やベクトルの値をループを回して各要素ごとに標準出力に出力するようにする。
行列の要素を行単位で出力するコードくらいは書けるでしょ?

160:デフォルトの名無しさん
09/09/01 16:29:36
>>159
ありがとうございます。
自身はないですが、やってみます。

他にも回答を下さる方がいましたら、どうぞよろしくお願いします。

161:デフォルトの名無しさん
09/09/01 16:30:06
忘れてた。
paintの中身をmainに持ってくる場合、
MultMV等のインスタンスメソッドはクラスメソッドにしておかないと呼べなくなる。
メソッドにstaticを付けるのさえ面倒なら、
mainの中身をnew InvPower().calculate();とでもして、
InvPowerのコンストラクタを消して、
paint(Graphics g)をcalculate()と名前を変えてもいい。
extends Frameも要らない。

162:デフォルトの名無しさん
09/09/01 17:09:57
>>158
URLリンク(rg550.hp.infoseek.co.jp)
>>159の方針に従って最小限の改変をした
表示がgdgdなのはそちらで直してくれ
表示の行と列の向きがこれで合ってるかどうか確認するのも面倒なんで
もし逆なら行と列を入れ替えて表示するよう直してくれ

163:162
09/09/01 17:27:02
課題そのものはその先があったのか
まあ出力の改変方法が分からなくて改変し切れなかったということみたいだから参考程度にしてくれ

164:157
09/09/01 20:13:08
皆さんありがとうございますm(_ _)m

参考にはなりましたが、>>162はLU分解を用いないものでした;

全部で多くても100行程、メソッド数も少なく済ませられるとのことなので、
課題>>158を引き続きお願いします。

165:デフォルトの名無しさん
09/09/02 11:44:26
【 課題 】20億個の数字が入っているファイル(約16GB)をソートし、結果をファイルに出力せよ
      数字は32bit(Float)のバイナリフォーマットで記録されている
      基準となる実行時間は15分(4 AMD Opteron 848 processors and 8 GB of RAM上)
      
【 形態 】コマンドプロンプト
【 期限 】9/5 15:00まで
【 Ver  】java version 1.6.0_14
【 補足 】よろしくお願いします

166:デフォルトの名無しさん
09/09/02 12:36:51
嫌です

167:デフォルトの名無しさん
09/09/02 13:02:34
>>165
動作確認する気にもならんし。遅くても知らん。つか絶対早くは無い。
import java.io.*;
import java.util.Arrays;
public class Floats {
public static void main(String[] args) throws IOException {
float[] datas = new float[2000000000];
DataInputStream dis = new DataInputStream(new BufferedInputStream(new FileInputStream(args[0])));
try {
for(int i=0; i<datas.length; i++) datas[i] = dis.readFloat();
} finally {
dis.close();
}
Arrays.sort(datas);
DataOutputStream dos = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(args[1])));
try {
for(int i=0; i<datas.length; i++) dos.writeFloat(datas[i]);
} finally {
dos.close();
}}}

168:デフォルトの名無しさん
09/09/02 13:34:44
【 課題 】以下のようなコンソールアプリケーションを作成しなさい。
・画像などのバイナリファイルをコピーする
・プログラムの第1引数でコピー元のファイル名を、第2引数でコピー先のファイル名を指定する
・コピーの際に、必ずバッファリングを行う

【 形態 】1. Javaアプリケーション(main()で開始)/
【 期限 】本日
【 Ver  】1.6.0_13

よろしくお願いします

169:デフォルトの名無しさん
09/09/02 13:36:11
>>167
回答ありがとうございます
でも、ファイルが16GBの大きさなので、全部一度に読み込むとメモリが足りません
なんとか、メモリの消費を抑え、15分程度でソートを完了する方法はないでしょうか?
Merge sortで、2個のファイルに分割、その2つのファイルを入力とし、
Mergeしてファイルに書き込む(繰り返し)
というようなことを考えたのですが、いまいちよくわかりません。

170:デフォルトの名無しさん
09/09/02 14:11:15
【 課題 】以下のようなコンソールアプリケーションを作成しなさい。

・HTMLなどのテキストファイルをウィンドウに表示する
・プログラムの第1引数で指定したファイルを、ウィンドウのJTextAreaで表示する
・読み込みの際、必ずバッファリングを行う


以下のようなコンソールアプリケーションを作成しなさい。

・HTMLなどのテキストファイルを、別の文字コードに変換してコピーする
・コピー元のファイル名と文字コード、およびコピー先のファイル名と文字コードは、
 プログラムの引数ではなく通話的にコンソールから入力する。
・ファイル名や文字コードの指定ミスがあった場合、エラー内容を表示して再入力を促す。
・コピーの際、必ずバッファリングを行う。

【 形態 】1. Javaアプリケーション(main()で開始)/
【 期限 】できれば本日
【 Ver  】1.6.0_13

追加でよろしくお願いします。

171:デフォルトの名無しさん
09/09/02 14:12:14
そうか、自分でやるのか〜。
先生うれしいぞ〜

172:デフォルトの名無しさん
09/09/02 22:24:24
>>169
その考えで正解だと思うが、何がいまいち分からんの?

173:デフォルトの名無しさん
09/09/02 22:52:05
>165
4バイトデータが20億個入った16GBファイルの残り8GB以上は何が入ってるの?
頭から20億個データを読んであとは無視してソート後の出力ファイルは半分のサイズになっていいということ?

174:165
09/09/02 23:10:18
>>173
本当だ、おかしいですね、混乱させてすみません
4バイトデータが16GB分あるということです だから出力ファイルも同じサイズになります
数字の数は気にしないでください

>>172
何がわからないのかさえもよくわからないというか…
すみません、自分の力不足です

スピードを求めるなら、Merge sortの前に、メモリに読み込める分を分割して読み込んで
Quick sortした方がいいのでしょうか?

175:デフォルトの名無しさん
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の全ての場合で誤差がでず
まったく同じ数値になってしまったのでおかしいなと思って質問しました



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

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