Реализовать в виде класса набор методов для выполнения следующих операций с целыми числами: - 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; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д