инфа / Отчет лаба 5
.docxЛабораторная работа №5
Выполнил студент группы БРТ 1301: Иванов Иван
-
Тема работы: «Классы»
-
Текст задания: Определить углы треугольника, длины сторон которого (a, b,c) заданы.
Применить теорему половинного угла:
tg(Y/2)=sqrt((p-a)*(p-b)/(p*(p-c))) где p=(a+b+c)/2
Y-угол, принадлежащей стороне C
-
Формализация задачи: Определить углы треугольника, длины сторон которого (a, b,c) заданы.
Структурированный исходный текст программы:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Laba5
{
class Ramp
{
public double a, b, c;
public double ua, ub, uc;
public bool ok = true;
public double ugol(int n)
{
double a1, b1, c1;
switch (n)
{
case 1: { a1 = a; b1 = b; c1 = c; break; }
case 2: { a1 = c; b1 = a; c1 = b; break; }
default: { a1 = c; b1 = b; c1 = a; break; }
}
// Console.WriteLine("n="+n+" a1="+a1+" b1="+b1+" c1="+c1);
double p, y, t;
p = ((a1 + b1 + c1) / 2);
t = ((p - a1) * (p - b1) / (p * (p - c1)));
t = Math.Sqrt(t);
y = Math.Atan(t); ;
y = 2 * y;
return (y);
}
public double DAMN(double x)
{
return (180 * x) / Math.PI;
}
public Ramp(double a, double b, double c)
{
if ((a < b + c && b < a + c && c < a + b))
{
this.a = a;
this.b = b;
this.c = c;
}
else
ok = false;
}
}
class Program
{
static void Main(string[] args)
{
double a, b, c;
Console.WriteLine("Введите a,b,c");
a = Convert.ToDouble(Console.ReadLine());
b = Convert.ToDouble(Console.ReadLine());
c = Convert.ToDouble(Console.ReadLine());
Ramp ugli = new Ramp(a, b, c);
Console.WriteLine("Исходные данные: a=" + a + " b=" + b + " c=" + c);
if (ugli.ok)
{
ugli.ua = ugli.DAMN(ugli.ugol(1));
ugli.ub = ugli.DAMN(ugli.ugol(2));
ugli.uc = ugli.DAMN(ugli.ugol(3));
Console.WriteLine("Для сторон a=" + ugli.a + " b=" + ugli.b + " c=" + ugli.c);
Console.WriteLine("Углы равны a1=" + ugli.ua + " a2=" + ugli.ub + " a3=" + ugli.uc);
}
else
Console.WriteLine("Неверные данные");
Console.ReadLine();
}
}
}
Результаты тестирования программы: