Лаба 3
.docxЛабораторная 3
Задание 1. Даны координаты вершин двух треугольников. Определить, какой из них имеет больший периметр. Обязательно использовать функции.
using System;
class Triangle
{
// Функция, которая вычисляет расстояние между точками вершин
public static double Perimeter(double x1, double y1, double x2, double y2, double x3, double y3)
{
double a = Math.Sqrt(Math.Pow(x2 - x1, 2) + Math.Pow(y2 - y1, 2));
double b = Math.Sqrt(Math.Pow(x3 - x2, 2) + Math.Pow(y3 - y2, 2));
double c = Math.Sqrt(Math.Pow(x1 - x3, 2) + Math.Pow(y1 - y3, 2));
return a + b + c; // Функция возврата
}
static void Main()
{
// Ввод координат первого треугольника
Console.Write("Введите координаты вершин первого треугольника (через пробел 5 чисел): ");
string[] input = Console.ReadLine().Split();
double x1 = double.Parse(input[0]);
double y1 = double.Parse(input[1]);
double x2 = double.Parse(input[2]);
double y2 = double.Parse(input[3]);
double x3 = double.Parse(input[4]);
double y3 = double.Parse(input[5]);
// Вычисление периметра первого треугольника
double p1 = Perimeter(x1, y1, x2, y2, x3, y3);
// Ввод координат второго треугольника
Console.Write("Введите координаты вершин второго треугольника (через пробел 5 чисел): ");
input = Console.ReadLine().Split(); // split - разбивает строку на подстроки на основе указанного символа-разделителя
x1 = double.Parse(input[0]);
y1 = double.Parse(input[1]);
x2 = double.Parse(input[2]);
y2 = double.Parse(input[3]);
x3 = double.Parse(input[4]);
y3 = double.Parse(input[5]);
// Вычисление периметра второго треугольника
double p2 = Perimeter(x1, y1, x2, y2, x3, y3);
// Сравнение периметров
if (p1 > p2)
Console.WriteLine("Первый треугольник больше по периметру, чем второй");
else if (p2 > p1)
Console.WriteLine("Второй треугольник больше по периметру, чем первый");
else
Console.WriteLine("Периметры треугольников равны.");
}
}
Задание 2. Найти наибольший общий делитель двух чисел. Обязательно использовать рекурсивный подход решения задачи.
using System;
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Введите значение x: ");
int x = int.Parse(Console.ReadLine());
Console.WriteLine("Введите значение y: ");
int y = int.Parse(Console.ReadLine());
int nod = NOD(x, y);
Console.WriteLine($"Наибольший общий делитель для {x} и {y} = {nod}");
}
static int NOD(int x, int y)
{
if (x == 0)
return y;
if (y == 0)
return x;
if (x == y)
return x;
if (x > y)
return NOD(x - y, y);
else
return NOD(y – x, x);
}
}