09/07/19 23:20:07
>>1
乙です
前スレ967です
課題 URLリンク(uploaders.ddo.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】7月21日
【 Ver 】1.6.0_11
ノルムについての資料をうpしました
URLリンク(a-draw.com)
どなたか分かる方、お願いします
3:デフォルトの名無しさん
09/07/19 23:27:52
>>2
ノルムはどこに出力するの?
4:デフォルトの名無しさん
09/07/19 23:38:27
>>3
ノルムは計算結果さえ表示できれば
テキストファイルに出力する必要はないそうです
5:デフォルトの名無しさん
09/07/19 23:56:35
>>2
こんなか?
double [][]a = fileInMatrix(inputfolder,matrix_in); //行列用の読み込み
double []b = fileInVector(inputfolder,vector_in); //ベクトル用の読み込み
double []x = fileInVector(inputfolder,vector2_in); //ベクトル用の読み込み
double []solution=new double[a.length];
for(int i=0;i<a.length;i++){
solution[i]=0;
for(int j=0;j<x.length;j++){
solution[i]+=a[i][j]*x[j];
}
}
for(int i=0;i<solution.length;i++){
solution[i]-=b[i];
}
fileOutVector(outputfolder,vector_out,shutsuryoku,solution); //ベクトル用の書き込み
double euqlid=0;
for(double d :solution){
euqlid+=d*d;
}
System.out.println("e-norm:"+Math.sqrt(euqlid));
double max = solution[0];
for(int i=1;i<solution.length;i++){
if(max<solution[i]){
max=Math.abs(solution[i]);
}
}
System.out.println("max-norm:"+max);
6:デフォルトの名無しさん
09/07/20 00:06:20
>>前すれ998
自分で移植してこその理解だ
7:デフォルトの名無しさん
09/07/20 00:48:07
>>5
ありがとうございます
実行してみたところ、正しく動作しました
ユークリッドノルムの値をネット上で見つけたもの
stat.sm.u-tokai.ac.jp/~numa/Java/Vectornorm.java
で実行した場合は 215.56152395133645 となったのですが
今回の結果では 215.5615169227253 と若干誤差がでたのですが
このような誤差はなぜ起こったのでしょうか?
8:デフォルトの名無しさん
09/07/20 19:22:32
>>1乙です
【 課題 】アクションゲームの基本を作る
① 左右への移動
② ジャンプ
③ 障害物(ブロック)との当たり判定
※キャラクターの画像は各自で用意すること。
【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】8月1日まで
【 Ver 】1.6.0_13
【 補足 】①左右移動したときの画像の向きの変更
②当たり判定の大きさを変更できるようにしたい。
※「JAVAでゲーム作りますが何か?」のページでやってみましたが、
補足の①②の部分が上手くいきませんでした…。
どなたかよろしくお願いします。
9:デフォルトの名無しさん
09/07/20 20:19:35
>>7
テキストファイルに出力している値は、少数以下5桁しか載ってないからじゃね?
10:デフォルトの名無しさん
09/07/20 20:37:02
>>8
そこのソースコード見ればできるだろ。
11:デフォルトの名無しさん
09/07/20 21:36:14
>>9
あーなるほど
ありがとうございました!
12:デフォルトの名無しさん
09/07/20 22:30:05
前スレの975ですが答えてくれた方ありがとうございました。
質問してからレスしてないので答えてたのは自分じゃないです。
お騒がせしました。
13:デフォルトの名無しさん
09/07/20 22:38:55
>>10
用意した画像が「縦100横80」で画像の「x15,y1~x50,y85」部分を
当たり判定にしたいのですが、キャラクターがブロックに触れると
画面外にすっ飛んだり、弾んだりして上手くいきませんでした。
14:デフォルトの名無しさん
09/07/20 23:07:26
>>13
public Point getTileCollision(Sprite sprite, double newX, double newY) {
newX = Math.ceil(newX);
newY = Math.ceil(newY);
double fromX = Math.min(sprite.getX(), newX);
double fromY = Math.min(sprite.getY(), newY);
double toX = Math.max(sprite.getX(), newX);
double toY = Math.max(sprite.getY(), newY);
int fromTileX = pixelsToTiles(fromX);
int fromTileY = pixelsToTiles(fromY);
int toTileX = pixelsToTiles(toX + sprite.getWidth() -1);
int toTileY = pixelsToTiles(toY + sprite.getHeight() -1);
for(int x=fromTileX;x<=toTileX;x++) {
for(int y=fromTileY;y<=toTileY;y++) {
//Outside the boundary
if(x<0 || x>=col) {
return new Point(x,y);
}
if(y<0 || y>=row) {
return new Point(x,y);
}
if(map[y][x] == '1') {
return new Point(x,y);
}
}
}
return null;
}
これの252ページにコードと解説が載っています。
URLリンク(books.google.com)
15:デフォルトの名無しさん
09/07/21 00:38:08
【 課題 】背景色、長方形の色、文字色を、それぞれボタンを押すごとに(黒→赤→青→緑→白→黒→・・・)の順に変化していくようにせよ(初期値は別々にすること)。
新しくクラスを作ることが望ましい。
URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】2. Swing
【 期限 】7/21
【 Ver 】1.6.0_13
よろしくおねがいします。
16:デフォルトの名無しさん
09/07/21 01:59:42
>>14
ありがとうございます!ブロックとの当たり判定はできました。
後は画像の方向だけなのですが。
用意した画像が①立ち(右左)②走り(左右)③ジャンプ(左右)
の6ファイルでそれぞれ別に用意しました。②と③はgifアニメーションです。
よろしくお願いします。
17:デフォルトの名無しさん
09/07/21 02:15:30
>>16
左右の動きをどう作り込んだか分かりませんが、キャラクタを実装しているクラスに方向フラグを追加して描画時にフラグで切り替える。方向フラグはキーが押された時にアップデートすればよいかな。
18:デフォルトの名無しさん
09/07/21 08:39:22
>>17
キーが押されたときに画像が切り替わるようにする方法が分かりません。
あと、ジャンプ(つまり地面に接地してない)時の画像の切り替えもよく分かりません。
左右の動きはここを参考にしました。
URLリンク(javagame.skr.jp)
19:デフォルトの名無しさん
09/07/21 10:01:03
>>18
URLリンク(javagame.skr.jp)
20:デフォルトの名無しさん
09/07/22 16:40:05
>>19
ありがとうございます。色々試していたらお返事が遅くなってしまいました。
向きの切り替えはできましたが、
ボタンを押したている間、走る画像に切り替えるのと
空中にいる間、ジャンプ画像に切り替えるというのが上手くいきませんでした…
何度も申し訳ありませんが…またお願いします。
21:Indooroopilly
09/07/22 21:09:54
>>20
左右の向きと同じようにジャンプしている状態を判断するフラグをひとつ追加して、
キャラクターの描画時にフラグを見て画像を切り替えればOK。
22:デフォルトの名無しさん
09/07/22 21:28:02
>>21
ジャンプもその方法でやったのですが…
ジャンプ中に左や右を押すと右や左の画像に切り替わってしまうんです
23:Indooroopilly
09/07/22 21:54:28
>>22
ジャンプ時は同じ方向しか向かない(途中で反対方向に移動しない)ような仕様でしょうか?
であれば、ジャンプ時は反対の方向を押されても移動させない。
ジャンプ時も反対方向に移動するのであれば、ジャンプ時用の画像を左右用意する。
細かい実装が分からないのですが、決めの問題かと思います。
24:デフォルトの名無しさん
09/07/23 17:04:43
【 課題 】
配布資料に記載されたプログラムを参考にして、画面にウインドウを
開き、以下の注意点に従い、任意の関数のグラフを描くプログラムを作成せよ。
出力結果の見やすさも採点対象とする。
(1)y=logxのグラフを表示せよ。
また、用いた関数式も表示させよ。
(2)表示したグラフに対してx軸、y軸を表示せよ。
(3) (1)、(2)に加えて、java.lang.Mathクラスを用いて
sin関数を表示せよ。
【 形態 】1. Javaアプリケーション
【 期限 】7/24 午後12:30
【 Ver 】java version "1.5.0_05"
急で申し訳ありません よろしくお願いします。
25:デフォルトの名無しさん
09/07/23 17:22:30
>>24
配布資料は?
26:デフォルトの名無しさん
09/07/23 18:16:38
配布資料は転記ミスです
よろしくお願いします
27:デフォルトの名無しさん
09/07/23 18:41:26
任意の関数って書いてるけど注意点にある対数関数と正弦関数以外どういう関数をどういう風に与えるの?
28:デフォルトの名無しさん
09/07/23 23:44:32
ksk
29:デフォルトの名無しさん
09/07/24 00:12:54
>>26
だったらちゃんと転記しろよ。
(1)~(3)はどう見ても課題そのもので、
任意の関数を描画するため注意点には見えんのだが。
何を注意すれば良いんだ?
30:デフォルトの名無しさん
09/07/24 00:21:09
先生、javaでlogのグラフを書く意味が分かりません
31:デフォルトの名無しさん
09/07/24 01:40:23
>>30
単純だし、ちゃんと描けているかどうかボンクラ学生でも分かるからじゃね?
32:デフォルトの名無しさん
09/07/24 08:54:25
>>24 java入門GUI編に答えが載ってるよ
たぶん学校の先生もこの本見たんだろうなぁと予想
33:デフォルトの名無しさん
09/07/24 12:48:23
>>24は結局まにあったのかな?
34:デフォルトの名無しさん
09/07/24 22:17:52
>>32
ちょw出版社つぶれてるおw
俺は持ってるけどね
35:デフォルトの名無しさん
09/07/25 00:51:40
>>15誰かお願いします
36:デフォルトの名無しさん
09/07/25 00:53:05
>>35
完成像がさっぱり思い浮かばない
37:デフォルトの名無しさん
09/07/25 01:30:11
>>23
お返事が遅くなりましたが、
無事できました。ありがとうございました!
38:デフォルトの名無しさん
09/07/25 01:48:14
>>35
Str.classで描画している四角形と文字列とバックグラウンドの色を変えれば良いの?
っていうか、期限過ぎてるよね。
39:Indooroopilly
09/07/25 01:50:19
>>37
お疲れ。それをベースに敵とか作ってアイスクライマーみたいにすると結構遊べます。お試しあれ。
40:デフォルトの名無しさん
09/07/25 02:02:54
>>35
URLリンク(rg550.hp.infoseek.co.jp)
41:デフォルトの名無しさん
09/07/25 02:05:48
>>40
ありがとうございます!
>>38
とりあえずやっておきたかったので。
42:デフォルトの名無しさん
09/07/25 03:11:54
>>40さんのを少し改良して、以下のようなif文を追加したいのですが、
上手く反応しません。
bの部分が違うのでしょうか?
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if(source == b){
background = background.next();
rectangle = rectangle.next();
string = string.next();
}
repaint();
}
43:Indooroopilly
09/07/25 03:40:13
>>42
多分、やりたいのはこういう事かな?
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("change colors")){
background = background.next();
rectangle = rectangle.next();
string = string.next();
}
repaint();
}
44:デフォルトの名無しさん
09/07/25 03:53:11
>>43さんのプログラムでif文の部分は上手く動くようになりましたが、
repaint();によってリアルタイムで時間を表示していたのですが、ボタンを押さないと時間が再描画されないようになってしまいました・・。
45:Indooroopilly
09/07/25 04:01:01
>>44
何がやりたいの?
46:デフォルトの名無しさん
09/07/25 04:02:30
>>44
>>40のStrExはActionEventのソースをコンポーネント自身が知らなくてもいいように分離されているので
特定のボタンをソースとするActionEventだけを色を変更するきっかけとしたいのなら
StrExの方で色を変更するメソッドをactionPerformedでなくchangeColorsとでも名前を変更して定義して
S02Exの方で
final StrEx s = new StrEx();
JButton b = new JButton("change colors");
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
s.changeColors();
}
});
frame.add(s);
のようにすればStrEx自身は色を変えるきっかけとなるイベントソースが何であるかを気にしなくてすむようになる
そうすれば時刻表示の更新のためのactionPerformedをそのまま使用できる
時刻表示の更新もこの色変更と同じ考え方で実装すればStrEx自体にActionListenerを実装する必要がなくなる
47:デフォルトの名無しさん
09/07/27 13:56:34
課題 URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】7月28日
【 Ver 】1.6.0_07
どなたか分かる方、よろしくお願いします.
48:Indooroopilly
09/07/27 15:15:16
>>47
コンパイルエラーになる原因
1.BadGradeExceptionがStudent.javaで定義されている。
2.PersonクラスにprintGradeメソッドは定義されていない、よって型がPersonなgeorgeは使えない。
3.martinはPersonなのでStudentにキャストする必要がある。
修正箇所
1.BadGradeException.javaというファイルを作ってその中で定義。
2.georgeの型をStudentにするかキャストしてメソッドコール。((Student)george).printGrade();
3.martinの型をStudentにするかキャストするか、そもそもleader使ってないので行ごと消す。
49:デフォルトの名無しさん
09/07/27 15:17:32
>>48
微妙に問題と解答がかみ合ってないぞw
50:デフォルトの名無しさん
09/07/27 15:26:04
>>47
BadGradeException を Student.java にってのは転載ミスだろ。
1.
16行目: george.printGrade();
george は Person クラスと宣言されているため、Person で宣言されているメソッドしか利用できない。
19行目: Student leader = martin;
leader は Student クラス、martin は Person クラスのオブジェクトであり、
Student は Person だが Person は Student ではないため。
2.
"Name: Jhon" <- 5行目 Person.print() が呼ばれ、名前を表示
"Age: 32" <- 6行目 Person.printAge() が呼ばれ、年齢を表示
"Name: Paul" <- 10行目 Student.print() から super.print() により Person.print() が呼ばれ、名前を表示
"Job: student" <- 10行目 Student.print() の super.print() の後、固定文字列を表示
"grade: 3" <- 11行目 Student.printGrade() が呼ばれ、学年を表示
"Age: 20" <- 12行目 Student.printAge() は無いが親クラスの Person.printAge() が呼ばれ、年齢を表示
"Name: George" <- 15行目 george は Person だが実体は Student のため、Student.print() が呼ばれ、名前を表示
"Job: student" <- 15行目 Student.print() の super.print() の後、固定文字列を表示
"5 is out of range." <- Student のコンストラクタ(10行目)で BadGradeException が発生し、25行目でキャッチされ、26行目で表示
※例外によりcatchに飛んだので、22行目の ringo.print()は実行されない。
51:50
09/07/27 15:30:49
>>50
"n行目"というのは
1: /* PrintPersons.java に保存 */
2: public class PrintPersons {
:
と先頭にコメントが1行入った状態
52:デフォルトの名無しさん
09/07/27 17:48:27
すいません、返事が遅れました。
>>48さん、 >>50さん本当にありがとうございました!
53:デフォルトの名無しさん
09/07/27 20:07:28
【 課題 】
以下のURLから正規表現を用いてキーワードの部分のみ抽出する
プログラムを作成せよ。
URLリンク(www.google.co.jp)キーワード&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a
【 形態 】1. Javaアプリケーション
【 期限 】7/28 午後17:00
【 Ver 】java version "1.5.0_19"
先生、宜しくお願いします!
54:デフォルトの名無しさん
09/07/27 22:13:30
>>53
import java.util.regex.*;
public class GoogleKeyword {
public static void main(String[] args) {
Pattern p = Pattern.compile("(?:\\?|&)q=(.*?)(?:&|$)");
Matcher m = p.matcher("URLリンク(www.google.co.jp)キーワード&lr=lang_ja&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ja:official&client=firefox-a");
if(m.find()) System.out.println("keyword="+m.group(1));
else System.out.println("not found");
}
}
55:Indooroopilly
09/07/27 22:15:31
import java.util.Scanner;
import java.util.regex.*;
public class KeywordExtractor{
public static void main(String [] args)throws Exception{
String keyword = "q=([^&]+)";
Pattern pattern = Pattern.compile(keyword);
System.out.print("Input URL: ");
Scanner scan = new Scanner(System.in);
Matcher matcher;
String line = "";
while(scan.hasNext()){
line = scan.nextLine();
matcher = pattern.matcher(line);
if(matcher.find()){
String foundWord = matcher.group().replaceAll("q=", "");
System.out.println("Keyword: " + foundWord);
}else{
System.out.println("Did not find any keyword in the text.");
}
matcher.reset();
System.out.print("Try other URL: ");
}
}
}
56:デフォルトの名無しさん
09/07/27 23:51:27
>>54
動かないんですが・・
57:デフォルトの名無しさん
09/07/28 00:14:41
>>56
>>55は動くぞ。
58:54
09/07/28 01:22:32
>>56
すまん。こっちでは動いたんだが…。
できれば「動かない」ってだけじゃなくて、「どう」動かないのか教えてくれるか。
コンパイルでこんなエラーになるとか、実行するとこんなエラーが表示されるとか…。
それとも 56 のように実行するとURLを入力する状態にならないといけなかったのか。
59:53
09/07/28 11:06:33
>>54>>55
完璧に動作したのを検証しました。
苦手な正規表現の勉強になりました。
先生ありがとうございます!!
60:デフォルトの名無しさん
09/07/28 12:49:00
53はお騒がせだな。
61: ◆MvRbZL6NeQ
09/07/28 21:14:12
【 課題 】このプログラムを実数が扱えるように書き換える.
URLリンク(rg550.hp.infoseek.co.jp)
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI 】4. 制限なし
【 期限 】2009/08/02
【 Ver 】java version "1.5.0_18"
【 用語 】特になし
【 補足 】さっぱり分からないので,よろしくお願い致します.
62:デフォルトの名無しさん
09/07/29 00:42:25
>>61
ToolInt を ToolDouble に名前を変えて、
内部の int value を double value に変えて、
Scanner.lexDigit() を小数点も取り込んで Double を返すようにして、
こまごまと int → double, Integer → Double にすりゃいいんじゃないか
63: ◆MvRbZL6NeQ
09/07/29 09:32:30
>>62
実は両方使えるようにしたいんです、言葉が足らずに申し訳ありません。
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
ええと、人間なら勝敗はつかないゲームなんだけど・・・
URLリンク(ja.wikipedia.org)
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の全ての場合で誤差がでず
まったく同じ数値になってしまったのでおかしいなと思って質問しました
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
お願いします