Как найти площадь поверхности пирамиды в Java-программировании (CodeHS)? - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть задание на CodeHS для программирования калькулятора для площади поверхности пирамиды, и он распечатывает неправильную площадь поверхности на несколько десятичных знаков.Я не вижу, как это неправильно (код ниже).

Я уже пробовал подключить формулу от Google для площади поверхности, и она не сработала, и напечатал неправильный номер.

 public double surfaceArea() {
  double hw = (double)width/2;
  double hl = (double)length/2;
  double slantHeight1 = ((double)Math.sqrt( (double)height*height + 
   (double)hw*hw ));
  double slantHeight2 = ((double)Math.sqrt( (double)height*height + (double)hl*hl ));

  return (double)(((double)0.5 * 2 * slantHeight1 * width)
  + ((double)0.5 * 2 * slantHeight2 * length) 
  + (length * width));

Пример: для пирамиды длиной 1, шириной 3 и высотой 5 предполагается печать 23,29, но печать 23,69, и я не знаю почему?

Ответы [ 2 ]

0 голосов
/ 17 февраля 2019

измените это:

  return (double)(((double)0.5 * 2 * slantHeight1 * width)
  + ((double)0.5 * 2 * slantHeight2 * length) 
  + (length * width));

на это:

  return (double)(((double)0.5 * 2 * slantHeight1 * length)
  + ((double)0.5 * 2 * slantHeight2 * width) 
  + (length * width));

Вы ошиблись формулой

0 голосов
/ 17 февраля 2019

Другое альтернативное решение: это уравнение для площади поверхности правой прямоугольной пирамиды:

enter image description here

Это может быть просто записано как:

    public static void main(String[] args) {

        double length = 1;
        double width = 3;
        double height = 5;
        double resultPyramidArea = (length * width) + (length * Math.sqrt(Math.pow(width / 2, 2) +
                Math.pow(height, 2))) + (width * Math.sqrt(Math.pow(length / 2, 2) + Math.pow(height, 2)));

        System.out.println(resultPyramidArea);
    }
...