和風細雨

          世上本無難事,心以為難,斯乃真難。茍不存一難之見于心,則運用之術自出。

          三角形鑒別程序

          需求:給出三角形的三邊長,判斷是否三角形,如是,判斷是等邊三角形,等腰三角形,不等邊三角形,銳角三角形,直角三角形和鈍角三角形,并計算出三角形的面積.
              考查點:建模的準確性,思維的全面性,浮點數的比較.
          補充知識:cosA=b方+c方-a方/2*b*c
          package com.sitinspring;

          /**
           * 形狀類,未必是三角形
           * 
          @author sitinspring(junglesong@gmail.com)
           *
           * @date 2007-11-6
           
          */

          public class Shape{
              
          // 三邊長
              protected double a;
              
          protected double b;
              
          protected double c;
              
              
          public Shape(double a,double b,double c){
                  
          this.a=a;
                  
          this.b=b;
                  
          this.c=c;
              }

              
              
          protected String getInfo(){
                  
          return "("+a+","+b+","+c+")";
              }

              
              
          public String toString(){
                  
          return getInfo()+"非三角形";
              }

          }


          package com.sitinspring;


          /**
           * 三角形類
           * 
          @author sitinspring(junglesong@gmail.com)
           *
           * @date 2007-11-6
           
          */

          public class Triangle extends Shape{
              
          // 三角
              private double cosA;
              
          private double cosB;
              
          private double cosC;
              
          private static final double Mini=0.000001
              
              
          public Triangle(double a,double b,double c){
                  
          super(a,b,c);
                  cosA
          =getCos(a,b,c);
                  cosB
          =getCos(b,a,c);
                  cosC
          =getCos(c,a,b);
              }

              
              
          private static double getCos(double a,double b,double c){
                  
          return (b*b+c*c-a*a)/(2*b*c);
              }

              
              
          private static boolean isEqual(double op1,double op2){
                  
          return Math.abs(op1-op2)<Mini;
              }

              
              
          public String toString(){
                  String retval
          =getInfo()+"三角形";
                  
                  
          // 邊判斷
                  if(isEqual(a,b) && isEqual(b,c)){
                      retval
          +=" 等邊三角形";
                  }

                  
          else if(isEqual(a,b) || isEqual(b,c)){
                      retval
          +=" 等腰三角形";
                  }

                  
          else{
                      retval
          +=" 常規三角形";
                  }

                  
                  
          // 角判斷
                  if(cosA<0 || cosB<0 || cosC<0){
                      retval
          +=" 鈍角三角形";
                  }

                  
          else if(isEqual(cosA,0|| isEqual(cosB,0|| isEqual(cosC,0)){
                      retval
          +=" 直角三角形";
                  }

                  
          else{
                      retval
          +=" 銳角三角形";
                  }

                  
                  
          return retval;
              }

          }


          package com.sitinspring;

          /**
           * 形狀構造器
           * 
          @author sitinspring(junglesong@gmail.com)
           *
           * @date 2007-11-6
           
          */

          public class ShapeMaker{
              
          public Shape generate(double a,double b,double c){
                  
          if(a<0 || b<0 || c<0){
                      
          return new Shape(a,b,c);
                  }

                  
                  
          else if(a+b<|| a+c<|| b+c<a){
                      
          return new Shape(a,b,c);
                  }

                  
                  
          return new Triangle(a,b,c);
              }

              
              
          public static void main(String[] args){
                  ShapeMaker maker
          =new ShapeMaker();
                          
                  System.out.println(maker.generate(
          113));
                  
                  System.out.println(maker.generate(
          333));
                  System.out.println(maker.generate(
          334));
                  System.out.println(maker.generate(
          342));
                  
                  System.out.println(maker.generate(
          11-3));
                  
                  System.out.println(maker.generate(
          343));
                  System.out.println(maker.generate(
          344));
                  System.out.println(maker.generate(
          345));
                  System.out.println(maker.generate(
          346));
              }

          }


          代碼下載:
          http://www.aygfsteel.com/Files/sitinspring/TriAngle20071106135459.rar

          posted on 2008-02-22 11:25 和風細雨 閱讀(317) 評論(0)  編輯  收藏 所屬分類: OOP


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 微山县| 洛南县| 永平县| 宁强县| 嘉义县| 宜兰县| 独山县| 兰溪市| 章丘市| 怀宁县| 资中县| 张北县| 白银市| 桑植县| 峨山| 右玉县| 大余县| 大丰市| 高淳县| 星子县| 四子王旗| 库伦旗| 乌拉特前旗| 万年县| 房山区| 丹巴县| 龙井市| 财经| 韶关市| 永年县| 北碚区| 明溪县| 荔波县| 奈曼旗| 嘉祥县| 安远县| 信丰县| 洛南县| 晋州市| 乌兰县| 灵台县|