Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Java] Помогите по программированию java


Автор: Inka94 5.3.2012, 00:16
Привет всем! Я новичок в программировании,нам дали такую задачу
"Определить функцию нахождения площади треугольника по координатам его вершин. Найти площадь выпуклого многоугольника, по координатам его вершин, используя полученную функцию."
Бьюсь над ней уже месяц,никак не могу решить(( а сроки поджимают(
Помогите кто может,plz! )
Язык программирования Java 
Вот что получается у меня :
public class Point{
double x1;double y1;
double x2;double y2;
double x3;double y3;
double AB,AC,BC,P,p,r,S;
double dist0 (){
AB=Math.sqrt((x2-x1)/2 +(y2-y1)/2);
BC=Math.sqrt((x3-x2)/2+(y3-y2)/2);
AC=Math.sqrt((x3-x1)/2+(y3-y1)/2);
P=AB+BC+AC;
p=((AB+BC+AC)/2);
S=Math.sqrt(p*(p-AB)+(p-AC)+(p-BC));
return S;
System.out.println( "Площадь треугольника АВС=" +S );
}
}

-------------------
знаю,что ужас,но что делать дальше не знаю :(

Автор: lBugl 5.3.2012, 08:42
неправильно вычисляется длинна отрезка
Код

Math.sqrt((x2-x1)/2 +(y2-y1)/2);

надо не делить на два а возводить во вторую степень

мб чем нибудь поможет вот этот код:
Код

class Triangle{
    double x1;double y1;
    double x2;double y2;
    double x3;double y3;
    double AB,AC,BC,P,p,r,S;
    
    //конструктор для заданиия координат
    public Triangle(double x1, double y1, double x2, double y2, double x3, double y3) {
        super();
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        this.x3 = x3;
        this.y3 = y3;
    }

    //высчитываем площадь 
    double square(){
        AB=Math.sqrt((x2-x1)*(x2-x1) +(y2-y1)*(y2-y1));
        BC=Math.sqrt((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2));
        AC=Math.sqrt((x3-x1)*(x3-x1) + (y3-y1)*(y3-y1));
        P=AB+BC+AC;
        p=((AB+BC+AC)/2);
        S=Math.sqrt(p*(p-AB)+(p-AC)+(p-BC));
        return S;
    }
}

public class Test {
    
    public static void main(String [] args) {
        Triangle t = new Triangle(0, 0, 5, 0, 2, 2); // создаём треуголник и задаём координаты вершин
        System.out.println( "Площадь треугольника АВС=" + t.square());
    }
}


Автор: jk1 5.3.2012, 09:56
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: dorogoyIV 5.3.2012, 10:18
Код

import java.awt.*;

public class Main
{
 private static double getSideLength(Point p1, Point p2)
 {
  // расстояние между двумя точками
  double a = Math.abs(p1.x - p2.x);
  double b = Math.abs(p1.y - p2.y);
  double alpha = Math.atan(b / a);
  double r = 0;

  if(Math.sin(alpha) != 0)
   r = b / Math.sin(alpha);
  else
   r = a / Math.cos(alpha);
  return r;
 }

 private static double getArea(Point p1, Point p2, Point p3)
 {
  double a, b, c; // стороны треугольника
  a = getSideLength(p1, p2);
  b = getSideLength(p2, p3);
  c = getSideLength(p1, p3);

  // площадь треугольника по правилам математики
  double p = (a + b + c) / 2;
  double s = Math.sqrt(p * (p - a) * (p - b) * (p - c));

  return s;
 }

 public static void main(String [] args)
 {
  Point p1 = new Point(0, 0);
  Point p2 = new Point(0, 5);
  Point p3 = new Point(5, 0);

  System.out.println("S = " + getArea(p1, p2, p3));
 }
}

Автор: Inka94 5.3.2012, 23:40
Большое спасибо за ответы!
Просто меня спасли!)
со второй частью оказалось проще намного ))
задача решена )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)