某情報系大学生の適当日記
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
http://mainichi.jp/area/toyama/news/20091101ddlk16020365000c.html
出身高校の,今の3年生は大変らすぃよ
高校生で3社目とか今までなかったよと進路のセンセがいっとった
それもザラなんだとか
大変ですなぁ
出身高校の,今の3年生は大変らすぃよ
高校生で3社目とか今までなかったよと進路のセンセがいっとった
それもザラなんだとか
大変ですなぁ
PR
バグ残りまくりんぐかも知れないけど、もう知らない
折り返しできなくて横に目いっぱい広がってるかもしれないけど
それも知らない
テキストは小さくしとくけど
傾きはだぶるだから違ったとしてもほとんど等しくで、「もうムリボオオオオ.計算できまてーん」ってなったときのために
座標出してから比較させてみた
/**
*
* @author kaiki
* @date 09-10-30
* * # 名前:あほ ◆- 投稿日:2009/10/25(日) 23:54:21
* お前ら偉そうだけど三角形の面積求めるプログラムかけるの?
*
* y=ax+b
*
* y=cx+d
*
* y=ex+f
*
* 上記の直線で囲まれた三角形の面積を出力するプログラムを作成せよ。
* 三角形をなさない場合には、エラーを表示せよ。
* a,b,c,d,e,fの値はプログラムの引数として、有効小数点3桁少数で与えられる。
*
*/
public class TriangleCalc {
/**
* 点の座標を保持する.coordinate[i][0]がi番目の点のx座標, coordinate[i][1]がy座標.
*/
public static double coordinate[][];
/**
* coordinateのX座標を参照するための定数.
*/
public static final int X = 0;
/**
* coordinateのY座標を参照するための定数.
*/
public static final int Y = 1;
public static void main(String args[]){
/* 3つの1次関数のパラメータ設定.argsを使うのめんどくせ. */
double a,b,c,d,e,f;
a = 1; b = 5;
c = -1; d = 1;
e = 2; f = 1;
/* args使いたいならここまで改造. */
/* 1次関数3つをy=ax+bの形で一応出力しておく. */
printFunc(a,b);
printFunc(c,d);
printFunc(e,f);
System.out.println(); /* 空行出力. */
/* 交わる3点の座標をセットと表示. */
setCoordinate(a,b,c,d,e,f);
printAllCoordinate();
System.out.println(); /* 空行出力. */
/* 交わる3点がないとき,xの解は便宜上無限. */
if(existInfinity()){
System.err.println("平行の直線(=傾きが等しい)がありませんか?");
System.exit(1);
}
double area;
area = getArea();
System.out.println("面積:" + area);
}
/**
* 三角比を使って三角形の面積を求める.getAreaUseSquare()のほうが信頼できる.
* @return 三角形の面積.
*/
private static double getArea(){
/* 3点を結ぶ辺も3つ. */
double lines[] = new double[3];
lines[0] = getLineLength(coordinate[0][X],coordinate[0][Y],coordinate[1][X],coordinate[1][Y]);
lines[1] = getLineLength(coordinate[0][X],coordinate[0][Y],coordinate[2][X],coordinate[2][Y]);
lines[2] = getLineLength(coordinate[1][X],coordinate[1][Y],coordinate[2][X],coordinate[2][Y]);
/* lines[2]が一番長い=斜辺. */
java.util.Arrays.sort(lines);
double acos = Math.acos(lines[0] / lines[2]);
double height = Math.abs(Math.sin(acos) * lines[2]);
return height * lines[0] / 2;
}
/**
* 2点間を結ぶ辺の長さを返す.(=2点間の距離)
* @param x1 1つ目の点のx座標.
* @param y1 1つ目の点のy座標.
* @param x2 2つ目の点のx座標.
* @param y2 2つ目の点のy座標.
* @return 2点間の距離.
*/
private static double getLineLength(double x1,double y1,double x2,double y2){
double xLength,yLength;
xLength = Math.abs(x2-x1);
yLength = Math.abs(y2-y1);
return Math.sqrt((xLength * xLength) + (yLength * yLength));
}
private static void setCoordinate(double a, double b, double c, double d, double e, double f){
double x,y;
coordinate = new double[3][2];
x = getX(a,b,c,d);
y = a*x+b;
coordinate[0][X] = x;
coordinate[0][Y] = y;
x = getX(c,d,e,f);
y = c*x+d;
coordinate[1][X] = x;
coordinate[1][Y] = y;
x = getX(a,b,e,f);
y = a*x+b;
coordinate[2][X] = x;
coordinate[2][Y] = y;
}
/**
* 1次関数2つ(y=ax+b , y=bx+c)のa,b,c,dを渡しxの解を返す.a=bのとき,Doubleの無限を表す定数が返される.
* @param a 1つ目の1次関数の傾き.
* @param b 1つ目の1次関数の切片.
* @param c 2つ目の1次関数の傾き.
* @param d 2つ目の1次関数の切片.
* @return xの解.
*/
private static double getX(double a,double b,double c,double d){
return (d-b) / (a-c);
}
/**
* セットされた座標を使って,互いに平行な直線がなかったか判定する.
* @return 平行な直線があった場合にはtrue.
*/
private static boolean existInfinity(){
for(int i = 0; i < 3; i++){
for(int j = 0; j < 2; j++){
if(coordinate[i][j] == Double.NEGATIVE_INFINITY || coordinate[i][j] == Double.POSITIVE_INFINITY){
return true;
}
}
}
return false;
}
/**
* 座標を標準出力する.
*/
private static void printAllCoordinate(){
for(int i = 0; i < 3; i++){
System.out.println((i + 1) + "つめの交点");
for(int j = 0; j < 2; j++){
System.out.print(coordinate[i][j]+ " ");
}
System.out.println();
}
}
/**
* y=ax+bの形で標準出力を行う.
* @param a
* @param b
*/
private static void printFunc(double a,double b){
System.out.println("y=" + a + "x+" + b);
}
}
http://kanasoku.blog82.fc2.com/blog-entry-12083.html
のコメント欄,
****
# 名前:あほ ◆- 投稿日:2009/10/25(日) 23:54:21
お前ら偉そうだけど三角形の面積求めるプログラムかけるの?
y=ax+b
y=cx+d
y=ex+f
上記の直線で囲まれた三角形の面積を出力するプログラムを作成せよ。
三角形をなさない場合には、エラーを表示せよ。
a,b,c,d,e,fの値はプログラムの引数として、有効小数点3桁少数で与えられる。
****
ゆとりだけど,時間余ったらやってみよう.
(もうしばらく先になるが)
第1段階は1次関数3つから,交わるx,yを3組もとめるってところだから
連立方程式解かなくちゃいけないわけだな
そこが終わるとx,yの単純な比較で三角形が成り立つかどうかわかる
(つうか解があるかどうかで)
で第2段階は
底辺は適当なところを底辺にしちゃって,高さもさいんこさいんたんじぇんと三角比からいけそうだ
時間かかりそうだが暇になったらやってみるおっお
のコメント欄,
****
# 名前:あほ ◆- 投稿日:2009/10/25(日) 23:54:21
お前ら偉そうだけど三角形の面積求めるプログラムかけるの?
y=ax+b
y=cx+d
y=ex+f
上記の直線で囲まれた三角形の面積を出力するプログラムを作成せよ。
三角形をなさない場合には、エラーを表示せよ。
a,b,c,d,e,fの値はプログラムの引数として、有効小数点3桁少数で与えられる。
****
ゆとりだけど,時間余ったらやってみよう.
(もうしばらく先になるが)
第1段階は1次関数3つから,交わるx,yを3組もとめるってところだから
連立方程式解かなくちゃいけないわけだな
そこが終わるとx,yの単純な比較で三角形が成り立つかどうかわかる
(つうか解があるかどうかで)
で第2段階は
底辺は適当なところを底辺にしちゃって,高さも
時間かかりそうだが暇になったらやってみるおっお
http://president.jp.reuters.com/article/2009/10/25/8F93BFB2-BA2A-11DE-836A-A5F93E99CD51-1.php
**
何かに一生懸命取り組んで自分を高めていこうとする克己心や忍耐力などの低下に拍車がかかった
**
ふひーごめんなさい
3ゼミ合同 卒研発表会が近いので
今日はもう少し耐えまつヽ(・ω・`;)ノ
**
何かに一生懸命取り組んで自分を高めていこうとする克己心や忍耐力などの低下に拍車がかかった
**
ふひーごめんなさい
3ゼミ合同 卒研発表会が近いので
今日はもう少し耐えまつヽ(・ω・`;)ノ