инфа / Отчет лаба 6
.docxЛабораторная работа №6
Выполнил студент группы БРТ 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.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void button1_Click(object sender, EventArgs e)
{
double a, b, c;
a = double.Parse(textBox1.Text);
b = double.Parse(textBox2.Text);
c = double.Parse(textBox3.Text);
listBox1.Items.Clear();
Ramp ugli = new Ramp(a, b, c);
if (ugli.ok)
{
ugli.ReshZad();
listBox1.Items.Add("Для сторон a=" + ugli.a + " b=" + ugli.b + " c=" + ugli.c);
listBox1.Items.Add("Углы ua=" + ugli.ua + " ub=" + ugli.ub + " uc=" + ugli.uc);
}
else
listBox1.Items.Add("Плохие данные");
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void label1_Click(object sender, EventArgs e)
{
}
private void Form1_Load_1(object sender, EventArgs e)
{
}
}
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 void ReshZad()
{
this.ua = this.ugol(1);
this.ub = this.ugol(2);
this.uc = this.ugol(3);
}
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;
}
}
}
Результаты тестирования программы: