2015-10-15 3 views
-1

Я изучаю C# и нашел эту проблему практики:Расчет площади треугольника с помощью методов в классе System.Math (C#)

Напишите программу, которая вычисляет площадь треугольника со следующими Дано: длины двух сторон и угол между ними (подсказка: боковая сторона)

Я знаю, как найти область треугольника в C#, если у меня есть основание и высота, и я знаю, что есть способ использовать метод .Cos в классе .Math, чтобы получить косинус, который мне нужен для моей проблемы. Тем не менее, моя программа, похоже, не нравится синтаксис, который я использую. Могу ли я получить какие-либо рекомендации о том, как реализовать методы в классе .Math, чтобы решить такую ​​геометрическую проблему, которая принимает пользовательский ввод для стороны, угла и другой стороны?

Я знаю, что формула с^2 = а^2 + B^2 - 2ab * соз (у) // где у = степень угла

Вот что я до сих пор , который я думаю, будет получить через то, что я пытаюсь сделать:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace day_of_the_week 
{ 

    class Program 

    { 

     static void Main(string[] args) 

     { 

      double side1; 
      double side2; 
      double angle; 

      Console.WriteLine("Enter one side length."); 
      side1 = Convert.ToDouble(Console.ReadLine()); 

      Console.WriteLine("Enter the other side's height."); 
      side2 = Convert.ToDouble(Console.ReadLine()); 

      Console.WriteLine("Enter the value of the angle."); 
      angle = Convert.ToDouble(Console.ReadLine()); 

      double thirdside = Program.thirdside(side1, side2); 
      Console.WriteLine(thirdside); 
      Console.ReadLine(); 
      } 
     public static double thirdside(double side1, double side2, double angle) 
     { 
      return (side1*side1 + side2*side2 - 2*side1*side2.Cos(angle)); 
     } 
     } 
    } 
+0

* «Моя программа, похоже, не похожа на синтаксис, который я использую» * не является достаточным описанием вашей проблемы. Пожалуйста, укажите ошибку, которую вы получите, и выделите строку, в которой происходит ошибка. Идеально потратьте время, чтобы удалить все строки, не связанные с ошибкой, и представить только пример минимального кода. Тем не менее, в вашем случае наиболее очевидная ошибка тривиальна. Вы пробовали посмотреть страницу руководства для Math.Cos (https://msdn.microsoft.com/en-us/library/system.math.cos%28v=vs.110%29.aspx)? Он содержит примеры и все такое. – HugoRune

+1

Я голосую, чтобы закрыть этот вопрос как не относящийся к теме, потому что это в основном проблема математики (неправильная/неполная формула) в сочетании с недопустимым синтаксисом из-за опечаток. – poke

+1

КПП. правильная формула для области будет '(side1 * side2 * Math.Sin (angle))/2.0'. – poke

ответ

1

Реализуйте функцию с вызовами Math.Cos и Math.Sqrt, как это:

public static double rad(double deg) 
{ 
    return deg * Math.PI/180; 
} 

public static double thirdside(double side1, double side2, double angleDeg) 
{ 
    double angleRad = rad(angleDeg); 
    return Math.Sqrt(side1*side1 + side2*side2 - 2*side1*side2*Math.Cos(angleRad)); 
} 

Имейте в виду, что вы, вероятно, захотите ввести угол в градусах. Но Math.Cos принимает угол в радианах, следовательно, преобразование.

И в коде в вопросе пренебрегают квадратным корнем выражения. Код в этом ответе делает это.

+0

Очень полезно! Спасибо. – Marykyl

0

Необходимо указать класс. так что это Math.Cos(angle). Также используйте Math.Pow(side1, 2) для квадратных чисел.

0

Обратите внимание, что площадь треугольника

0.5*side1*side2*sin(toRadians(angle)) 

angle, если угол между side1 и side2.

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