валидность треугольника УЧТЕНО И ДОРОБОТАНО
Цитата lxa85[I:
]В данном случае в процедуру установки параметров можно прописать процедуру установки флага "валидности" треугольника.
Тогда в процедуре вычисления площади будет проверяться условие планарности треугольника по флагу.[/i] »
|
Сделал. Не знаю так ли как Вы написали.
Код:

// Проверка планарности треугольника
if ((aSide + bSide) > cSide && (aSide + cSide) > bSide && (bSide + cSide) > aSide) {
// Вычисление площади
точность УЧТЕНО
Цитата lxa85:
Точность - вежливость королей. По таким мелочам судят о специалисте. »
|
Программу буду улучшать по мере изучения
учтено. программу буду улучшать по мере изучения
Цитата lxa85:
Ваш пример с одной стороны достаточно каноничен и в нем нет сложности, с другой оторван от реальности и практики. »
|
Цитата lxa85:
Те же прямоугольные треугольники здесь не учитываются. Ответ будет дан с определенной погрешностью (кстати вопрос "на засыпку" как специалисту: какая погрешность метода при вычислении площади прямоугольного треугольника?).
Отсутствие условий планиметрии приведет к ошибке - вычислению корня из отрицательного числа (NaN). »
|
Вы сами дали ответ на свой вопрос) точность! в прямоугольном треугольнике площадь равна (а*b)/2 ... очень высокая точность!) А вот вычисление квадратного корня с числа например 2 или 3....)
Тут уже вопрос как заставить ее работать... У меня выводит 0. Так как не может вычислить целый квадратный корень.
Цитата lxa85:
P.S. Не стоит без особой надобности выделять текст жирным шрифтом. »
|
Это чисто для себя. Так сказать "вопрос-ответ". Выделение своих сообщений (вопросов). Для более простейшей навигации.
Вот код после доработки:
главный класс
package square;
Код:

public class Square {
public static void main(String[] args) {
Triangle triangle = new Triangle(2, 5, 6);
triangle.squareOut();
}
}
Класс с методами и конструктором
package square;
Код:

public class Triangle {
private int aSide;
private int bSide;
private int cSide;
private double square;
private double perimeter;
private int vuvod;
public Triangle(int aSide, int bSide, int cSide) {
this.aSide = aSide;
this.bSide = bSide;
this.cSide = cSide;
}
private void print(String str) {
System.out.println(str);
}
//
// Проверка "на дурака" введенных значение и вычисление площади
//
public void square() {
// Проверка нет ли стороны с отрицательным значением или равным нулю
if (aSide <= 0 || bSide <= 0 || cSide <= 0) {
vuvod = 1;
} else {
// Проверка планарности треугольника
if ((aSide + bSide) > cSide && (aSide + cSide) > bSide && (bSide + cSide) > aSide) {
// Вычисление площади
perimeter = (aSide + bSide + cSide) / 2;
square = Math.sqrt(perimeter * (perimeter - aSide) * (perimeter - bSide) * (perimeter - cSide));
vuvod = 2;
} else {
// Когда данные числа не могут соответствовать длине сторон треугольника
vuvod = 3;
}
}
if (square == 0) {
vuvod = 0;
}
}
//
// Вывод значения на экран
//
public void squareOut() {
this.square();
switch (vuvod) {
case 1:
print("Длинна не может быть отрицательным числом");
break;
case 2:
print("Площадь треугольника равна " + square);
break;
case 3:
print("У треугольника не может быть сторон с такими значениями");
break;
default:
print("\tхм... что то не так с программой... Советую заглянуть в метод square... \n\t Скорее всего программа не может добыть квадратный корень. ");
}
}
}
P.S.
Сегодня ночью думаю скину код где будет проверка треугольника на прямоугольность и вычисление площади по отдельной формуле. Думаю использовать сравнение трех сторон. Две самые "мелкие" должны быть катетами. Дальше с помощю теоремы Пифагора проверить будет ли получена гипотенуза равна "нашей" введеной. пока мой извращенный мозг более простого не придумал)))
P.P.S.
Надеюсь етот смайл пробет стенку головой)