[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 02/24 18:23 / Filesize : 383 KB / Number-of Response : 978
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

★★ Java の宿題ここで答えます Part 60 ★★



1 名前:JavaScriptは板違い、Web制作板をご利用ください。 [2007/01/20(土) 22:34:12 ]
【質問者へ】
回答者の便宜のため、以下の注意事項を遵守してください。
・質問は【課題提示用テンプレ】を利用してください。
・問題文は、出題されたまま全文を書いてください。
・数学問題は「○×法でせよ」だけでなく、その数式、前提条件も説明してください。
・JavaScriptは板違い、Web制作板をご利用ください。
・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。
・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。
・回答されたら動作報告を必ずしてください。

【課題提示用テンプレ】
【 課題 】与えられた課題文をそのまま書きます。 《必須》
【 形態 】1. Javaアプリケーション(main()で開始)/2. Applet/3. Servlet/
       4. 携帯(開発環境のver.必須)/5. その他(明記のこと) 《必ず選択》
【 GUI  】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること)
       《GUIの課題の場合必ず選択》
【 期限 】提出期限、解答希望日を書きます。「できるだけ早く」はNG。 《必須》
【 Ver  】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》
【 用語 】数学用語、専門用語の意味、説明を書きます。 《あれば必須》
【 補足 】課題について自分なりに補足する事、何か思う事があれば書きます。
       丸投げでない場合は、途中までのソースとその経過報告、
       質問点、疑問点を書きます(なるべく丸投げにしてください)。

【回答プログラムの掲載場所】
Java質問スレWiki  www.wikiroom.com/java/
ソースポストネット  sourcepost.sytes.net/

【前スレ】
pc10.2ch.net/test/read.cgi/tech/1165167516/

751 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 13:16:07 ]
どれが正解かわかんねw

752 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 19:37:09 ]
>>751
まあ問題文の日本語の助詞からして狂ってるから
分かるわけないな。

753 名前:デフォルトの名無しさん [2007/04/23(月) 22:27:31 ]
重い課題投下してもいいでしょうか・・・

【 課題 】フレーム上で画像を選択して読み込み、その画像を閾値(しきいち)をつかって二値化するプログラムを作成せよ。
まずフレームのメニューから画像を読み込み、さらにメニューから閾値を入力するダイアログを表示させる。
そのなかに用意したテキストボックスに閾値を入力して決定すると、あらたなフレームに二値化された画像が表示される。

【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】1. AWTのみ(フレームを使う)
【 期限 】4月25日(水)午後5:30迄
【 Ver  】java version "1.5.0_11"
【 用語 】
●閾値(しきいち)
閾値というのは各画素の明るさをあらわす一定の基準値であり、
画像の各画素値が0〜255の濃度で表されるため、これを閾値の範囲として定める。

●二値化
二値化とはこの場合前述の閾値を使って、画像を黒と白の二つの値に変換することである。
例えば閾値100であるならば濃度値100以上は黒それ以下は白というように。
※モノクロ画像に変換するということではない。

【 補足 】全然わかりづらいと思うので、ペイントで書いてみました。
www.uploda.org/uporg785109.png
たくさん数式が必要なんでしょうけどわかりません;
プログラム上でRGBにマスク?をかけてモノクロ画像にしてから濃度値を取り、
二値処理を行うってことでいいんでしょうか。全然的外れなこと言ってたらごめんなさい;
ここまでの少ない情報量で作れるかたいらっしゃらないでしょうか?
どうかよろしくお願いします。


754 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 22:58:34 ]
RGBから明るさへはjava.awt.Color.RGBtoHSBで変換できるので、
そこからB成分だけ貰えばいい。


755 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 22:59:29 ]
訂正 →HSB表現に変換できるので

UI作るのめんどうなのでヒントだけ。


756 名前:デフォルトの名無しさん [2007/04/23(月) 23:01:36 ]
>>755
ありがとうございます。
自分でも頑張ってみます。

757 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:52:02 ]
>>756
いやここは俺がやるわ

758 名前:デフォルトの名無しさん [2007/04/24(火) 06:52:46 ]
>>757
いーや、俺がやるね!

759 名前:デフォルトの名無しさん [2007/04/24(火) 06:53:15 ]
>>758
いやいや、俺が



760 名前:デフォルトの名無しさん [2007/04/24(火) 06:53:22 ]
>>758
どうぞどうぞ

761 名前:デフォルトの名無しさん [2007/04/24(火) 06:53:24 ]
>>758
いやいや、俺の方が

762 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:53:50 ]
じゃあ俺がやるよ!!!

763 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:53:50 ]
>>761
ここは俺がいくよ

764 名前:デフォルトの名無しさん [2007/04/24(火) 06:54:17 ]
・・・俺もやろうかな

765 名前:デフォルトの名無しさん [2007/04/24(火) 06:54:49 ]
>>764
どうぞどうぞ

766 名前:デフォルトの名無しさん [2007/04/24(火) 06:55:03 ]
>>764
どうぞどうぞ

767 名前:デフォルトの名無しさん [2007/04/24(火) 06:55:12 ]
>>764
どうぞどうぞ

768 名前:デフォルトの名無しさん [2007/04/24(火) 06:55:20 ]
>>764
どうぞどうぞ!

769 名前:デフォルトの名無しさん [2007/04/24(火) 06:55:33 ]
>>764
どうぞどうぞ



770 名前:デフォルトの名無しさん [2007/04/24(火) 06:55:59 ]
>>764
どうぞどうぞ

771 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 06:56:19 ]
>>764
どうぞどうぞ

772 名前:デフォルトの名無しさん [2007/04/24(火) 06:56:29 ]
>>764
どうぞどうぞ

773 名前:デフォルトの名無しさん [2007/04/24(火) 06:56:56 ]
>>764
どうぞどうぞ

774 名前:デフォルトの名無しさん [2007/04/24(火) 06:57:57 ]
>>764
どうぞどうぞ

775 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 07:19:04 ]
>>764
どうぞどうぞ

776 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 07:48:59 ]
>>764
どうぞどうぞ

777 名前:デフォルトの名無しさん [2007/04/24(火) 10:03:05 ]
>>764
どうぞどうぞ

778 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 10:16:25 ]
>>764
どうぞどうぞ

779 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 10:34:36 ]
>>753
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29345
「明るさ」がHSBの明度なのかHLS等の輝度なのか分からないので、
ソースはHSBの方で書いておいて、その下に輝度での明るさの計算をコメントアウトしてある。
どちらでもお好きなように。極端な画像でなければ差はあまりないと思うが。
HSBの明度は>>754のやり方でもいいけど、単にRGBのうちの最大値が明度になるので、
明度だけ求めるのなら、RGBの3値の大きさを比較する式だけですむ。
閾値で変なものを入れたらてきとーに値を設定する。
明るさが閾値以下なら黒、閾値より大きければ白。
見えている全てのフレームを閉じると終了。
エラーとかは気にしないてきとーな造り。



780 名前:753 [2007/04/24(火) 18:39:48 ]
>>779
うおおおおおおおおおおおおおっ!!!!!!!
ありがとうございます!!!動作確認しました!
すげええええ!今感動でちょっと泣いてますマジで。
完璧です。
てきとーだなんてとんでもない。
細かいとこに気遣いを感じるプログラムですよ!
俺のプログラムなんて元画像の大きさに合わせてフレームの大きさ変えることすら出来ないんですもん。
俺の説明不足なのにコメントまでつけていただいて・・・

さっき帰宅したものですから、
お返事が遅れてしまって申し訳ありませんでした。
本当にありがとうございました。恩に着ます;;

781 名前:デフォルトの名無しさん [2007/04/24(火) 21:24:10 ]
流れ嫁よ糞が

782 名前:753 [2007/04/24(火) 22:15:30 ]
>>757からの流れには、俺もこれはもうだめかな・・と思ったね。
プログラム板あなどりがたし。

783 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:17:07 ]
朝の10時から暇な奴だな

784 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 22:47:08 ]
鈴木高弘は火曜晩は暇なのか?
毎週火曜日晩になると無茶な暴れ方をするな。

785 名前:688 mailto:sage [2007/04/25(水) 00:22:03 ]
>>727
亀レスですが、g.drawlineつかってよいそうです
うpしてもらったのを参考に自分なりに作り直しているのですが、直接座標指定(100とか200)
してしまうと回転はしなくなってしまうのですか?
回転しなくてあせってます泣

786 名前:688 mailto:sage [2007/04/25(水) 01:08:04 ]
逆に数値を指定しないと、画面にメッシュが表示されません。。。

787 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 03:18:24 ]
作り直したものも示さずに誰が答えられるんだ?
お前の頭の中はオープンソースなのか?
ソースを出したからといって答えてくれるとも限らんが
例えばLevel1
public void paint(Graphics g) {
Point p1 = rotateZ(50, 200);
Point p2 = rotateZ(250, 200);
drawLine(g, p1.x, p1.y, p2.x, p2.y);//(50,200)-(250,200)を回転した線
p1 = rotateZ(100, 50);
p2 = rotateZ(100, 250);
drawLine(g, p1.x, p1.y, p2.x, p2.y);//(100,50)-(100,250)を回転した線
}
アプレットのサイズは線が見える程度はないと当然見えんよ

788 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 23:50:56 ]
この問題昔やったな・・・。

789 名前:688 mailto:sage [2007/04/26(木) 00:52:20 ]
>>787
なんとかできました。
ありがとうございます。

参考にしながらlevel3まで来たのですが、少々複雑になってきたので、g.drawlineを使った場合
を教えていただけないでしょうか?



790 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 03:34:49 ]
>>789
せっかく直線描画ルーチンを実装したのに、面倒な方向が好きなやつだね。
Level3,4をどうしてもGraphics#drawLineで描画したいっていうのなら、
zL,zHを、z<=zLで黒(最小輝度)、z>=zHで白(最大輝度)になるようなz座標の値として、
Foo3CanvasやFoo4Canvasの
private void drawLine(Graphics g, int x1, int y1, int z1, int x2, int y2, int z2)
の中身を、
点(x1,y1,z1)と点(x2,y2,z2)を通る直線と、平面z=zLとの交点(Px,Py,zL)、平面z=zHとの交点(Qx,Qy,zH)を求めて、
Graphics2D g2 = (Graphics2D)g;
g2.setPaint(new GradientPaint(Px, Py, Color.black, Qx, Qy, Color.white));
g2.drawLine(x1, y1, x2, y2);
で線分を描画するようにすれば、できるような気がする。
z=zLやz=zHに平行な直線の時は交点が求められないけれど、
このときは直線全体が同じz座標の値だから、その値に応じた色をsetColorして単一色の線分を描くだけ。
これで、setPixelとsetLuminanceが不要になる他は変更せずにすむ。
z座標と各点の色との対応関係はGradientPaintによるグラデーション描画の実装に依存するけれど。

まあsetPixel内でfillRectでピクセルを塗るかわりに、
Graphics#drawLineで一点だけの直線を引いてもGraphics#drawLineを使ったことにはなるね。

791 名前:688 mailto:sage [2007/04/26(木) 10:40:47 ]
>>790
詳しくありがとうございます。
まだイロイロと聞きたいことあり、聞きたいのですが、ここに自分の晒すと
同じ学校のほかの生徒がコピペしてしまうかもしれないので、もしよかったらメールで教えていただけませんか?
pinkly@inter7.jp

792 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 08:21:15 ]
>>791
アダルトサイトに登録しておいた。

っていうのはジョークとして、おまいの専属家庭教師になれと?


お  断  り  だ  。

793 名前:688 mailto:sage [2007/04/27(金) 09:03:50 ]
>>792
そうですか。。
せめて、うpしたのを添削してほしかったわけですが。。。

794 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 09:06:01 ]
>>793
ネタじゃなかったのか。馬鹿だなお前さん。

795 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 10:11:31 ]
>>793
添削って、、、それをするのが学校だろw

796 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:26:27 ]
池戸さん怒るぞ

797 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 14:55:11 ]
>>796
  ( ^ω^) …
  (⊃⊂)







⊂(^ω^)⊃ セフセフ!!
 ミ⊃⊂彡

798 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 15:48:13 ]
法政…?いやまさかな

799 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 19:56:56 ]
>>791
ここに投げたこと自体はまあアレなんだが、
出てきたものを自分なりに咀嚼して再構築しようとしているのはいいことだと思って付き合っただけで、
ひとが晒したソースを自分が参照するのはよしとするが、
自分のソースがひとに参照されるのは気に入らんなどという二重基準な方針には付き合わんよ。
このスレはソースが出てくれば幸運、アフターサービスはレアケースくらいの感じだ。
せっかく学校に授業料を払ってるんだから疑問は先生に聞いて解決しる。



800 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 20:20:58 ]
【 課題 】
フィボナッチの数列は以下の漸化式で表される。
f1 = 1, f2 = 1
fi = fi-1 + fi-2 (i >= 3)
f1 から f10 を計算し表示せよ。さらにその和を求めよ。
またプログラム作成にはWhile 文を使え。

【 形態 】1. Javaアプリケーション(main()で開始)    
【 GUI  】4. 制限なし
【 期限 】 2007/04/29 PM01:00 まで
【 Ver  】java version "1.5.0_11"
【 用語 】特になし
【 補足 】丸投げです。よろしくお願いします。

801 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 20:54:42 ]
>>800
public class Fibonacci{
public static void main(String[] args){
int[] f=new int[11];
int i,sum;
sum=0;
i=1;
while(i<=10){
if(i>=3){
f[i]=f[i-1]+f[i-2];
}else{
f[i]=1;
}
System.out.println("f(" + i + ")=" + f[i]);
sum+=f[i];
i++;
}
System.out.println("フィボナッチ数の合計 = " + sum);
}
}

802 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 21:28:13 ]
>>801
こんなに早くありがとうございます。
非常に助かりました。

803 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 05:26:18 ]
【 課題 】リマソンの描画
【 形態 】Applet
【 GUI  】制限なし
【 期限 】来週の月曜日まで
【 Ver  】java version "1.6.0"
【 補足 】丸投げです。静止画でいいんでよろしくお願いします。

804 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 07:15:31 ]
r=b+acosθ
* a=bのとき「カージオイド」

これ数1じゃないか?

805 名前:デフォルトの名無しさん [2007/04/29(日) 09:58:42 ]
【 課題 】重複しない配列を作れ
【 形態 】Javaアプリケーション(main()で開始
【 GUI  】制限
【 期限 】火曜日
【 Ver  】
【 補足 】
※要素が重複しない一つの配列を作れではありません。
要素が重複しないn!個の配列を列挙する問題です。
たとえば要素数が3なら
{1,2,3},{1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}
を表示したいわけです。nは比較的小さな数(n<8くらいまで)で計算量が膨大にならない程度でかまわいません。

806 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 15:40:14 ]
>>803
r=b+a*cosθ :a=100,b=50のグラフを表示するApplet
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29352
Applet初体験&数学苦手なんで変なところや間違いが有っても許して

807 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 18:23:21 ]
>>805
圧縮したので少しパスタ
public class Main {
public static void main(String[] args) {
int n = 4; //要素数.設定方法は任す
int[] a = new int[n];
for (int i=0; i<n; i++) a[i] = i+1;
while (true) {
System.out.print("{ ");
for (int i=0; i<n; i++) System.out.print(a[i]+" ");
System.out.println("}");
int k=n-2, l=n-1, w;
while (k>=0 && a[k]>a[k+1]) k--;
if (k<0) break;
while (a[k]>a[l]) l--;
w = a[k]; a[k] = a[l]; a[l] = w;
l=n;
while (++k<--l) {
w = a[k]; a[k] = a[l]; a[l] = w;
}
}
}
}


808 名前:デフォルトの名無しさん mailto:sage [2007/04/29(日) 21:33:16 ]
                        , '"´    ̄` 、 /Z
      ___,. --- .             / /   イ i  ヽ   ヾイ
   ,.-‐'´   ,   ヽ.          .' 〃 /||!|. l   .い
.  /亅  ノ /     ト、         i i./|/  !ハl i| | iト′
  { {  / 〈.   /  ! \_ ,r┐  | ルfホ.  l!≦小!  ! リ
.  ヽヽ ヽ ___、__,⊥  }  |i ヽ_l  l | tリ ,   {tリ !  !v
   ヽゝ{__     _/   !!  `ヽ.| l、  r‐‐、 `゜ | /ノ
     `¨ぃこヱ孑'         ぃ| !ヽ._  ノ  ,..|v'´ ぱんち
        `ー―---‐、¬¬-、_  / ,'ー-、_、Z¨´_}}|(う、
              冫こ__ラーV /|   } } ̄ !厂フ′


809 名前:805 mailto:sage [2007/04/30(月) 02:30:27 ]
>>807
ありがとうございました。こんな質問にも答えてくださって感謝です。



810 名前:デフォルトの名無しさん [2007/04/30(月) 19:57:59 ]
【 課題 】class SquareCode {
public int area(String tmpWidth, String tmpHeight){
int width = Integer.parseInt(tmpWidth);
int height = Integer.parseInt(tmpHeight);
int answer = width * height;
return answer;
}
}

上記のSquareCodeクラスを継承して、更にarea()メソッドをオーバーライドした
TriangleCodeクラスを定義して下さい。

【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】4. 制限なし
【 期限 】5月1日
【 Ver  】java -version"1.4.2"
【 補足 】諸事情により動作確認は明日の夜になりそうです。


811 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 20:06:52 ]
                    ,. --―…、
                  /    /:. \
                ./    /::::::::::. ヽ
                ‘ー--一'´ \:::::::.  ',
                        ヽ:::::.  !
            /⌒丶   ,. .-.''.´ . .',::::  |` 丶、
           /    !:::::..\/ . . . . . \.L__ l. . . \
           |   |――/. /、 . . . . . . .ヽ . ヽ . . . .ヽ
           |   j  /. ./ \.ヽ . . . . .'., . . . . . . .',
           |   /  |. . l   \_. . . . ',. . . . . . ..|
           |  /   |:.._l     ´\ . . . . !. . . . . . .|
           l   /   .|´.l _     ,r7jヽ,. .:.r ‐、 . . ...|
           |_,ノ    |. .!イト、    弋:ソ!. ..|  〉 . .:.|
                 |.小 ヾ'    , , , |:!. |! イ. . . ..|
                 |. |..ハ'''        |リ!.|l . !. . . . |
                 |. | |. ヽ、,-_ _ -' ''|.!ヽ.|:.. . . .|
                 |. | |! . . ._ -'     |l  ヽ:.:. . .|
                 |._| > ''         |!   ', . ...|
            __r‐'7 ̄!.               !:. .:.|
       ,r=―フ/  |  |     _ ,, --      !:. .:.|
      /__/   |   l  l  _. - '          /l. . .|
  _r''厂\     !   ! l ''            / !i . !
 //     \    |   !:人              /  i i:リ
./|    ヽ_        ヽ!个‐'           /    i i
| .!       \    __/l /             /
∨\       /   /_l /            /
. |  \rへ _/ヽー '   ∨          /


812 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 20:51:48 ]
>>810
コード見ても何したいのかさっぱりわかんねw
Triangleだと引数足りないからオーバーライドは無理じゃね?w

813 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 21:06:15 ]
>>812
簡単に高さ×底辺/2で三角形の面積を出すように、再定義するだけなら、ひきすうは十分でない?
?な所も有るけど気にするだけ無駄ですよ。
>>810
public class TriangleCode extends SquareCode{
public int area(String tmpWidth, String tmpHeight){ 
int width = Integer.parseInt(tmpWidth); 
int height = Integer.parseInt(tmpHeight); 
int answer = width * height/2; 
return answer; 




814 名前:潮吹きたい人この指留まれ〜♪ [2007/04/30(月) 21:58:47 ]
all-inone-eclipse でjava練習中ですが
for 文で無限ループになりました。
eclipseでデバッグではなく実行で走っていますが
アプリをどうやって終わらせてるのでしょうか?
eclipse自体はキー入力とかできますが
これってアプリ単独で終了はできないですか?
eclipseごと終了ですか?
今動いていますが、javaw.exeのメモリが増えていますが
だれか〜〜 おせ〜て
おせ〜〜てくれくれ君です
返事が早いか、どこかで異常終了するのが早いか
寝てしまうかか。。。

815 名前:デフォルトの名無しさん [2007/04/30(月) 22:27:13 ]
開発やめたら早いよ

816 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:36:53 ]
>>814
コンソールを表示しているペインに赤い×印のボタンはないかね?


817 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 22:52:17 ]
スレ違いなやつを相手にするなって
精々誘導するぐらいにしとかないとノイズが増えるぞ

818 名前:デフォルトの名無しさん [2007/04/30(月) 23:00:09 ]
【 課題 】2進数を10進数に変換するプログラムを作れ。 
【 形態 】1. Javaアプリケーション(main()で開始
【 GUI  】4. 制限なし
       《GUIの課題の場合必ず選択》
【 期限 】期限ナシ。
【 補足 】Java初心者の自分でやってみようと思った課題です。
      とりあえず、1101と具体的な数字を10進数に直そうと思いました。
      自分なりに作ってみました。ですが、実行してみると、733になってしまいました。
      ドコが問題でしょうか?どなたか、初心者に優しい解説をヨロシクお願いします。

public static void main(String[] args) {

String x = "1101";       //2進数を文字列として入力
int a[] = new int [4];     //配列は4つ
double y = 0;


for(char i=0; i<4; i++){
   a[i] = x.charAt(i);    //配列a[i]に一つずつ2進数の各位を代入する

   y = (double)(y + a[i]*(Math.pow(2, (3-i))));

}

    System.out.println(y);

}

819 名前:潮吹きたい人この指留まれ〜♪ [2007/04/30(月) 23:06:13 ]
814です
放置していたらwindowsが重くなって制御できなくなってきたので
eclipseごと落しました。

>>815,816 さんありがとうございます
なにしろポンコツプログラマですので。JAVAできるかな。。。
>コンソールを表示しているペインに赤い×印のボタンはないかね?
ありがとうございます。
再実行させて、×押すとアプリが終了しました。

for ループ内でprint文入れてましたから、Ctrl+C相当なのですね

では、と言うわけで print 文コメント化して実行させましたら
X入力がききません。またwindowsXPがめっちゃ重くなって
javaw.exe がcpu 食っていますが。。。
これはどうやってとめるんだろうか。。。
教えてくれくれ君ですが
教えて〜〜〜



820 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:27:18 ]
a[i]に入ってるのはchar(文字コード)であって数値ではない。

関係ないけど、一度ずつしか使ってないし配列に入れる意味ないよ。


821 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:28:49 ]
>>818
いろいろ直したいプログラムですが、とりあえずドコが問題かといえば

   a[i] = x.charAt(i);    //配列a[i]に一つずつ2進数の各位を代入する

この行です。このであなたがやりたいと思っていることは、たぶん

   a[i] = x.charAt(i) - '0';

という処理だと思います。

822 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:34:37 ]
>>813
どうせ変な問題だし回答も変な方がいいんじゃまいか?
public class TriangleCode extends SquareCode {
public int area(String tmpWidth, String tmpHeight) {
return super.area(tmpWidth, tmpHeight) / 2;
}
}
とか

823 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:36:48 ]
【 課題 】
ガソリン使用量や走行距離に着目して, 自動車の振る舞いを模倣するクラス Car をプログラミングせよ. Carが主たる機能(メソッド)は以下の通りである.
● int fuel(int x) 自動車にあるxリットルの燃料を給油を 試みることができる. タンクの量は有限(簡単のためタンク容量は30リットルに固定)なので, 実際に給油できるのはxリットル以下で, その量が返り値として得られる.
● int odometer() 自動車にその時点での走行距離(キロメートル)を問い合わせることができる.
● void efficiency(int x) 自動車の燃費を設定することができる(xキロメートル/リットル). 燃費は正整数の値を必ずインスタンス毎に設定すること.
● int drive(int x) 自動車をxキロメートル運転することを試みる. 燃料残量によって実際に運転できる距離は変わる. 実際に運転できた距離は返り値として返される.
【 形態 】1. Javaアプリケーション(main()で開始)/
【 GUI  】1. AWTのみ/2. Swing/3. SWT/4. 制限なし/ 5. その他(明記すること)
       《GUIの課題の場合必ず選択》
【 期限 】5月3日までにお願いします。
【 Ver  】java version "1.4.2_12"


824 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:37:40 ]
Carクラスのmainメソッドは以下のような内容にして, このクラスの振る舞いが正しいか否かの動作チェックをせよ.

// Carクラスの振る舞いのテスト
public static void main(String[] args) {
Car sedan=new Car();
Car wagon=new Car();
sedan.efficiency(20); // セダンならリッター20キロ
wagon.efficiency(9); // ワゴンは9キロしか走れない

sedan.fuel(50); // 双方,50リットル給油しようと試みるが,実際には30しか入らない
wagon.fuel(50);

sedan.drive(100); // 100キロ走ろうとする
System.out.println(sedan.odometer()); // 実際,走れた距離を表示
sedan.drive(200); // 200キロ走ろうとする
System.out.println(sedan.odometer()); // 実際,走れた距離を表示

wagon.drive(100); // 100キロ走ろうとする
System.out.println(sedan.odometer()); // 実際,走れた距離を表示
wagon.drive(200); // 200キロ走ろうとする
System.out.println(sedan.odometer()); // 実際,走れた距離を表示
}

よろしくお願いします。

825 名前:810 mailto:sage [2007/04/30(月) 23:39:10 ]
>>812-813 >>822
早い回答をありがとうございます。


826 名前:デフォルトの名無しさん [2007/04/30(月) 23:43:45 ]
>>820
ご回答ありがとうございます。
確かに一度しか使っていないので配列使う必要ないですね。
配列を使わない場合、

     y = (double)(y + x.charAt(i)*(Math.pow(2, (3-i))));

みたいに書けば、配列必要ないですね。非常に勉強になりました。ありがとうございます。
ただ、この場合も結果は733になってしまいますが・・・
charをintに変えるには、

(int)(x.charAt(i))

みたいにするんですか?実行してみても結果は変わらなかったのですが・・・
文字列を数字として認識させるにはどうしたらいいのでしょうか?

>>821
ご回答ありがとうございます。
突っ込みどころ満載のプログラムですよね・・・orz
確かに、821さんのようにプログラムを書き換えると正しい答えが出ました。
非常に勉強になります。ありがとうございます。
ただ、

  a[i] = x.charAt(i) - '0'

の意味が分からないのですが、どういう意味でしょうか?
「xのi番目の数から0を引いた数をa[i]に代入する」
といった意味でしょうか?

かなりの初心者なモノで、質問ばかりで申し訳ないです。

827 名前:デフォルトの名無しさん mailto:sage [2007/04/30(月) 23:51:51 ]
>>826
どちらかというと質問スレ向けっぽい気もするけど

a[i] = x.charAt(i) - '0';
は各文字コードと'0'との差を取る意味
javaで使ってる文字コードは'0','1','2'...の順序に並んでいるので
数字と'0'との差を取ると数になる

(int)(x.charAt(i)) は文字コードをint型に変換しているだけなので'0'が0になるわけではない

a[i] = Character.getNumericValue(x.charAt(i));
てのもあるのでAPIドキュメントを見てみるのもいい

828 名前:デフォルトの名無しさん [2007/04/30(月) 23:56:10 ]
>>827
ご回答ありがとうございました。
何となくですが、分かったかもしれないです。
非常に助かりました。ありがとうございます。


スレ違いで申し訳ないです。
でも、非常に勉強になりました。
ありがとうございました。

829 名前:827 mailto:sage [2007/04/30(月) 23:58:54 ]
ごめん
a[i] = Character.digit(x.charAt(i), 10);
でもいいや

>>828
ソースがほとんどできあがっていて
思い通りに動かない原因が特定できないくらいなら
質問スレで聞いても十分だと思う
そのときは宿題とか課題とかは伏せておいたほうが無難かも



830 名前:デフォルトの名無しさん [2007/05/01(火) 00:06:06 ]
>>829
分かりました。
これからは、質問スレで聞いてみようと思います。
本当にお手上げな学校の課題が出た場合は、
こちらのスレも利用するかもしれないので、
その際はヨロシクお願いします。

ありがとうございました。

831 名前:wwww mailto:sage [2007/05/01(火) 00:32:02 ]
仮想化とは対象物を不完全ながらもその性質や姿を模倣し現出させることだ。
対して抽象化は、対象物のある特徴的な側面を抽出し概念化することだ。
仮想化で抽象化の技術が使われることはあるだろうが、その逆は考え難い。
コンピュータを使い、扇風機やコタツを抽象化することはできても、仮想化する
ことはできないのだ。少なくとも今の技術では無理だ。コンピュータがその姿形
を変えることはできないのだから。コンピュータが仮想化できるものは、コンピュー
タそのものが直接扱うものだけだ。例えば、仮想メモリ、仮想ネットワーク、仮想
マシン、仮想キーボードといったものだ。

抽象化した結果表現されるものは、設計者が想定した概念やイメージだ。しかし、
実在するものそのものではなく、人が考えたものであるために、このイメージは
非常に脆く、不安定だ。外部からの影響をもろに受け、形を変え易い。個々人が
持つイメージの些細な相違から認識のずれが生じ易い。扇風機の使い方は人に
よって異なることはないが、人がイメージしたものは、その生成から、破棄に至る
まで、非常に不安定な状態になり易い。それを防ぐには、イメージそのものをなる
べく強固なものにし、インターフェースに一貫性と整合性をもたせ、外因による影響
を受けに難くく、壊れ難くするための技術を見につけ、理解を深めておくしかない。

832 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 01:13:19 ]
>>823
public class Car{
final int fullFuel=30;
private int tank=0,mileage=0,run=0;

public int fuel(int x){
int empty=fullFuel-tank;
if(empty>x){tank+=x;return x;}
tank=fullFuel;return empty;
}

public int odometer(){return run;}

public void efficiency(int x){mileage=x;}

public int drive(int x){
int ad=tank*mileage;
if(ad>x){tank=tank-x/mileage;run+=x;return x;}
tank=0;run+=ad;return ad;
}
}

833 名前:潮吹きたい人この指留まれ〜♪ [2007/05/01(火) 09:33:51 ]
>>817
すまません、どこかに誘導してください〜〜♪
ちなみに、タスクマネジャーからjavaw.exeの
プライオリティを下げると、
eclipseの操作がなんとかできますね。。。


834 名前:デフォルトの名無しさん [2007/05/01(火) 10:18:24 ]
天国に行ってこい!

835 名前:潮吹きたい人この指留まれ〜♪ [2007/05/01(火) 10:41:19 ]
塩吹いて〜♪ あ、極楽極楽www ねっちょりちんぽが欲しい〜〜www

836 名前:デフォルトの名無しさん [2007/05/01(火) 10:45:33 ]
売ってるよ

837 名前:初心者 [2007/05/02(水) 15:46:57 ]
【 課題 】一文字入力し、大文字A〜Zならば”大文字”と、小文字a〜zならば”小文字”と表示させよ。
【 形態 】Javaアプリケーション
【 GUI  】制限なし
【 期限 】明日
【 Ver  】コンソールでjava -version1.4.1_03
【 

838 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:05:59 ]
public class test{
public static void main(String[] args){
int c=0;
try{
java.io.InputStreamReader r = new java.io.InputStreamReader(System.in);
c = r.read();
}catch(java.io.IOException e){}
if('a'<=c&&c<='z')System.out.println("小文字です");
else if('A'<=c&&c<='Z')System.out.println("大文字です");
}
}

839 名前:初心者 [2007/05/02(水) 16:45:24 ]
838ありがとうございました。
質問なのですが、一回実行して終わるのではなく何回も実行できるようにするには
どうすればよいのでしょうか??

a
小文字

大文字

のように続けてしたいのですが。



840 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 16:55:51 ]
while(true)

841 名前:子羊 [2007/05/02(水) 19:44:43 ]
【 課題 】二つの数字x,yをキーボードから入力し、最大公約数とxからyの合計を求める。
【 形態 】Javaアプリケーション
【 GUI  】なし
【 期限 】明後日
【 Ver  】1.5.0_11
【 補足 】丸投げでお願いします。

842 名前:デフォルトの名無しさん [2007/05/02(水) 22:12:03 ]
public class Max {


843 名前:サブリミナル・キッドやっちゃん [2007/05/02(水) 22:25:44 ]
class GCDTest {
public static int gcd(int n,int m){
int r=n%m;
if(r==0) return m;
else return gcd(m,r);
}

public static int kaijo(int n,int m) {
int s;
int i1;
for (i1 = 1; n <= m; i1++)
s *= (double)i1;

return s;
}

public static void main(String[] args){
BufferedReader r =
new BufferedReader(new InputStreamReader(System.in)
int x=Integer.parseInt(r.readLine());
int y=Integer.parseInt(r.readLine());
System.out.println(x+"と"+y+"の最大公約数は"+gcd(x,y)+"です");
System.out.println(x+"から"+y+"の合計は"+kaijo(x,y)+"です");
}
}


844 名前:サブリミナル・キッドやっちゃん [2007/05/02(水) 22:29:50 ]

class MaxXYAndXYGCD {
public static int gcd(int n,int m){
int r=n%m;
if(r==0) return m;
else return gcd(m,r);
}

public static int kaijo(int n,int m) {
int s;
int i1;
for (i1 = 1; n <= m; i1++)
s *= i1;
return s;
}

public static void main(String[] args){
BufferedReader r =
new BufferedReader(new InputStreamReader(System.in)
int x=Integer.parseInt(r.readLine());
int y=Integer.parseInt(r.readLine());
System.out.println(x+"と"+y+"の最大公約数は"+gcd(x,y)+"です");
System.out.println(x+"から"+y+"の合計は"+kaijo(x,y)+"です");
}
}

>>841


845 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 22:32:14 ]
>>841
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29358

846 名前:デフォルトの名無しさん [2007/05/02(水) 22:35:03 ]
>>845
おお!俺間違ってた。適当やっちゃったよー

847 名前:子羊 [2007/05/03(木) 22:01:26 ]
841の問題で最大公約数と合計を別のソースでプログラムするにはどういった事をすればよいでしょうか??

848 名前:デフォルトの名無しさん [2007/05/03(木) 22:54:08 ]
つ【検索しる】

849 名前:子羊 [2007/05/04(金) 08:20:24 ]
【 課題 】4桁以内の正の整数を二つ以上入力し、入力された数の最大値、最小値を求め、さらに何件目
      の入力かを表示させよ。ただし5桁以上もしくは負の数が入力されたら終了とする。
【 形態 】Javaアプリケーション
【 GUI  】なし
【 期限 】明後日
【 Ver  】1.4.0_03
【 補足 】丸投げでお願いします。 連続で申し訳ないです・・




850 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 17:00:11 ]
>>849
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29362

851 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 19:18:36 ]
【 課題 】ttp://www.uploda.org/uporg797526.txt
【 形態 】2. Applet
【 GUI  】4. 制限なし
【 期限 】5/7
【 Ver  】1.6.0_01
【 補足 】丸投げでお願いします。#現在作成中です。。
      読みにくいテキストで申し訳ありません。よろしくお願いします。

852 名前:851 mailto:sage [2007/05/04(金) 23:07:43 ]
【 補足 】後々の追加で申し訳ないです。。
      長方形には条件がつきます。。


(1) 長方形とボードに色をつける。
" ボードの色はwhite とする。
" 長方形の色として指定できる色は以下の通りである。
- red
- blue
- yellow
- gray
(2) 長方形に対する配置の機能の内intersect を以下のように拡張する。
" 重なり部分の色を以下の規則でマージして、色を決定する。
- 色の組み合わせが同じであればgray とする。
- 色の組み合わせが yellow とblue ならば、green とする。
- 色の組み合わせが red とyellow ならば、orange とする。
- 色の組み合わせが red とblue ならば、magenta とする。
- その他の場合は cyan とする。
(3) 長方形は色が異なってもボード上で同じ幅、高さ、位置をもつ場合は同一の長方形とみなす。

853 名前:デフォルトの名無しさん [2007/05/04(金) 23:35:49 ]
【 課題 】キーボードから数値を入力します。入力された数値が奇数であるならば、
      奇数です。と表示し、処理を終了します。
      偶数であるならば入力された数値から100までの偶数の合計を求めよ。
【 形態 】Javaアプリケーション
【 GUI  】なし
【 期限 】明後日
【 Ver  】1.4.0_03
【 補足 】丸投です。



854 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:39:55 ]
>>851
5時間ももたないところにうpされてもな

855 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:40:29 ]
>>853
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29363


856 名前:851 mailto:sage [2007/05/05(土) 00:50:26 ]
失礼いたしました。。

【 課題 】ttp://www.dotup.org/uploda/www.dotup.org6746.txt
【 形態 】2. Applet
【 GUI  】4. 制限なし
【 期限 】5/7
【 Ver  】1.6.0_01
【 補足 】丸投げでお願いします。#現在作成中です。。
      読みにくいテキストで申し訳ありません。あらためてよろしくお願いします。

857 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 01:59:18 ]
待ってる間にじっくり考えても終わってるだろ

858 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 09:08:41 ]
>>856
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29364
////////// "ファイル名" で分割すること。
上段のTextFieldは幅、高さ、x、yで、残り2つはコマンドに応じて必要なもの(x0,y0とかmx,my)。
下段はintersect用の2つ目の四角を指定。
マウスで四角をクリックするたびに、上段の数字が下段に送られ、上段にクリックしたもののサイズと位置が入る。
つまり2つの四角を順にクリックすれば2つを指定できる。

今回のは、前回のやつを色付き対応に拡張するのはやらずに、アプレットを作るだけでいいということ?
とりあえず前回のBoardとRectangleを色付き対応にしている。

859 名前:851 mailto:sage [2007/05/05(土) 12:24:22 ]
>>858
す、すごい・・・。
今回は色付き対応させ、アプレットを作るといった形です。
説明不足で申し訳ないです。。わざわざコメントまでつけて頂いて。。
本当にありがとうございました。



860 名前:デフォルトの名無しさん [2007/05/05(土) 19:09:11 ]
【 課題 】ソフトウェア作成の課題で、マルチスレッドゲームを作っています。
      内容は同一PC内で動く通信ゲームで、Javaアプレットを使用して
      サーバープログラムとクライアントプログラムそれぞれが通信し、
      サーバー起動後、クライアント(最高4人まで)がログインするとそれぞれ違った図形でゲーム画面に表示され、
      ドラッグ&ドロップで行き来できるという内容です。(対戦するといったようなゲーム性はありません。)

      起動画面です:ttp://w1.oroti.com/~gary831/cgi-bin/joyful/img/6.jpg

      もともとのソースは海外の様々なWebサイトから拾ってきた物で、それらを改造して作っているのですが、
      自分にとって初の大きなプログラムなので、エラー数が多く分けが分からない状態になっています。
      その中で一番の問題は、起動画像を見てもらえると分かると思うのですが、プレイヤーを起動した時、
      赤い長方形(Red Rectangle)と、緑の円(Green Circle)はどの窓でも普通に表示されているのですが、
      黄色の円(Yellow Circle)と青の角丸長方形(Blue Rounded Rectangle)だけ、自身の形と他の窓での形が違います。
      ここを修正しようと3〜4時間、コードを調べているのですがいっこうに修正する事が出来ません。
      他のエラー部分も修正しないといけないのですが、とりあえずこの部分だけでも修正してくださる方、よろしくお願いします。

      ソースです。:
      プレイヤー:ttp://w1.oroti.com/~gary831/cgi-bin/joyful/img/3.txt
      シェイプドロウ:ttp://w1.oroti.com/~gary831/cgi-bin/joyful/img/5.txt
      サーバー:ttp://w1.oroti.com/~gary831/cgi-bin/joyful/img/4.txt
【 形態 】1. Javaアプリケーション
【 GUI  】4. 制限なし
【 期限 】5月7日まで
【 Ver  】java version "1.5.0_11"

861 名前:860 [2007/05/05(土) 19:39:39 ]
jarファイルで起動サンプルを作ったので、公開しておきます。

ttp://w1.oroti.com/~gary831/cgi-bin/joyful/img/7.zip

862 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 22:38:41 ]
【 課題 】ttp://nijibox.ohflip.com/futabafiles/001/src/sa15141.txt
【 形態 】Javaアプリケーション
【 GUI  】制限なし
【 期限 】5/7
【 Ver  】1.5.0_11
【 補足 】配列、制御構文まで習いました。よろしくお願いします。

863 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 23:12:13 ]
【 課題 】nijibox.ohflip.com/futabafiles/001/src/sa15172.txt
【 形態 】1. Javaアプリケーション
【 GUI  】4. 制限なし
【 期限 】5/7
【 Ver  】java version "1.4.2"
【 補足 】丸投げです。宜しくお願いします。


864 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 23:51:19 ]
>>862
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29367

865 名前:デフォルトの名無しさん [2007/05/05(土) 23:56:01 ]
メインHDDが8ケ月以内に故障するらしいのですが、どうしたらいいですか?

866 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 23:56:33 ]
問おう、ttp://nijibox.ohflip.com/futabafiles/001/src/sa15141.txtの何処が仕様か!?
総理、納得のいく回答をお願いします。

さて、専門の課題って仕様とか言って実装の断片を箇条書きにして
最後に謎の出力結果を張り付けるだけの
イミフが多いよね。どうしろと?

>・その値は配列の初期化時に与えられるものとする。
その初期化方法とタイミングを考えるのがお前だろ糞講師。

>>862
1)得点の最小値と最大値。
2)score[]をどのタイミングでどうやって初期化するのか。(受験者の点数を何処から取って来るかに関係)

が、最低限決まってないとどうしようもない。
よろしく。
2)はプログラムの使用方法左右するんでそこら辺も考慮。

受験者数が可変とか言ってんのにその得点がハードコーディングってのは考え難いよね?
なんか俺間違ってる?

867 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 23:59:55 ]
862出ちゃったのね・・・orz

868 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:41:56 ]
>>863
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29368


869 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 00:59:09 ]
>>864
ありがとうございます。
参考にさせてもらいました。




870 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 07:06:42 ]
【 課題 】
下記は九九を計算するプログラムの製作途中のものである。
コンパイルは正常終了するが実行時にエラーが出ることが分かっている。
このプログラムの問題点を指摘し、正しく修正すること。
なお、修正箇所は必要最小限にすること。

public class Calc99{
public static void main(String[] args){
String[][] cell = new String[9][];
for(int j = 1; j <= 9; j++){
for(int i = 1; i <= 9; i++){
cell[j][i] = " " + Integer.toString(j * i);
}
}
for(int j = 1; j <= 9; j++){
for(int i = 1; i <= 9; i++){
System.out.print(cell[j][i]);
}
System.out.println();
}
}
}

【 形態 】 Javaアプリケーション
【 期限 】 5/6 17:00
【 Ver 】 特になし
【 補足 】
連休前に出されたのですが今まで放っぽってました。
5/7 10:00 からの授業で提出しますので今日中に解答頂けると有難いです。


871 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 08:39:10 ]
>>868
回答ありがとうございます。

872 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 10:55:58 ]
>>870
3行目
String[][] cell = new String[9][];

String[][] cell = new String[10][10];


873 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 11:02:14 ]
クラス名がC99に見えたぜ

874 名前:■■■質問@■■■ [2007/05/06(日) 19:11:15 ]
【 課題 】
1: // ドルと円の換算プログラム
2:
3: import java. io. * ;
4:
5: public class dollyen {
6: public static void main( String arg[] ) throws IOException {
7: BufferedReader keyln = new BufferedReader (
8: new InputStreamReader ( System.in ) ) ;
9: double r = 112.0, d, y;
10:
11: System. out. print ( “ ドルの金額(終了は 0)> “ ) ;
12:
13: d = new Double( keyln. readLine() ). doubleValue() ;
14: while ( d > 0.0 ) {
15: y = r * d ;
16: System. out. println( d + “ ドルは ” + y + “ 円です “ ) ;
17: System. out. print( “ ドルの金額(終了は 0) > “ ) ;
18: d = new Double( keyln. readLine() ) .doubleValue() ;
19: }
20:
21: } }


875 名前:■■■質問A■■■ [2007/05/06(日) 19:11:51 ]
《実行結果》
C : \jp>javac dollyen. java

C : \jp>java dollyen
ドルの金額(終了は 0 ) > 100
100.0 ドルは11200.0円です
ドルの金額(終了は 0) > 50
50.0 ドルは5600.0円です
ドルの金額(終了は 0) > 0

C : \jp>

《問題》
上記のプログラムを温度摂氏(C)を入力して
華氏(F)を出力するものに変更しなさい。
C  0 100
F 32 212

【 形態 】多分Javaアプリケーションです
【 GUI 】?
【 期限 】火曜日まででお願いします(><)
【 Ver  】?
【 補足 】○投げですすいません。宜しくお願い致しますm(__)m


876 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 19:31:13 ]
>>875
摂氏--華氏の換算式

877 名前:■■■質問■■■ [2007/05/06(日) 19:47:47 ]
>>876
レス有り難うございます。
華氏→摂氏の換算式は C=(F-32)x5/9 です!

878 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 20:41:24 ]
>>875
↓行頭の全角スペースは半角に直すこと。

import java.io.*;

public class dollyen {
 public static void main(String[] args) throws IOException {
  BufferedReader keyln =
   new BufferedReader(new InputStreamReader(System.in));
  
  double f, c;
  
  System.out.print("温度摂氏(終了は0)> ");
  f = new Double(keyln.readLine()).doubleValue();
  
  while (f > 0.0) {
   c = (f - 32) * 5 / 9;
   System.out.println("華氏(F)" + c + "度です。");
   System.out.print("温度摂氏(終了は0)> ");
   f = new Double(keyln.readLine()).doubleValue();
  }
 }
}


879 名前:878 mailto:sage [2007/05/06(日) 20:44:41 ]
>>878の間違えて摂氏と華氏(fとc)が逆だった。
まぁ式直すだけだから自分で直してくれ。




880 名前:■■■質問■■■ [2007/05/06(日) 21:07:59 ]
>>878さん有り難うございます!!<(__)>
fとcを入れ替えるのは、
c = (f - 32) * 5 / 9;のところだけ
でおkですか!?


881 名前:デフォルトの名無しさん [2007/05/06(日) 22:42:25 ]
>>868
863です。問題なく動作いたしました。ありがとうございました。

882 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:01:52 ]
【 課題 】
俗に「Javaにはポインタは存在しない」と云われているが、
実行時に NullPointerException が発生することがあるのはなぜか?
50字以内で説明せよ。

【 期限 】月曜日中
【 補足 】色々語ることが多すぎて50字に収まりません(><)


883 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:08:31 ]
逃れられると思うなよ
>>882ガッ

884 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:12:03 ]
>>882
Javaの言語仕様でポインタが扱えないだけで内部の実装ではポインタを使ってるから。

で良いんじゃない?
う〜ん、説明も何もソースコード公開されてるんだが。

>色々語ることが多すぎて50字に収まりません(><)
根本的に突っ込み所のある課題だから仕方ない。
たぶんお前さんは間違ってない。

885 名前:デフォルトの名無しさん [2007/05/06(日) 23:22:38 ]
【課題】
例えばコマンドプロントにjava 154 54 12 250
と入力したら
250
154
54
12と出力されるプログラムを記述せよ。

class big{public static void main(String[] args){
int a = 0;int b = args.length-1;
a=Integer.parseInt(args[a]);b=Integer.parseInt(args[b]);
String tmp;
while(a<b){
tmp=args[a];
args[a]=args[b];
args[a]=tmp;
a++; b--;
for(int i=0; i< args.length; i++)
System.out.println("大きい順に並びます");
System.out.println(""+args[ i ]+""); } } }
【 形態 】 Javaアプリケーション
【 期限 】 5/7 9:00まで
【 Ver 】 特になし
【 補足 】 連休前に出題され書いてみたのですが正しく動作されなくて全く分かりません。急ですがお願いします。

886 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:31:23 ]
>>885
なにこれ
課題は引数を降順にしろってことだよな
で、おまいさんのプログラムを修正しろってことか?
それともそれ無視していいのか?


887 名前:デフォルトの名無しさん [2007/05/06(日) 23:35:20 ]
>>886
すみません。修正して貰えませんか。

888 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:54:45 ]
>>887
修正する部分のほうが修正されていない部分よりも圧倒的に多くなる気がする。
それは修正というべきものなのか疑問だ。

class big{
public static void main(String[] args){
java.util.Arrays.sort(args, new java.util.Comparator<String>() {
public int compare(String o1, String o2) {
return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
}
});
System.out.println("大きい順に並びます");
for(String arg : args) System.out.println(arg);
}
}
java 154 54 12 250と入力しても動かないけどな。
java big 154 54 12 250

889 名前:デフォルトの名無しさん mailto:sage [2007/05/06(日) 23:57:49 ]
>>882
NullPointerExceptionってのは単に例外のクラス名がそういう名前のだけ。
自分で発生させることもできるし。
throw new NullPointerException("ぬるぽ");



890 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:02:34 ]
>>890
catch (NullPointerException e) {
System.err.println("ガッ");
}

891 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:03:25 ]
自己撞着orz...

892 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:03:53 ]
逃れられると思うなよ
>>889ガッ


893 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:16:19 ]
>>887
元のをできるだけ残してみた。でも構成からして違うし。
class big{
public static void main(String[] args){
String tmp;
for(int i=0; i<args.length; i++){
for (int j=i; j<args.length; j++){
if (Integer.parseInt(args[i]) < Integer.parseInt(args[j])) {
tmp=args[i];
args[i]=args[j];
args[j]=tmp;
}
}
}
System.out.println("大きい順に並びます");
for(int i=0; i< args.length; i++) System.out.println(""+args[ i ]+"");
}
}
154てクラス名はさすがに使えないからjava 154 54 12 250で実行ネタは難しいな。

894 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 00:22:21 ]
>>888
大きい順か。
× return Integer.valueOf(o1).compareTo(Integer.valueOf(o2));
○ return -Integer.valueOf(o1).compareTo(Integer.valueOf(o2));

895 名前:デフォルトの名無しさん [2007/05/07(月) 00:27:14 ]
>>888
>>893
レス有難う御座います!!ホント助かりました!!

896 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 04:41:27 ]
【 課題 】
CSVファイルからのデータ検索ページを作成しなさい。
また、HTMLファイルのフォームから送られてきた文字列を検索の条件に使用し、結果をJSPを使い<table>で出力しなさい。
なお検索結果が

 一戸建て,2LDK,東京都
 一戸建て,2LDK,埼玉県

であるならば、

 一戸建て,2LDK,東京都
 -,-,埼玉県

と表示しなさい。


[使用するCSV]
一戸建て,2LDK,東京都
一戸建て,2LDK,埼玉県
一戸建て,3LDK,埼玉県
マンション,3K,北海道
マンション,4K,大阪府

【 形態 】1.
【 GUI  】4. 制限なし
【 期限 】5月8日までによろしくお願いします
【 Ver  】java version "1.5.0_11"
【 補足 】
ttp://www.iis.u-tokyo.ac.jp/~susaki/envinfo/jsp_csvfile.html#form_reg
↑を参考にCSVの検索はなんとかなりそうなんですが、検索結果の置換(?)がまったくわかりません。。。

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

897 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 18:42:32 ]
>>896
前行の結果を持っていて、前行と同じだったら"-"を出力させるようにすればいいんじゃないかな?

898 名前:デフォルトの名無しさん mailto:sage [2007/05/07(月) 20:24:42 ]
>>896
参考になれば幸い。
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29373

899 名前:のん [2007/05/08(火) 14:55:21 ]
【 課題 】ファイルを読み取り、各タブ文字をスペース文字に変換し、その出力を別のファイルに書き込むアプリケーションを作成せよ
(入出力 バッファ付き文字アプリケーション)
【 形態 】Javaアプリケーション(main()で開始
【 GUI  】制限
【 期限 】明日
【 Ver  】
【 補足 】

なにとぞよろしくお願いいたします。
宿題です。できません。
2ちゃんの方々の力を少し分けてください。



900 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 14:59:19 ]
>>898
もうちょいkwsk

901 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 15:31:33 ]
アンカーミス
>>899

902 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:12:47 ]
>>899
import java.io.*;
public class Expand {
public static void main(String[] args) throws IOException {
if (args.length != 2) { System.err.println("java Expand infile outfile"); return; }
int expand = 8; // TAB width
BufferedReader in = null;
BufferedWriter out = null;
try {
in = new BufferedReader(new FileReader(args[0]));
out = new BufferedWriter(new FileWriter(args[1]));
String s;
while ((s = in.readLine()) != null) {
StringBuilder sb = new StringBuilder(s);
int index = 0;
while ((index = sb.indexOf("\t", index)) != -1) {
sb.setCharAt(index, ' ');
for (int i = index % expand + 1; i < expand; i++) sb.insert(index, ' ');
}
out.write(sb.toString());
out.newLine();
}
} finally {
if (in != null) in.close();
if (out != null) out.close();
}
}
}

903 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:26:27 ]
あー、expandコマンドを作れって意味にとったけど、
もし単純にタブ1文字ををスペース1文字にに置き換えるだけという意味だったなら、
int expand = 1; // TAB width
にすれば動作的にはそうなる。無駄処理がいっぱいあることにはなるが。

904 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:43:19 ]
もし>>903の意味なら、>>902の外側のwhileループ内の、
StringBuilder sb = new StringBuilder(s);
int index = 0;
while ((index = sb.indexOf("\t", index)) != -1) {
sb.setCharAt(index, ' ');
for (int i = index % expand + 1; i < expand; i++) sb.insert(index, ' ');
}
を取っ払って、次の2行を、
out.write(s.replace('\t', ' '));
out.newLine();
に。

905 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:49:41 ]
各タブ文字って書いてあるけど垂直タブは?

906 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:01:23 ]
普通に考えりゃ各タブ文字って各種のタブ文字って意味じゃなく
ファイルに現れた各々のタブ文字についてって意味だろw

907 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 18:46:30 ]
ハードタブからソフトタブに書き換えろ。

って言えばほかに解釈のしようが無いのにね。
言葉を知らんのは不便だなぁ。

908 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 21:45:15 ]
【 課題 】球を跳ねさせる
【 形態 】Applet
【 GUI  】制限なし
【 期限 】来週の月曜日まで
【 Ver  】java version "1.6.0"
【 補足 】kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/3956.txt
球の動きであるルンゲクッタ法は既にできています。
そこで、地面と壁があると考え(別に描かなくてもいいです)
球の動きに跳ねる動作を加えて欲しいです。
地面に当たれば跳ねて、壁にあたれば跳ね返るという具合に。
よろしくお願いします。

909 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:33:50 ]
Java・・・いつのまに1.6なんて出やがった
気づかなかったよママン(´・ω・`)



910 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:12:04 ]
【 課題 】立方体を定義し、
スクロールバーを用いてXY平面上の45度の軸の周りを回転する映像を描画する
【 形態 】Applet

【 期限 】木曜日まで
【 Ver  】わかりません
【 補足 】立方体とを回転させることまではできたのですが、45度傾かせることができません。
よろしくお願いします

911 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:29:46 ]
>>910

>【 Ver  】コンソールでjava -versionを実行し、その結果を貼ります。 《必須》

>立方体を定義し
既存ライブラリの有無。

>スクロールバー
スライダーじゃなくて?

>回転する映像を描画する
正四面体モデリングしてアニメつけてavi吐いてJMFで描画!俺って頭イイ!!

さて、今のままじゃ永遠に回答は来ないわな。

912 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:31:55 ]
【 課題 】複数の口座による預金、引き出し等。
【 形態 】1. Javaアプリケーション
【 期限 】木曜日まで
【 Ver  】1.5.0
【 補足 】丸投げでお願いします。問題文は
      www.uploda.org/uporg802811.rtf.html
      にuploadしてあります。
      よろしくお願いします。

913 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:40:34 ]
>>912です。
アカウントクラスの問題のところで最初の変数がnextCustIDとなっていますが
実際はnextAcctNoです。失礼しました。

914 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:44:41 ]
>>911
すいません。
再度。

【 課題 】
スクロールバーを用いてXY平面上の45度の軸を中心に回転する立方体を描画する

【 Ver  】1.5.0

スクロールバーを動かすと立方体が回転します。
回転の中心は立方体の中心です。

わかりずらくてすいません。

915 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 04:08:54 ]
>>908
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29374
元のソースをできるだけ残してるけれど、アニメーション部分は総書き直し。
元のままだと何も描画されずに応答も無くなっただろ?
paintの中で無限ループするなんて無茶しやがってw
x=xmin,x=xmax,y=yminに障壁があるものとしている。
水平方向は等速直線運動だから問題ないが、
鉛直方向は等加速度直線運動だから本当はこの方法では誤差が出てくる。
タイムスライスが小さいのでy=ymin丁度の時点の速度が得られているかもしれないが、
y<yminが得られた時は誤差が蓄積していく。とはいえ、そうだとしても長時間動かさないと、
このパラメータなら気にならないとは思う。

916 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 16:35:58 ]
C/C++スレにあるようなうpロダの需要ってある?
あるなら作ろうと思うんだが。
ソースポストネット、手軽に投稿できるのはいいんだがログがずっと残るから
ひょんな事からばれてパアという事になりかねん気がしてきた。

917 名前:デフォルトの名無しさん [2007/05/09(水) 18:18:55 ]

【 形態 】1. Javaアプリケーション(main()で開始)    
【 GUI  】4. 制限なし
【 期限 】 2007/05/10 AM9:00 まで
【 Ver  】java version "1.5.0_11"
【 用語 】特になし
【 補足 】丸投げです。よろしくお願いします。

微分方程式
d^2y/dt^2-μ(1-y^2)dy/dt+y=0, 0≦t≦10

y(0)=2,dy/dt(0)=0,μ=1として上の微分方程式
を数値的に解き、dy/dt(t)をグラフ表示しなさい。
また、分かりやすく説明しなさい。



918 名前:デフォルトの名無しさん [2007/05/09(水) 18:27:41 ]

【 形態 】1. Javaアプリケーション(main()で開始)    
【 GUI  】4. 制限なし
【 期限 】 2007/04/29 PM01:00 まで
【 Ver  】java version "1.5.0_11"
【 用語 】特になし
【 補足 】丸投げです。よろしくお願いします。

微分方程式
d^2y/dt^2-μ(1-y^2)dy/dt+y=0, 0≦t≦10
を考える。
y(0)=2, dy/dt(0)=0,μ=1として微分方程式を数値的に解き、
dy/dt(t)をグラフ表示しなさい。また、分かりやすく説明しなさい。



919 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 20:42:02 ]
物理のお勉強ですか?
微分・積分とはまた、これぞ高校生!って内容だな。
ナツカシス



920 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 20:55:54 ]
>>912です。課題を上げなおしました。
www.uploda.org/uporg803605.rtf.html


921 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:41:03 ]
【 課題 】文字列の最初の10文字と最後の10文字とを表示するプログラム
【 形態 】Javaアプリケーション
【 GUI  】制限なし
【 期限 】今日
【 Ver  】
【 補足 】 最初の10文字までの方まではできましたが最後の10文字がわからないです

class 10Chars{
public static void main(String args[]){
String s ="One Two Three Four Five Six Seven";
String substring = s.substring(0,10);
System,out,println(substring);
}
}

922 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 21:43:35 ]
>>921
ヒント: String.length() メソッド

923 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 22:37:40 ]
>>921
最初の10文字までの方もできてないじゃん
コンパイル通らねえ
そんなお前にはこれでいいだろう
public class Chars10 {
public static void main(String[] args) {
String s ="One Two Three Four Five Six Seven";
String substring = s.substring(0,10);
System.out.println(substring);
while (s.length() > 10) s = s.substring(1);
System.out.println(s);
}
}

924 名前:921 mailto:sage [2007/05/09(水) 23:09:48 ]
>>922 >>923
ありがとうございました

925 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:34:30 ]
ネットワークプログラミングが課題で出たのですが解りません。
誰か助けて頂けないでしょうか。

問1 次を実行した結果を書きなさい
サーバー1

#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>

#define PORT 8427

int main(int argc, char* argv[]){
struct sockaddr_in server;
struct sockaddr_in client;
int s_wait;
int s_connect;
int client_len;
unsigned char* client_addr;
char buf[128];


926 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:35:16 ]
bzero((char *)&server, sizeof(server));
server.sin_addr.s_addr = htonl(INADDR_ANY);
server.sin_family = AF_INET;
server.sin_port = PORT;


if((s_wait = socket(AF_INET, SOCK_STREAM, 0)) == -1){
fprintf(stderr, "サーバへのソケットが生成できません。 \n");
exit(1);
}

if(bind(s_wait, (struct sockaddr*)&server, sizeof(server)) == -1){
fprintf(stderr, "ソケットにサーバを設定できませんでした。 \n");
exit(1);
}

927 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:35:46 ]
if((listen(s_wait, 5)) == -1) {
fprintf(stderr, "待ち行列が設定できません。 \n");
exit(1);
}

client_len = sizeof(client);
if((s_connect = accept(s_wait, (struct sockaddr *)&client, &client_len)) < 0) {
fprintf(stderr, "サーバに接続を要求できません。 \n");
exit(1);
}




if((close(s_wait)) == -1) {
fprintf(stderr, "ソケットディスクリプタをクローズできません。 \n");
exit(1);
}


client_addr = (unsigned char*)&(client.sin_addr.s_addr);
printf("connected to %d.%d.%d.%d.",
client_addr[0], client_addr[1], client_addr[2], client_addr[3]);

928 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:36:14 ]
>>925-927
だが言語が違う

929 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:36:16 ]
sprintf(buf, "HELLO, %d.%d.%d.%d!.",
client_addr[0], client_addr[1], client_addr[2], client_addr[3]);
if((write(s_connect, buf, strlen(buf))) == -1) {
fprintf(stderr, "ソケットへデータを書き込めません。 \n");
exit(1);
}

if((close(s_connect)) == -1) {
fprintf(stderr, "ソケットディスクリプタをクローズできません。 \n");
exit(1);
}
}



930 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 00:53:09 ]
>>928
すいませんでした
cにいけばいいですか?


931 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 05:45:44 ]
>>930
授業中寝過ぎだろw

932 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 09:45:38 ]
【 課題 】1、 計算機イプシロンを求めるプログラムを組め。
@ 倍精度(double)
A 単精度

【 形態 】1. Javaアプリケーション
【 期限 】来週の木曜日
【 Ver  】1.5.0
【 補足 】お願いします。

933 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 14:21:55 ]
>>932
float ef = 1; while (ef + 1 > 1) ef /= 2; ef *= 2;
double ed = 1; while (ed + 1 > 1) ed /= 2; ed *= 2;
System.out.println("float: " + ef + ", double: " + ed);
System.out.println("1.0f: " + Integer.toHexString(Float.floatToRawIntBits(1)));
System.out.println("1.0f + eps: " + Integer.toHexString(Float.floatToRawIntBits(1 + ef)));
System.out.println("1.0: " + Long.toHexString(Double.doubleToRawLongBits(1)));
System.out.println("1.0 + eps: " + Long.toHexString(Double.doubleToRawLongBits(1 + ed)));
System.out.println("float: " + (float)StrictMath.pow(2, -23) + ", double: " + StrictMath.pow(2, -52));

934 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 21:00:53 ]
【 課題 】www.csync.net/service/file/view.cgi?id=1178798337

【 形態 】1. applet
【 期限 】来週の木曜日
【 Ver  】1.5.0
【 補足 】よろしくお願いします。初心者でもわかりやすいようにしていただけるとありがたいです。

935 名前:デフォルトの名無しさん [2007/05/10(木) 23:31:02 ]
【 課題 】インターネット時代の暗号技術―噂の公開鍵を作ってみよう―
【 形態 】 Javaアプリケーション(main()で開始)
【 GUI 】制限なし
【 期限 】5月末まで
【 用語 】平分:元データ、人間が(第三者も)読むことが出来る
      暗号文:第三者に解読不可能な形式に変換されたデータ
      暗号化:平分を暗号化する処理
      複合化:暗号文を平分に変換する処理
      鍵:暗号化、複合化に必要なパラメタ
【 補足 】
公開鍵のしくみ
1番簡単な例だとインターネットを用いて商業活動などを行うとき、たとえばクレジットカードの
番号が知れ渡って悪用される危険を犯したい人はいません。
しかし本や航空券の購入などには便利です。普通、家や金庫の鍵は、所有者や所有者が開けることを許した人が鍵を持ちます。
その場合、不屈性された鍵を普通は直接手渡します。ところがインターネットではそのようなことは出来ません。
そこで考えられたのが閉める鍵と開ける鍵を別々にするという方法です。
そのように分けると閉めるための鍵はネット上で誰でも使えるようにしておいて開けるための鍵は自分だけが知っていればいいわけです。
暗号のための鍵をインターネットでやり取りするという矛盾を抱えるひつようがなくなります。

A氏の秘密鍵は1234,公開鍵はABCD, B社の秘密鍵は6789,公開鍵はVXYZ
A氏がB社から物を買う。→他の人には知られないよう自分のクレジットカードの番号を送りたい。
(1) A氏はB社の公開鍵VXYZを使って自分のクレジットカードの番号を暗号にしてB社にメールで送る。
(2) 受け取ったB社は自社の秘密鍵(非公開)6789で複合化します。
(3) 誤ってコレが悪意のあるCさんに誤送されたりクラッキングされてもB社の公開鍵では
複合化できないのでB社の秘密鍵が漏れない限り安全


*今回の課題*
上記のアルゴリズムに従って公開鍵と秘密鍵を生成するプログラムを作って生成してください(きちんと関数わけすること)
これらの鍵を使って暗号化、複合化を行うプログラムも作って結果を確認してください。
暗号化と複合化は同じ関数で引数が異なるだけというのはアルゴリズムを見ればわかると思います。(なるべくコメントをつけておくこと)


936 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:28:47 ]
>>935
無茶しやがって・・・(AA略

937 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:35:53 ]
>>935
まぁなんだ・・・
うん、がんばれ

938 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 00:42:46 ]
>>935
特許庁→RSA暗号技術ゲッツ→Javaで書く→タイホーwww

939 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 01:28:38 ]
つーか、こんな問題出す奴は馬鹿にも程があるな。




940 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 04:15:29 ]
>>935
public class HogeCode {
private static java.util.Random r = new java.util.Random();
public static byte[] generateKey() {
byte b; do { b = (byte)r.nextInt(); } while (b == -128);
return new byte[]{b, (byte)(-b)};
}
public static byte code(byte text, byte key) {
return (byte)(text + key);
}
public static void main(String[] args) {
byte[] key = HogeCode.generateKey();
System.out.printf("公開鍵: %d, 秘密鍵: %d%n", key[0], key[1]);
byte[] 元の文 = "Hogeほげ".getBytes();
byte[] 暗号文 = new byte[元の文.length];
byte[] 復号文 = new byte[元の文.length];
System.out.print("元の文: "); for (byte b : 元の文) System.out.print(b + ","); System.out.println("\"" + new String(元の文) + "\"");
for (int i = 0; i < 元の文.length; i++) 暗号文[i] = HogeCode.code(元の文[i], key[0]); // 公開鍵で暗号化
System.out.print("暗号文: "); for (byte b : 暗号文) System.out.print(b + ","); System.out.println("\"" + new String(暗号文) + "\"");
for (int i = 0; i < 暗号文.length; i++) 復号文[i] = HogeCode.code(暗号文[i], key[1]); // 秘密鍵で復号化
System.out.print("復号文: "); for (byte b : 復号文) System.out.print(b + ","); System.out.println("\"" + new String(復号文) + "\"");
for (int i = 0; i < 暗号文.length; i++) 復号文[i] = HogeCode.code(暗号文[i], key[0]); // 公開鍵で復号化
System.out.print("公開鍵で復号: "); for (byte b : 復号文) System.out.print(b + ","); System.out.println("\"" + new String(復号文) + "\"");
}
}

941 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 04:25:24 ]
あとは公開鍵や暗号文から秘密鍵や平文を知るのが難しいアルゴリズムをいかに見つけるかだが
それは商売のネタになるくらいなのでがんばってくれ

942 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:11:11 ]
>>940
間違ってはないがそういう問題じゃないよな暗号化って、むしろ>>941
だからメチャクチャなんだよな>>935の課題って。

ところでそろそろ次スレだね

943 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:16:24 ]
いや、たぶん
> 上記のアルゴリズムに従って
ってあるくらいでアルゴリズムは提示されていて
それを質問者が出していないだけだと思ったんだが
単に既にあるアルゴリズムの実装とそのテストが課題だと思う
>>940はもちろんシャレだよ

944 名前:デフォルトの名無しさん [2007/05/11(金) 06:26:07 ]
>単に既にあるアルゴリズムの実装とそのテスト
それこそ、もしかしたら本当に>>398だなw
アメリカなんかじゃ保護されたアルゴリズムは輸出制限掛かってたくらいなのに。


945 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:29:08 ]
ミスった。

>既にあるアルゴリズムの実装とそのテスト
てぶぶんは同意だからそれがないとどうしようもないなぁ。

あと、>>938だね

946 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 06:35:11 ]
普通にRSAじゃないのかな。
実装するのにシンプルでパブリックドメインで。

947 名前:デフォルトの名無しさん [2007/05/11(金) 09:02:56 ]
>>935の補足です

RSA暗号方式を使用してください
1. 必要なアルゴリズム
(1)素数の求め方
pやqの素数は256bit前後が一般的です。素数にしてもあくまで素数である確率がある程度以上ということでやっています。
乱数を使って見つけてください。約数の有無を調べればいいわけだが・・2からqまでなんて調べないこと、ほとんどが不要な無駄な計算になります。
2からsqrt(q)で十分です。
@ システムが用意している乱数を作る関数を使い適当な整数を得る。
A これを今日は3桁以内になるように変換する
B それが素数かどうかを調べる
C 2つの素数が見つかるまで(pとqに設定)上記@からの処理を繰り返す
n=p*qとm=(p-1)*(q-1)を計算する

(2)eの見つけ方(最大公約数gcd(e,m)ただm=(p-1)*(q-1))
次にgcd(e,m)=1となるeを見つける
ここで最大公約数(gcd)を見つける必要がありますがこれには有名なユーグリッドの互助法というのがあります。
ここでもまた適当に乱数eを発生させ(2桁以内),gcd(e,m)が1かどうかを調べる。gcd(e,m)が1ではない場合は1になるまで乱数を発生させる。
ユーグリットの互助法によりxとyのgcdを求める手順
@ 常にx>yとなるように、場合によってはxとyの値を交換する
A z = x mod y を計算する。zが0だったら終了(gcdはy)
B yとx – yを比較して大きいほうをx小さいほうをyとする →Aへ

(3)dの見つけ方
eが決まりm=(p-q)*(q-1)が決まると(e*d) mod m = 1となるdを計算する必要がある
(2)よりeとmは互いに素(gcd(e,m)=1)であるとき
1=e*d(mod m)となるdが存在する。(法mに関するeの乗法的逆元存在する)
このdを求めるためには不定方程式e*d+m*n=1を解くことになる
そのために今度はユーグリッドの互助法の拡張定理を使う


948 名前:デフォルトの名無しさん [2007/05/11(金) 09:07:12 ]
>>947の続き

ユーグリッドの互助法の拡張定理により、互いに素であるyとaに対して
a*x+b*y=1となるxを求める。
作業用のローカル変数(s,t,u,v)を次のように初期化
s=a; t=y; u=1; v=0;
while(sが正の間){
q=t/s(切捨て)
w=t-q*s
t=s
s=w
w=v-q*u
v=u
u=w
}
v<0ならばv+yがv>0ならばvが求めるxになる
このときの公開鍵が(e,n)で秘密鍵が(d,n)である。ただしpとqも秘密にする必要がある
(4) 暗号化と複合化
平分Mの暗号化Me%n -> C
暗号文Cの複合化Cd%n -> M
MeやCdの計算をそのまま行うとあっという間にオーバーフローしてしまいます。Word=2の31乗を超えて
しまうのです。そこで次のような手順で計算するようなプログラムにしてください。
たとえば111の37乗%323という計算をする場合は次のように計算させます
111の2乗%323=111*111%323=2321%323=47
111の3乗%323=111*47%323=5217%323=49
111の4乗%323=111*49%323=5439%323=271

111の37乗%323=111*305%323=33855%323=263
このように計算させることにより圧倒的に計算量が少なくなります。

949 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 12:20:57 ]
ど、どうでもいいけど言葉として、より適切なのは「復号化」じゃなくて「復号」なんだからねっ!



950 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:04:41 ]
「暗号化する」と「復号する」
技術用語としては対称性がないのが美しくないな

951 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:37:30 ]
暗号する

952 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 14:40:04 ]
>>949-951

www.st.ryukoku.ac.jp/%7Ekjm/admin/2005/10.html#20051025__fukugou


953 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:08:16 ]
「復号化」で「暗号化」と対称だ、というのは馬鹿っぽいけど
だからと言って「暗号化」と「暗号解除」で対語だというのも何だかね
「暗号」も「する」を付けたら動詞になるようになればいいが
「暗号する」は違和感あり過ぎだw
暗号化で暗号になるのなら平文にするのは平文化か?これも酷いが

954 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:16:56 ]
> 「復号化」で「暗号化」と対称だ、というのは馬鹿っぽいけど
技術者が『「復号」が正しい』とか言うのも馬鹿っぽい。

そんなん国語学者にでもやらせとけ、とか思う。

955 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:18:39 ]
訳語2.0のスレはここですか?

956 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:19:21 ]
欧米化っ!

957 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:21:44 ]
専門家にやらせて良い方向に進んだ例はない

958 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:23:10 ]
>>957
専門化

959 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 15:37:04 ]
スレの大喜利化。。。



960 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:08:13 ]
で、誰かやってるの(*‘ω‘ *) ? >935

話は変わるけど、誰かバーローwwwで出てきた
ナイトバロン(ウィルス)をJavaで作ってくださいぽっぽ(*‘ω‘ *)

961 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:08:36 ]
>>947
その理論を15〜20年くらい前にログインで読んだときは感動した覚えがあるな

962 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:18:54 ]
マスコミか!と掛けまして、またお前か!と解く
そのこころは?

963 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:24:46 ]
>>962
誤爆は何かうp

964 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:37:19 ]
まあ>935は
明日になっても誰もやってなかったらやったるよ
興味あるし

965 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 20:42:40 ]

そのこころは、えー、笑天はガチかどうかが何かと話題になりますが、実は誤爆も
含めて、前もってコミにしてあるわけで、仕込みと申しますか、ヤラsうわなにをすrr



        (そのままでしばらくお待ちください)



       **** ぉーぃ、やまだくん! クマのぬいぐるみ。 はやくはやく!!



966 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:27:57 ]
>>964
ついでに商用でも使えるライセンスでライブラリー化お願いします(=ω=)

967 名前:デフォルトの名無しさん mailto:sage [2007/05/11(金) 21:58:53 ]
bouncycastle では駄目なん?

968 名前:デフォルトの名無しさん mailto:sage らきすたネタでお送りします [2007/05/12(土) 00:48:20 ]
(=ω=. ) いや、課題に既製品使っちゃ駄目でしょ。常識的に考えて・・・。



969 名前:らき☆すたチャンネル mailto:sage 二世容坊花台 [2007/05/12(土) 01:47:50 ]
【 課題 】 らき☆すた 動画の好きなコマをAAに変換できるWebアプリケーションの作成
【 形態 】 3. Servlet (Webサービス API提供可能)
【 GUI  】 Flash
【 期限 】 らき☆すた放送終了まで(納期を延長したければ、京兄へ100クールにしてくださいと要望送る汁)
【 Ver  】 servlet2.1以降 Java1.5以降 Flash MX以降
【 補足 】 出来れば、ニコニコ動画開発スタッフになって、拡張機能にして下さい。

さて、らき☆すた ネタはここまでにしておこうね(=ω=)



970 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 06:14:35 ]
実況スレにうp!うp!と書き込み続けるだけなら出来そう

971 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:02:22 ]
【 課題 】
以下の2つの行列の積を計算するプログラムを配列を使って書け。
A =
1 2 3
1 1 1
2 2 2

B =
1 2
2 4
5 6

Ci,j = [n]納k=1] Ai,k・Bk,j

【 形態 】1. Javaアプリケーション(main()で開始)/
【 GUI  】4. 制限なし
【 期限 】2007/05/14 PM01:00まで
【 Ver  】java version "1.5.0_11"
【 補足 】丸投げです。よろしくお願いします。

972 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 22:43:40 ]
>971
前に作ったヤツ。
ttp://www.wikiroom.com/java/index.php?SourcePost__#p36dc362

973 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 10:09:28 ]
>>972
ありがとうございます

974 名前:デフォルトの名無しさん [2007/05/13(日) 12:04:10 ]
>>935
>>947
>>948
誰かやってください
お願いします

975 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:15:21 ]
うぜえ
今やってたのにやる気うせた

976 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 12:18:48 ]
やってもいないのにそんなことを言うもんじゃないよ

977 名前:デフォルトの名無しさん mailto:sage [2007/05/13(日) 13:08:00 ]
>>974
だいじょうぶ。期限は5月末までだ。






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<383KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef