Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами: - C# (194852)

Узнай цену своей работы

Формулировка задачи:

Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами: 1) Перестановки в n - значном числе первой и последней цифры местами; 2) проверки, Есть ли в записи числа nk цифра m. 3) Среди всех n-значных чисел указать те, сумма цифр которых равна данному числу к. Разработать основную программу, демонстрирующую использование методов созданного класса.

Решение задачи: «Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами:»

textual
Листинг программы
static class IntegerFunctions
{
    private static byte[] GetDigits(long n)
    {
        var result = new byte[(int)Math.Log10(n) + 1];
        for (int i = 0; n != 0; i++, n /= 10)
            result[i] = (byte)(n % 10);
        Array.Reverse(result);
        return result;
    }
    private static long GetNumber(byte[] d)
    {
        long result = 0;
        for (int i = 0; i < d.Length; i++) 
            result += d[i] * (long)Math.Pow(10, d.Length - i - 1);
        return result;
    }
    public static long ChangeLastFirst(long n)
    {
        var d = GetDigits(n);
        byte tmp = d[0];
        d[0] = d[d.Length - 1];
        d[d.Length - 1] = tmp;
        return GetNumber(d);
    }
    public static bool ContainNumber(long nk, byte m)
    {
        return GetDigits(nk).Contains(m);
    }
    public static int[] GetSumNumbers(int n, int k)
    {
        int f = (int)Math.Pow(10, n - 1);
        int l = (int)Math.Pow(10, n);
        int c = l - f;
        return Enumerable.Range(f, c).Where(x => GetDigits(x).Sum(d => d) == k).ToArray(); //Int, но удобство дороже)
    }
}
class Program
{
    static void Main(string[] args)
    {
        long n1, n2;
 
        Console.WriteLine("Введите число, в котором будут переставлены крайние цифры");
        n1 = Int64.Parse(Console.ReadLine());
        Console.WriteLine(IntegerFunctions.ChangeLastFirst(n1));
 
        Console.WriteLine("Введите число и цифру, которую необходимо проверить");
        n1 = Int64.Parse(Console.ReadLine());
        n2 = Byte.Parse(Console.ReadLine());
        Console.WriteLine(IntegerFunctions.ContainNumber(n1, (byte)n2) ? "Цифра есть" : "Цифры нету");
 
        Console.WriteLine("Введите число n и сумму");
        n1 = Int64.Parse(Console.ReadLine());
        n2 = Int64.Parse(Console.ReadLine());
        foreach (var elm in IntegerFunctions.GetSumNumbers((int)n1, (int)n2))
            Console.WriteLine(elm);
 
        Console.WriteLine("Нажмите любую клавишу...");
        Console.ReadKey();
        return;
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы