我正在学习C#并发现了这个练习题:
编写一个程序,用以下给出的方法计算三角形的面积: 两边的长度和它们之间的角度(提示:侧角侧)
我知道如何在C#中找到三角形的区域,如果我有基数和高度,我知道有一种方法可以在.Math类中使用.Cos方法来获得我的余弦需要我的问题。但是,我的程序似乎不喜欢我使用的语法。我是否有任何关于如何在.Math类中实现方法的建议,以解决像这样的几何问题,它需要用户输入侧面,角度和另一面?
我知道公式是 c ^ 2 = a ^ 2 + b ^ 2 - 2ab * cos(y)//其中y =角度
这是我到目前为止所做的事情,我认为这将会解决我想要做的事情:
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 :(得分:2)
通过调用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
接受弧度的角度,因此转换。
问题中的代码忽略了表达式的平方根。这个答案中的代码是这样的。
答案 1 :(得分:0)
需要指定类。这是Math.Cos(angle)
。也可以使用Math.Pow(side1, 2)
对数字进行平方。
答案 2 :(得分:0)
请注意,三角形的区域是
0.5*side1*side2*sin(toRadians(angle))
如果angle
是side1
和side2
之间的角度。