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