2015-10-25 6 views
3

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

Это все, что у меня есть и почему-то (что я не могу понять достаточно хорошо, чтобы посмотреть), это не работает.

<html> 
    <head> 
     <title>Triangle's Area & Perimeter</title> 
     <meta charset="UTF-8"> 
     <meta name="viewport" content="width=device-width, initial-scale=1.0"> 
     <script type="text/javascript"> 

      function Triangle(side1,side2,side3){ 

       this.side1 = side1; 
       this.side2 = side2; 
       this.side3 = side3; 

       this.getArea = function(){ 
        return s = (this.side1 + this.side2 + this.side3)/2; 
        area = squareRoot(s * (s-side1) * (s-side2) * (s-side3)); 
       }; 

       this.getPerimeter = function(){ 
        return side1 + side2 + side3; 
       }; 

       this.toString = function(){ 
        return "The Triangle with sides = " + this.side1 + this.side2 + this.side3 + " has Area = " + this.getArea() + " and Perimeter = " + this.getPerimeter(); 
       }; 
      } 

      function calculate(){ 

       var s = parseFloat(document.getElementById('side1','side2','side3').value); 


       if(isNaN(s)){ 
        document.getElementById('data').innerHTML = "Please enter numbers only"; 
        return; 
       } 

       if(s<=0){ 
        document.getElementById('data').innerHTML = "Negative numbers and Zero don't make sense"; 
        return; 
       } 


       var myTriangle = new Triangle(); 

       document.getElementById('data').innerHTML = myTriangle.toString(); 

      } 
    </script> 
</head> 
<body> 

    <h3>Program Calculates Area and Perimeter of Triangles</h3> 
    <p>Enter the side1: <input type="text" id="side1" value="" /> 
    <p>Enter the side2: <input type="text" id="side2" value="" /> 
    <p>Enter the side3: <input type="text" id="side3" value="" /> 
    <input type="button" value="Calculate" onClick="calculate()" /></p> 

    <p id="data"></p> 
</body> 

ответ

0

Здесь есть несколько мелких ошибок, так что давайте начнем. Во-первых, давайте посмотрим на входе:

var s = parseFloat(document.getElementById('side1','side2','side3').value); 

Мы должны знать три разные стороны во всех наших расчетов, так что давайте извлекать входы отдельно:

var s1 = parseFloat(document.getElementById('side1') 
    , s2 = parseFloat(document.getElementById('side2') 
    , s3 = parseFloat(document.getElementById('side3'); 

Далее нам нужно будет работать ваша валидация на все три чисел, изменяя следующий условные к:

if(isNaN(s1) || isNaN(s2) || isNaN(s3)) 

... и ...

if(s1<=0 || s2<=0 || s3<=0) 

Наконец, мы должны будем пройти все значения нашего Triangle конструктора:

var myTriangle = new Triangle(s1, s2, s3); 

Далее, давайте посмотрим на наш Triangle объект. Функция getPerimeter() работает хорошо, поэтому нет необходимости касаться этого. Чтобы получить область треугольника со своих сторон, мы можем использовать Heron's formula, который вы попытались. Вот рабочая реализация с помощью нашего уже определен getPerimeter() функции:

this.getArea = function(){ 
    var p = this.getPerimeter(); 
    return Math.sqrt(p * (p-side1) * (p-side2) * (p-side3)); 
}; 

Вот рабочий JSFiddle со всеми исправлениями. Обратите внимание, что я также сделал некоторые другие очистки, например кеширование узлов DOM. (Вам нужно будет поместить код JavaScript в теги <script> в конце вашего элемента <body>, чтобы он работал.)

+0

Отлично! Придется потратить некоторое время, пытаясь понять, почему код не будет работать, если я поместил теги

0

вы не можете сделать это:

document.getElementById('side1','side2','side3'); 

вам нужно сделать отдельные переменные:

var s1 = parseFloat(document.getElementById('side1').value); 
var s2 = parseFloat(document.getElementById('side2').value); 
var s3 = parseFloat(document.getElementById('side3').value); 

, а затем передать эти переменные в качестве аргументов к Функция треугольника

Смежные вопросы