[表示 : 全て 最新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/

702 名前:デフォルトの名無しさん mailto:sage [2007/04/15(日) 00:00:33 ]
やる気のある奴ならOOPくらい自習で何とかなるよ。
しかし抽象的概念が先っていうのはやる気でねぇよ。

703 名前:デフォルトの名無しさん [2007/04/16(月) 12:06:55 ]
【 課題 】一定の幅と高さをもつボードがある。図のようにボード上には左上隅を原点とする座標
系(x 座標、y 座標)が定義されているとする。この時、つぎの条件を満たすように二
辺の長さとボード左上の位置を表す座標をもつ長方形をボード上に配置するプログラ
ムを作成せよ。座標系の単位はピクセル。
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】4. 制限なし
【 期限 】4月17日13時ぐらいまで
【 補足 】自分でやってもどうしてもわからなかったので丸投げです
      期限が近くてごめんなさい・・・
      でも一応自分でも今努力中です
      補足には続きがあります
      

704 名前:デフォルトの名無しさん [2007/04/16(月) 12:09:27 ]
703の補足の続き  

1) 配置に関する以下の操作を行うことができる。各操作の名前は以下の通りである。
a) 幅、高さ、左上の位置(x座標、y座標)を与えて長方形を作成する。create
b) 長方形R を指定して、Rを現在位置から指定したx方向の距離x0,y方向の距
離y0b だけ移動する。move
c) 長方形R を指定して、指定した幅の倍率mx(>1)で幅を、高さの倍率my(>1)で
高さをそれぞれ拡大する。倍率は有限小数で与えるものとする。expand
d) 長方形R を指定して、指定した幅の倍率mx(0<mx<1)で幅を高さの倍率
my(0<my<1)で高さをそれぞれ縮小する。倍率は有限小数で与えるものとする。
shrink
e) 長方形R を指定して削除する。delete
f) ボード上の長方形をすべて削除する。deleteAll
g) 2 つの長方形R1 とR2 を指定し、R1 とR2 の重なり部分を抽出し、新たな長方
形R3 として配置する。intersect
(2) その他に次の操作を行うことができる。
a) ボードの状態を表示する。displayBoard
ここで「ボードの状態を表示する」とはボード上にあるすべての長方形の属性(幅、
高さ、x 座標、y 座標)を表示するということ。
b) 配置に関する操作を終了する。 exit
(3) ユーザはキーボード(標準入力)から(1)の操作名と必要なデータを入力し、プ
ログラムが結果のボード上のデータ(どの位置にどの長方形が配置されている
か)を標準出力に出力する。このプログラムは以下のように使用することができ
る。
a) ユーザは起動時にボードの大きさ(幅と高さ)を設定する。
b) 起動すると、操作一覧が表示される。
c) ユーザは操作を選択し、要求されるデータを入力する。
d) 操作の実行が終了すると、操作一覧に戻り、exit が実行されるまで操作を選
択することができる。

さらに続きます

705 名前:デフォルトの名無しさん [2007/04/16(月) 12:11:03 ]
704の続き

(6) クラス構成に関する条件:
RectangleEditor:mainメソッドをもつクラス
Rectangle:長方形のクラス
Board:長方形を配置するボードのクラス
Command: ユーザからの入力を受け取り、長方形に対する操作を呼び出し、ボー
ドの状態を更新するクラス
標準入力からの入力ならびに標準出力への出力クラスをInput およびOutputと
して、それぞれ以下のインターフェースを実装する。
public interface InputIF {
public abstract double input();
}
public interface OutputIF {
public abstract void write(Board b);
public abstract void write(String s);
}
10 20 30 40 50 60
10
20
30
40
50
60

だそうです・・・この1.2.3.6を今回はやるそうです
よろしくお願いします

706 名前:デフォルトの名無しさん mailto:sage [2007/04/16(月) 14:01:55 ]
>>703
>>686を見ろ

707 名前:デフォルトの名無しさん [2007/04/16(月) 16:17:09 ]
>>706
同志がいたんですね・・・ご指摘ありがとうございます

708 名前:688 mailto:sage [2007/04/17(火) 00:39:27 ]
>>699
遅れましたが、ありがとうございました。

if (Math.abs(dx) > Math.abs(dy)) {
for (int x = x1; x != x2; x += sx) {
double y = y1 + (double) dy / dx * (x - x1);
setPixel(g, x, y);
}
} else {
for (int y = y1; y != y2; y += sy) {
double x = x1 + (double) dx / dy * (y - y1);
setPixel(g, x, y);
}

と途中にあったのですが、これが点をひとつずつずらしていっているという作業なのですか?
今までforはfor(int a=0;a<10;a++)のような簡単のものしか扱った事しかないので、
理解に苦しんでいます、

709 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 01:50:19 ]
>>708
sx(sy)はx1>x2(y1>y2)なら-1、x1<x2(y1<y2)なら1が入ってるから、
x(y)がx1(y1)から始まればx(y)座標を1ずつ変化させて、
最終的にx2(y2)に到達してx!=x2(y!=y2)が不成立となりループが終了する。

710 名前:688 mailto:sage [2007/04/17(火) 11:52:43 ]
>>709
1の問題を自分なりにわかりやすく解いてみたのですが、線が点線のようになってしまいます。
なにが足りないのでしょうか?
package Ex1;
import java.applet.Applet;
import java.awt.Graphics;
public class level1 extends Applet {
public void paint(Graphics g) {
drawLine1(g, 100, 100, 600, 300);
drawLine2(g, 100, 100, 300, 600);
}
private void drawLine1(Graphics g, int x1, int y1, int x2, int y2) {
for (int y = y1; y < y2; y += 1) {
double x = x1 + (double) (x2 - x1) / (y2 - y1) * (y - y1);
setPixel(g, x, y);
}
}
private void drawLine2(Graphics g, int x1, int y1, int x2, int y2) {
for (int x = x1; x < x2; x += 1) {
double y = y1 + (double) (y2 - y1) / (x2 - x1) * (x - x1);
setPixel(g, x, y);
}
}
private void setPixel(Graphics g, double x, double y) {
g.fillRect((int) x, (int) y, 1, 1);
}
}



711 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 16:19:34 ]
【 課題 】以下のプログラムを作成せよ。
(1)スタックと演算子順位を使った構文解析により、中置記法の式を後置記法に変換するプログラム。
(オペランドはa〜zの一文字とする)
(2)中置記法の式を後置記法に変換し、スタックを使ってその後置記法の式を計算するプログラム。
(オペランドは整数または実数)

後置記法に変換するアルゴリズム:
 初期設定:スタックに'$'だけを積む
 以下を繰り返す
(1)次の入力記号aiを読む(入力記号がなかったら'$'を読んだことにする)
(2)aiがオペランドなら、それをそのまま出力
(3)aiが'('なら、それをスタックに積む
(4)aiが')'なら、最初に出てくる'('までスタックから降ろす(オペレーターは出力する)
(5)aiが'$'なら、'$'までをスタックから降ろし(オペレーターは出力する)、処理を終了
(6)その他の場合(aiはオペレーター。そのときスタックのトップがbであるとする)
 bがオペレーターでありprec(b)>=prec(ai)である間(precは演算子順位を返す関数)
 bをスタックから下ろして出力する。
 bがオペレーターでないか(bは'('か'$')、prec(b)<prec(ai)なら、aiをスタックに積む

 prec(+)=prec(-)=1
 prec(*)=prec(/)=2

問題の例:
中置記法 a*b+c → 後置記法 ab*c+
中置記法 d-(e+f*g) → 後置記法 defg*+-

【 形態 】1. Javaアプリケーション
【 期限 】4/20(金) 23:00まで
【 Ver  】java version "1.6.0_01"

丸投げですがよろしくお願いします。

712 名前:デフォルトの名無しさん mailto:sage [2007/04/17(火) 16:53:07 ]
>>710
惜しい!
drawLine1はy軸を基準に1ドットずつ描画してるだろう。
だけど、引数をみるとx軸の線の方がy軸より長い。
だからdrawLine1はy軸が1増えるたびに、x軸の一定距離の描画をすっぽかしている。
もう答えは分かるだろう。

713 名前:688 mailto:sage [2007/04/17(火) 20:22:28 ]
>>712
むむ。。。
ならばこういうことでしょうか?
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29327

714 名前:712 mailto:sage [2007/04/17(火) 22:58:02 ]
>>713
課題はクリアしてるし、これで提出しても最低でも良(優良可不可)、学校によっては優をとってもおかしくないと思う。
でも、線は太くなるだろう。
まだ時間があるなら極めるも良し、このまま寝るも良し。

ただ、さっきのソースの方が今回のソースより惜しかった。

715 名前:688 mailto:sage [2007/04/17(火) 23:29:18 ]
>>714
ありがとうございます。
とりあえず他の授業のレポートも残っているので、これで切り上げます。
色々とありがとうございました

716 名前:デフォルトの名無しさん mailto:sceudle1029@mail.goo.ne.jp [2007/04/19(木) 00:00:17 ]
1,2,3,…,nの和・積を表示されるプログラムを作りたいのですが、わかりません。教えて下さい。
たとえば7を入力すると、
1+2+3+4+5+6+7=28
1*2*3*4*5*6*7=5040
という風になります。

【形態】CPad for Java2 SDK
【期限】4月24日午後0時
【補足】計算はできているのですが、1+2+3+…1*2*3*,の部分ができない状態です。

717 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:02:02 ]
>>716
>>1

718 名前:デフォルトの名無しさん mailto:sceudle1029@mail.goo.ne.jp [2007/04/19(木) 00:06:33 ]
??


719 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 00:47:44 ]
>>718
>>1を1文ずつ良く読め。テンプレに従って書け。」ということ
守らないとスルーされるから(−人

720 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:09:49 ]
>>711
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29329
//////////--**++**-- "ファイル名"
で各ファイルに分解してくれ。
設計せずにてきとーに書いたので、かなりいい加減なコードだ。
正しい入力にはたぶん正しく応答すると思うが、
誤り処理の仕様が書かれてなかったので、誤った入力は無視したり例外を投げたりてきとー。
中置記法の式の与え方も書いていなかったので、コマンドライン引数で与える形にした。
(1)の実行はjava InfixNotationTranslator "a*b+c"みたいに。
(2)の実行はjava Calc 1.5+3/2みたいに。
空白文字は無視するし、複数のコマンドライン引数に分けて与えると空白を挿入して連結する。
字句解析器に渡す入力はReaderにしてるので、
入力がファイルとかコンソールとかなら今のStringReaderをそういう入力にすれ。



721 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 01:34:01 ]
>>716
またおまえか

722 名前:688 mailto:sage [2007/04/19(木) 21:49:43 ]
【 課題 】
1.レベル1(スクロールバーによる回転)
直線が互いに直行するメッシュ図(碁盤の目の模様)を描画し、スクロールバーにより、メッシュを360度回転せよ。
メッシュは2次元図形でよい。またメッシュの色や数(>4)は任意とする。

2.レベル2(3次元メッシュ)
 メッシュを3次元で描画し、3軸のスクロールバーを用いて3次元で回転する。回転中心はメッシュの中央とする。

3.レベル3(デプスキュー)
 課題2において、z軸の値を輝度(色)と見なしz値が遠方を輝度が弱く、手前を強い映像を描画し、これを3軸のスクロールバーで回転せよ。メッシュは細かくするのが好ましい。

4.レベル4(透視変換)
 課題3のメッシュに透視変換(z値でx、y軸を除算)を加えて描画せよ。

【 形態 】2. Applet

【 期限 】4月3日

【 補足 】
スクロールバーは作れたのですが、メッシュがいまいちわかりません。
直線を組み合わせて作るだろうということはわかるのですが。。。

723 名前:デフォルトの名無しさん mailto:sage [2007/04/19(木) 23:41:44 ]
>>722
1本の直線の描き方は分かってきたんだから、
メッシュは線分を複数描けばすむじゃないか。
ところで、これも標準のAPIを使わず自前の直線描画メソッドを使うの?
回転したときの線分の両端の座標の計算はJavaの宿題じゃなくて数学の宿題だな。
座標変換の式を質問者が補足で説明した方がいい。
なんにせよ、しめきりまで少なくともまだ1年近くあるんだし、もう少し自分でがんばれw

724 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 00:01:11 ]
>>723
あれ?AffineTransform使わないの?

725 名前:688 mailto:sage [2007/04/20(金) 01:12:56 ]
>>723
ちょww
5月3日ですorz
直線をforループで等間隔に並べていけばおkってことですか?
APIとは?

726 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 01:34:51 ]
>>724
前回の出題レベルを見るにAffineTransformは使っちゃいけないんじゃないか?
それに3次元に対応できないし。座標変換は自分で書けってことだと思うが、どうよ?>>722
Java3Dとかでも使っていいってこととは思わないんで。

>>725
> 直線をforループで等間隔に並べていけばおkってことですか?
原理的にはそう。
「標準のAPIを使わず自前の直線描画メソッドを使うの?」って聞いたのは、
drawLineとかのJavaで最初から用意されている直線描画用のメソッドは使ってもいいのかどうかってこと。
前回は点を打って直線にするメソッドを自前で作ったから。

標準で用意されたどのメソッドまで許されるのかとかは、AffineTransformは使えないの?とかも含め、
どの程度の縛りがあるのかは授業を受けている人間でないと分からない。

727 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 12:32:06 ]
>>722
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29330
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29331
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29332
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29333
とりあえず動きそうなものを作ったが正しいかどうか知らんよ。
3,4はアプレットのサイズを大きくすると環境によっては結構重いかも。

1,2では直線描画のメソッドdrawLineは単にGraphicsクラスのdrawLineを呼び出しているだけなので、
もし使用不可なら以前の課題で作成した2次元での線分描画メソッドに変更のこと。

2以降の3次元内での回転は、z=0平面内にメッシュがある最初の状態から始めて、
x軸周りの回転、y軸周りの回転、z軸周りの回転の順序で行った時の状態を表示する。
だから、たとえばy軸周りに90度回した状態でx軸周りに回転すれば、
見かけはz軸周りに回転しているように見えるので注意。

Level1.javaからLevel4.javaまで全てを同時にコンパイルすると、
Point3クラスが重複するって怒られるので、別々にコンパイルのこと。
どれも同じバイトコードを生成するので、コンパイル後のクラスファイルが上書きされるのは問題ないはず。

728 名前:688 mailto:sage [2007/04/20(金) 20:52:39 ]
>>726
drawlineは前回のものを使うそうです。

それとlength = (width > height ? height : width) / 3;
の?って始めてみたのですが、どういう意味があるのですか?

729 名前:デフォルトの名無しさん mailto:sage [2007/04/20(金) 21:15:45 ]
>>728
三項演算子
条件式?値1:値2
条件式の評価結果がtrueなら値1、falseなら値2を返す
値の代わりに処理も記述可能(複雑な処理だと可読性が下がるのであまりお勧めしない)

if〜elseを一行にまとめたようなものとでも思ってくれい

730 名前:デフォルトの名無しさん [2007/04/22(日) 00:04:57 ]
【 課題 】
int型の要素を持つsourceを0,2,4,6,....16,18で初期化しint型の配列要素aliasを宣言し、sourceと同じ配列要素を確保する。
aliasにsourceを代入する。 int型の配列変数targetを宣言し、sourceと同じ配列要素数を確保する。
sourceのそれぞれの要素をtargetの要素に繰り返し文によりコピーする。
aliasのそれぞれの要素を10倍する(10倍したものをaliasに代入)しsourceの要素、targetの要素をそれぞれ表示


【 形態 】1. Javaアプリケーション(main()で開始)
【 期限 】提出期限は月曜です。
【 補足 】 プログラムは作って、コンパイルは出来るように なったんですが、表示が上手くできません
class FirstClass04{
public static void main(String args[]) {
int source[]={0,2,4,6,8,10,12,14,16,18};
int alias[]= new int[10];
alias=source;
int target[]=new int[10];
for(int i=0; i<10; i++) {
target[i]=source[i]; }
for(int j=0; j<10; j++) {
alias[ j]=alias[ j]*10; }
System.out.println("sourceの要素");
for(int g=0; g<10; g++) {
System.out.println("source[ j]"); }
System.out.println("targetの要素");
for(int k=0; k<10; k++) {
System.out.println("target[i]");
}}}






731 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 00:32:21 ]
System.out.println("source["+j+"]="+source[j]);
面倒だから読んでないんだがjでいいのか?

732 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 01:54:43 ]
>>730
System.out.printlnで表示するときに""で囲むのは囲まれたものを文字そのものとして表示するとき
変数の内容を表示するときは""で囲わずそのまま書く

public class FirstClass04 {
public static void main(String[] args) {
int[] source = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18};
int[] alias = new int[source.length];
alias = source;
int[] target = new int[source.length];
for (int i = 0; i < source.length; i++) target[i] = source[i];
for (int j = 0; j < alias.length; j++) alias[j] = alias[j] * 10;
System.out.println("sourceの要素");
for (int g = 0; g < source.length; g++) System.out.println(source[g]);
System.out.println("targetの要素");
for(int k = 0; k < target.length; k++) System.out.println(target[k]);
}
}

733 名前:デフォルトの名無しさん [2007/04/22(日) 14:24:38 ]
【 課題 】オセロの盤面を作成せよ《必須》
【 形態 】1. Javaアプリケーション(main()で開始)
【 GUI  】2. Swing
【 期限 】2007/4/22
【 Ver  】java version "1.5.0_10"
【 補足 】以下のソースのプログラムを起動したときにオセロの盤面が表示されません。
      フレームを最大化などにすると、ようやく表示されます。
      コンポーネントの作成順序が間違っているのでしょうか?


734 名前:733 [2007/04/22(日) 14:29:18 ]
以下がコンポーネントを作成しているメソッドになります。

public void init_view(){

cnt = getContentPane();
cnt.setLayout(new BorderLayout());
JPanel jp[] = new JPanel[2];
jp[0] = new JPanel(new GridLayout(8,8));
jp[1] = new JPanel(new FlowLayout());
for(int i=0;i<8;i++){
for(int j=0;j<8;j++){
jl[i][j] = new JLabel();
jl[i][j].setBorder(new LineBorder(Color.black,3));
jp[0].add(jl[i][j]);
}
}
jb[0] = new JButton("PASS");
jb[1] = new JButton("EXIT");
jb[2] = new JButton("RESET");
jp[1].add(jb[0]);
jp[1].add(jb[1]);
jp[1].add(jb[2]);
jp[0].setBackground(Color.green);
jp[1].setBackground(Color.black);
cnt.add(jp[0],BorderLayout.CENTER);
cnt.add(jp[1],BorderLayout.SOUTH);
}

735 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 16:54:23 ]
>>733
setBounds

736 名前:デフォルトの名無しさん [2007/04/22(日) 18:39:45 ]
【 課題 】 複素数のクラス(Complex)を考える.複素数は「もの」として考えると,
実部の値と虚部の値という性質を持つ必要があり,実部や虚部の値を取り出す機
能が最低限必要である.

コンストラクタ:
実部と虚部を引数として初期化

フィールド:
実部の値及び虚部の値を持つために,realNum 及び imagNum を用意

メソッド:
toString()メソッドは,「2.3+4.2i」等と表示を行うためのメソッド(詳細は次週)
getReal()メソッドは,複素数の実部の値を返す
getImaginary()メソッドは,複素数の虚部の値を返す

以下の SecondClass01.java を完成して,実行しなさい.

【形態】1. Javaアプリケーション(main()で開始)
【 期限 】2007/4/23まで




737 名前:デフォルトの名無しさん [2007/04/22(日) 18:41:04 ]
これが問題です。
class SecondClass01{
public static void main(String args[]){
Complex complex01 = new Complex(2.5, 4);
Complex complex02 = new Complex(4, -2);
System.out.println("The first complex = " + complex01);
System.out.println("The second complex = " + complex02);
System.out.println("Re(" + complex01 + ") = " + complex01.getReal());
System.out.println("Im(" + complex01 + ") = " + complex01.getImaginary());
}}
class Complex {
double realPart;
double imagPart;
public Complex(double r, double i){
realPart = r;
imagPart = i;}
public double getReal(){
// ここを完成させる}
public double getImaginary(){
// ここを完成させる }
public String toString(){
StringBuffer sb = new StringBuffer().append(realPart);
if (imagPart >= 0.0)
sb.append('+');
return sb.append(imagPart).append('i').toString();
}}


738 名前:デフォルトの名無しさん [2007/04/22(日) 18:47:22 ]
732の方ありがとうございました。
【 課題 】
730と同じ問題で、実行後どうしてそのような表示結果が得られるかを
変数の参照方法などに注意して詳しく説明しなさい.
【 期限 】明日までです


739 名前:デフォルトの名無しさん [2007/04/22(日) 19:18:25 ]
ソースを一行ずつみていって、メモリへの格納内容を見ていけばいいんじゃない?

740 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 19:21:17 ]
>>736-737
そこまで提示されて何故自力でやろうとしないのか...



741 名前:733 [2007/04/22(日) 19:54:51 ]
>>735
setBoundsでもうまく行きません。
お願いします。今日中にやらないと間に合いません。

742 名前:デフォルトの名無しさん [2007/04/22(日) 20:37:21 ]
今日中?朝マックまで12時間はあるだろ?

743 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 21:51:10 ]
>>741
普通に描画されるぞ?

744 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:19:46 ]
>>733の言ってる事って、ウインドウ出るけど描画されない
(うちだとされる時もある)って事?
それ、俺もあるわw
sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29336
原因分かる方俺にも教えてって事で。

>>736
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29338
これでいいの?いいのか?w
2つ目の複素数を出力しないのも気になったんでそれも追加w

745 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 22:53:02 ]
>>744
setVisibleを最後にもってきたらちゃんと表示された

746 名前:デフォルトの名無しさん mailto:sage [2007/04/22(日) 23:32:44 ]
そりゃそうだろうな

747 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:35:43 ]
激しくすれ違いなんだが、

次の2の補数表現で表された2進数を10進数を直せ。
0111 1111 1111 1111 1111 1101 0011 0011

748 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 01:47:41 ]
>>747
2147482931

749 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 02:03:40 ]
>>748
1111 1111 1111 1111 1111 1101 0011 0011


750 名前:デフォルトの名無しさん mailto:sage [2007/04/23(月) 03:09:17 ]
>>747
最上位ビットが0ってのが,いまいち解せんのですが
33ビットの二進数だと考えて、つまり

   1 0111 1111 1111 1111 1111 1101 0011 0011
  ↑
 ここに符号があって、値部分を32ビットで表現してる

ものだと解釈すれば、それを10進数で表現したものは
   -2147484365
になると思います。

一方、>>749さんのように解釈し、「2の補数なので符
号ビット部分は1だけど、>>747では符号ビットを除い
て示した(ただしつい最上位ビットも0と書いてしまった)
のだと見れば、それを10進数で表現したものは
    -717
じゃないでしょうか。

しかし、ここはJavaスレですし、Javaらしく「intは符号
付き32ビット」と考えれば>>747の数値は正の値という
ことになり >>748にあるように、10進数での表現は
   2147482931
だと思います。



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
こんなに早くありがとうございます。
非常に助かりました。






[ 続きを読む ] / [ 携帯版 ]

前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