No Description

mvavilov dede817f7b Обновить 'readme.md' 2 days ago
oap_labs e6cfe55aa7 maks 2 weeks ago
.gitignore 91dacc4115 maksim 3 weeks ago
oap_labs.sln 91dacc4115 maksim 3 weeks ago
readme.md dede817f7b Обновить 'readme.md' 2 days ago

readme.md

Лабараторная работа по теме "Функции (методы)"

Задача 1

using System;

internal class Program
{
    /// <summary>
    /// Вычисляет площадь треугольника по координатам его вершин.
    /// </summary>
    /// <param name="x1">Координата X первой вершины.</param>
    /// <param name="y1">Координата Y первой вершины.</param>
    /// <param name="x2">Координата X второй вершины.</param>
    /// <param name="y2">Координата Y второй вершины.</param>
    /// <param name="x3">Координата X третьей вершины.</param>
    /// <param name="y3">Координата Y третьей вершины.</param>
    /// <returns>Площадь треугольника.</returns>
    static void Main(string[] args)
    {
        Console.WriteLine("Введите координаты вершины A");
        double x1 = double.Parse(Console.ReadLine());
        double y1 = double.Parse(Console.ReadLine());
        
        Console.WriteLine("Введите координаты вершины B");
        double x2 = double.Parse(Console.ReadLine());
        double y2 = double.Parse(Console.ReadLine());
        
        Console.WriteLine("Введите координаты вершины C");
        double x3 = double.Parse(Console.ReadLine());
        double y3 = double.Parse(Console.ReadLine());
        
        Console.WriteLine("Площадь треугольника = " + square(x1, y1, x2, y2, x3, y3));
        Console.WriteLine();
    }
    static double square(double x1, double y1, double x2, double y2, double x3, double y3)
    {
        return Math.Abs((x1 * (y2 - y3) + x2 * (y3 - y1) + x3 * (y1 - y2)) / 2);
    }
}
Введите координаты вершины A
10
5
Введите координаты вершины B
3
4
Введите координаты вершины C
5
3
Площадь треугольника = 7,5

Задача 2

using System;

internal class Program
{
    static void Main(string[] args)
    {
        int a = int.Parse(Console.ReadLine());
        int b = int.Parse(Console.ReadLine());
        int c = int.Parse(Console.ReadLine());
        int d = int.Parse(Console.ReadLine());
        int sss = Divider(Divider(a, b), Divider(c, d));
        Console.WriteLine("Наибольший общий делитель: " + sss);
    }

    /// <summary>
    /// Вычисляет наибольший общий делитель (НОД) двух целых чисел с использованием алгоритма Евклида.
    /// </summary>
    /// <param name="a">Первое целое число.</param>
    /// <param name="b">Второе целое число.</param>
    /// <returns>Наибольший общий делитель двух чисел.</returns>
    static int Divider(int a, int b)
    {
        while (b != 0) 
        {
            int result = b;
            b = a % b;
            a = result;
        }
        return a;
    }       
}
10
5
15
25
Наибольший общий делитель:5

Задача 3

using System;

internal class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Введите первое число: ");
        var num1 = int.Parse(Console.ReadLine());

        Console.WriteLine("Введите второе число: ");
        var num2 = int.Parse(Console.ReadLine());

        Console.WriteLine("Введите третье число: ");
        var num3 = int.Parse(Console.ReadLine());

        int num4 = num4(num5(num1, num2), num3);

        Console.WriteLine("Наименьшее общее кратное: " + num4);
    }

    /// <summary>
    /// Вычисляет наибольший общий делитель (НОД) двух целых чисел с использованием алгоритма Евклида.
    /// </summary>
    /// <param name="a">Первое целое число.</param>
    /// <param name="b">Второе целое число.</param>
    /// <returns>Наибольший общий делитель двух чисел.</returns>
    static int num5(int a, int b)
    {
        while (b != 0)
        {
            int temp = b;
            b = a % b;
            a = temp;
        }
        return a;
    }

    /// <summary>
    /// Вычисляет наименьшее общее кратное (НОК) двух целых чисел.
    /// </summary>
    /// <param name="a">Первое целое число.</param>
    /// <param name="b">Второе целое число.</param>
    /// <returns>Наименьшее общее кратное двух чисел.</returns>
    static int num4(int a, int b)
    {
        return (a / num5(a, b)) * b;
    }
}
Введите первое число :
10
Введите второе число :
5
Введите третье число :
20
Наименьшее общее кратное: 5

Задача 4

using System;

internal class Program
{
    static void Main(string[] args)
    {
        double firstnumber = double.Parse(Console.ReadLine());
        double secondnumber = double.Parse(Console.ReadLine());
        double thirdnumber = double.Parse(Console.ReadLine());
        Console.WriteLine("Сумма большего и меньшего числа = " + Sum(firstnumber, secondnumber, thirdnumber));
    }

    /// <summary>
    /// Вычисляет сумму большего и меньшего из трех заданных чисел.
    /// </summary>
    /// <param name="firstnumber">Первое число.</param>
    /// <param name="secondnumber">Второе число.</param>
    /// <param name="thirdnumber">Третье число.</param>
    /// <returns>Сумма большего и меньшего числа.</returns>
    static double Sum(double firstnumber, double secondnumber, double thirdnumber)
    {
        double Maxvalue = Math.Max(Math.Max(firstnumber, secondnumber), thirdnumber);
        double Minvalue = Math.Min(Math.Min(firstnumber, secondnumber), thirdnumber);
        return Maxvalue + Minvalue;
    }
}
10
5
3
Cумма большего и меньшего числа = 13

Задача 5

using System;
using System.Linq;

internal class Program
{
    static void Main(string[] args)
    {
        string nums = Console.ReadLine();
        int[] A = nums.Split(' ').Select(int.Parse).ToArray();
        Console.WriteLine("Второе по величине число = " + Res(A));
    }

    /// <summary>
    /// Находит второе по величине число в массиве целых чисел.
    /// </summary>
    /// <param name="A">Массив целых чисел.</param>
    /// <returns>Второе по величине число в массиве.</returns>
    static int Res(params int[] A)
    {
        Array.Sort(A);
        return A[A.Length - 2];
    }
}
10 13 5 7
 Второе по величине число = 10

Задача 6

class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("Введите год: ");
        int year = int.Parse(Console.ReadLine());

        for (int day = 1; day <= 31; day++)
        {
            for (int birthYear = 1900; birthYear < 2000; birthYear++)
            {
                int age = year - birthYear;

                if (age >= 0)
                {
                    int sumOfSquares = SumOfSquares(birthYear);

                    int squareOfDay = day * day;

                    if (sumOfSquares - squareOfDay == age)
                    {
                        Console.WriteLine($"День рождения: {day} декабря {birthYear} года, Возраст: {age}");
                    }
                }
            }
        }
    }

    /// <summary>
    /// Метод для вычисления суммы квадратов цифр числа.
    /// </summary>
    /// <param name="number">Число, для которого нужно вычислить сумму квадратов цифр.</param>
    /// <returns>Сумма квадратов цифр числа.</returns>
    static int SumOfSquares(int number)
    {
        int sum = 0;

        while (number > 0)
        {
            int digit = number % 10;
            sum += digit * digit;
            number /= 10;
        }

        return sum;
    }
}
Введите год:
2002
День рождения: 2 декабря 1920 года, Возраст: 82
День рождения: 4 декабря 1923 года, Возраст: 79
День рождения: 5 декабря 1932 года, Возраст: 70
День рождения: 6 декабря 1907 года, Возраст: 95
День рождения: 6 декабря 1940 года, Возраст: 62
День рождения: 7 декабря 1935 года, Возраст: 67
День рождения: 9 декабря 1919 года, Возраст: 83
День рождения: 12 декабря 1984 года, Возраст: 18
День рождения: 14 декабря 1988 года, Возраст: 14

Задание 7


internal class Program
{
    static void Main()
    {
        Console.WriteLine("Введите упакованную строку:");
        string packedString = Console.ReadLine();
        string unpackedString = UnpackString(packedString);
        Console.WriteLine("Восстановленная строка: " + unpackedString);
    }
    static string UnpackString(string packed)
    {
        string result = "";
        int i = 0;

        /// <summary>
        /// Обрабатываем каждый символ упакованной строки.
        /// </summary>
        while (i < packed.Length)
        {
            /// <summary>
            /// Если текущий символ - цифра, то считываем количество повторений.
            /// </summary>
            if (char.IsDigit(packed[i]))
            {
                /// <summary>
                /// Количество повторений.
                /// </summary>
                int count = 0;
                while (i < packed.Length && char.IsDigit(packed[i]))
                {
                    count = count * 10 + (packed[i] - '0'); 
                    i++;
                }

                /// <summary>
                /// Если после цифры идет буква, то добавляем ее в результат нужное количество раз.
                /// </summary>
                if (i < packed.Length && char.IsUpper(packed[i]))
                {
                    char letter = packed[i];
                    
                    for (int j = 0; j < count; j++)
                    {
                        result += letter;
                    }
                    i++; 
                }
            }
            else
            {
                /// <summary>
                /// Если текущий символ - буква, то просто добавляем ее в результат.
                /// </summary>
                result += packed[i];
                i++;
            }
        }

        return result;
    }
}
Введите упакованную строку:
4AB5C4D
Восстановленная строка: AAAABCCCCCDDDD

Задание 8

internal class Program
{
    static void Main()
    {
        Console.WriteLine("Введите загаданное число (четырехзначное, без повторяющихся цифр):");
        string secretNumber = Console.ReadLine();

        Console.WriteLine("Введите предложенное число (четырехзначное, без повторяющихся цифр):");
        string guessedNumber = Console.ReadLine();

        (int bulls, int cows) = GetBullsAndCows(secretNumber, guessedNumber);

        Console.WriteLine($"Быки: {bulls}, Коровы: {cows}");
    }

    /// <summary>
    /// Метод для подсчета быков и коров.
    /// </summary>
    /// <param name="secret">Загаданное число.</param>
    /// <param name="guess">Предложенное число.</param>
    static (int, int) GetBullsAndCows(string secret, string guess)
    {
        int bulls = 0;
        int cows = 0;

       
        int[] secretCount = new int[10];
        int[] guessCount = new int[10];

        
        for (int i = 0; i < 4; i++)
        {
            if (secret[i] == guess[i])
            {
                bulls++; 
            }
            else
            {
                secretCount[secret[i] - '0']++; 
                guessCount[guess[i] - '0']++; 
            }
        }

        
        for (int i = 0; i < 10; i++)
        {
            cows += Math.Min(secretCount[i], guessCount[i]);
        }

        return (bulls, cows);
    }
}
Введите загаданное число (четырехзначное, без повторяющихся цифр):
5671
Введите предложенное число (четырехзначное, без повторяющихся цифр):
7251
Быки: 1, Коровы: 2