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

684 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 00:15:46 ]
【 課題 】ttp://www.uploda.org/uporg772084.txt.html
【 形態 】1. Javaアプリケーション
【 GUI  】4. 制限なし
【 期限 】4/16
【 Ver  】java version "1.5.0_06"
【 補足 】恥ずかしながら丸投げです。
       お願いします。

685 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 12:47:56 ]
以前同じような問題を解いた

686 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 13:39:39 ]
>>684
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29319
「////////// filename」でそれぞれのファイルに分けてくれ。
デバッグしてないから動かなくても知らん。エラーメッセージも一貫性がないぜ。
長方形の指定方法が指定されてない&「4つの属性でボード上の長方形を識別できるものと考える」
なんて書かれてるから、操作対象の長方形は幅、高さ、左上隅のx、y座標で指定するようにしてる。
浮動小数使うと指定が面倒になるので、長方形の座標やサイズはintにしてる。

687 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 20:48:36 ]
>>686
有難うございます!助かりました。
大いに参考にさせてもらいます!

688 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:18:48 ]
【 課題 】1.レベル1(直線発生アルゴリズム)
直線式を用いて(100,100)から(600,300)の2次元座標点を結ぶ直線と、(100,100)から(300,600)の点を結ぶ直線を描画する。直線の色は視覚可能な色であれば任意とする。JavaのPolylineなど直線描画関数を使用しない。

2.レベル2(3次元デプスキューイング・アルゴリズム)
 (100,100,0)から(600,300,100)の3次元座標点を結ぶ直線を描画する際、z値の座標値を輝度と見なしてz=0の点の輝度を0(最小値)、z=100の点の輝度を255(最大値)として描画する。直線の色は視覚可能な色であれば任意とする。

【 形態 】2. Applet

【 期限 】4月26日

【 補足 】1はたぶん
package Ex1;

import java.applet.Applet;
import java.awt.Graphics;

public class level1 extends Applet {

public void paint(Graphics g) {
g.drawLine(100, 100, 600, 300);

g.drawLine(100, 100, 300, 600);
}

}

だと思うのですがどうでしょうか?
2はまったくわかりません

689 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:27:12 ]
>>688
drawLine使っていいの?

690 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:30:28 ]
>>689
それがよくわからんのです。
使わないとしたら、どのようにすれば?
直線式というのが気になりますよね。

691 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:30:47 ]
>>688
drowLineってここで言ってる直線描画関数なんじゃ?
y=ax+bみたいな式を作ってしてループでぐりぐりまわしてちまちま点を打っていけ
ととれるんだけど…


692 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:32:36 ]
>>691
なるほど。
そういう用語とか調べてはいるのですが、よくわからないもので。
forを使うのですか?



693 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:47:34 ]
drawLine等を使わないとなると、
for文で回して1ピクセルごとに直線の座標を計算して点を打っていくんだが、
残念なことにGraphicsには点を打つメソッドがない。
幅と高さが1の四角形の中を塗りつぶす等で代用するか、
画像バッファとして配列等を用意して、それに画素値を入れて行き、
最後にバッファの内容を画像として表示するかのどちらかだな。
Imageを使う手法は習ってる?

あと、問題2の方の座標系は左上が原点でX,Y座標が右、下方向で、
Z座標が画面に垂直な方向ということでいいの?

694 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 22:57:00 ]
>>693
丁寧にありがとうございます。
たぶん一番初めの問題なので、それほど高度なことはしないと思います。
Imageを使う手法わかりません。

問い2はそうであると思います。

695 名前:デフォルトの名無しさん mailto:sage [2007/04/13(金) 23:39:27 ]
>>688
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29321
とりあえず、問題1の方。こんな感じでいいかい?
要は、(x1,y1)から(x2,y2)までの線分が通るピクセル(x,y)が
y = y1 + (y2 - y1) / (x2 - x1) * x
とか
x = x1 + (x2 - x1) / (y2 - y1) * y
の直線の式を満たすから、xかyを1づつ変化させて、
もう一方の座標を求めてそのピクセルを塗ればいい。
問題2はこれの応用だ。自分でやるかい?

696 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 00:53:01 ]
すまん。プログラムを見れば分かると思うけど、直線の式は、
y = y1 + (y2 - y1) / (x2 - x1) * (x - x1)
x = x1 + (x2 - x1) / (y2 - y1) * (y - y1)
の間違いね。

697 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:04:52 ]
なんで大学とかって基礎(if文だのfor文だの)一通り教えたらGUIに走るのかな。

そんなのは必要になったときに自習でなんとかなるんだから、もっとOOPを教えるべき。

698 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:42:52 ]
そりゃ見た目派手で眺める分には楽しいし、
数字の羅列や意味の分からないプログラミング理論を教えられるより、
プログラムによって計算機に何かさせているという実感が沸くからじゃないかね。
もちろん、今後こっち方面で仕事したいとかいう人間は、
GUIが必要になったときに自習で何とかして、OOPとかの基本を教えられるべき人間なんだろうけど。
そういう人間ばかりじゃないと思うから。

699 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 20:47:29 ]
>>688
ttp://sourcepost.sytes.net/sourcepost/sourceview.aspx?source_id=29324
問題2。基本は問題1と同じ。
X,Y座標のついでにZ座標も求めて、その値に応じてピクセルの色を設定するだけ。

700 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 21:26:39 ]
本当に必要なのはOOPなんかじゃない論理的な思考だよ。
どんなことも論理的に考え、論理的に理解出来る姿勢。
ある事を知っているということは重要じゃない。

↑にはもちろん、知らない事があったら
ブチ切れるより前に自分で調べるという姿勢も含みます。

701 名前:デフォルトの名無しさん mailto:sage [2007/04/14(土) 23:55:17 ]
まあ>>688はCGの授業らしいからグラフィクス関係が出てこないと看板に偽りありだけどね

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 ]
鈴木高弘は火曜晩は暇なのか?
毎週火曜日晩になると無茶な暴れ方をするな。






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

前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