Untitled

 avatar
unknown
plain_text
2 years ago
2.2 kB
5
Indexable
namespace educationTerm2;

public class lab_1_vers2
{
    static long Factorial(int n)
    {
        if (n == 0 || n == 1)
            return 1;

        long result = 1;

        for (int i = 2; i <= n; i++)
        {
            result *= i;
        }

        return result;
    }

    public static long Calcfactorial(int n, int m)
    {
        if (n < m)
            throw new ArgumentException("N должно быть больше или равно M.");

        long value1 = Factorial(n);
        long value2 = Factorial(m) * Factorial(n - m);
        return value1 / value2;
    }

    public static void Main(string[] args)
    {
        int n, m;

        bool validN;
        bool validM;

        do
        {
            Console.WriteLine("Введите значение для сочетания N:");
            string? inputN = Console.ReadLine();

            validN = int.TryParse(inputN, out n);

            if (!validN)
                Console.WriteLine("Ошибка ввода. Пожалуйста, введите целочисленное значение для N.");

        } while (!validN);

        do
        {
            Console.WriteLine("Введите значение M:");
            string? inputM = Console.ReadLine();

            validM = int.TryParse(inputM, out m);

            if (!validM)
                Console.WriteLine("Ошибка ввода. Пожалуйста, введите целочисленное значение для M.");

        } while (!validM);

        try
        {
            if (n < 0 || m < 0)
                throw new ArgumentException("N и M должны быть неотрицательными числами.");

            long result = Calcfactorial(n, m);
            string suffix = (result == 1) ? "сочетание" : "сочетаний";
            Console.WriteLine("Количество {0} при N равное {1} по M равное {2} составит {3} {4}", suffix, n, m, result, suffix);
        }
        catch (ArgumentException except)
        {
            Console.WriteLine("Ошибка: " + except.Message);
        }
    }
}
Editor is loading...