Проверить, является ли число счастливым билетом на C#

Давайте решим простую, но часто встречаемую задачу - "Дано четырехзначное число. Проверить, является ли оно «счастливым билетом»." Счастливым билетом мы называем такой билет, в котором сумма цифр справа равна сумме цифр слева (например, 1423 - счастливый билет, потому что 1 + 4 = 5 и 2 + 3 = 5). Для начала нам надо научиться находить цифру в числе. Для того, чтоб получить последнюю цифру, нам надо взять остаток от деления на 10. Соответственно, чтоб найти предпоследнюю цифру, необходимо число поделить на 10 и снова взять остаток от деления на 10. Все, что я написал выше в коде выглядит вот так

int number = random.Next(1000, 9999);   // generate four digits number
int fourthDigit = number % 10;          // get 4th digit
int thirdDigit = number / 10 % 10;      // get 3rd digit
int secondDigit = number / 100 % 10;    // get 2nd digit
int firstDigit = number / 1000 % 10;    // get 1st digit

Осталось провести сравнение и вывести результаты пользователю в консоль. Для этого напишем отдельный метод, который будем повторно использовать.

public static void PrintHappyTicket(int number, int sumLeft, int sumRight)
{
	Console.ForegroundColor = ConsoleColor.White;
	Console.WriteLine("Your ticket number is: " + number);
	if (sumLeft == sumRight)
	{
		Console.ForegroundColor = ConsoleColor.Green;
		Console.WriteLine("You have a happy ticket ({0} equals {1})", sumLeft, sumRight);
	}
	else
	{
		Console.ForegroundColor = ConsoleColor.Red;
		Console.WriteLine("Sorry, you have a usual ticket ({0} not equals {1})", sumLeft, sumRight);
	}
	Console.WriteLine();
}

Теперь пришло время усложнить задачу. Давайте предположим, что мы не знаем кол-во цифр в нашем билете, и оно может варьироваться от 2 до 9. В таком случае нам пора использовать циклы и наш алгоритм будет выглядеть следующим образом

// solution with loops
int number2 = random.Next(10, 9999999); ;               // generate random digits number
int digits = (int)Math.Floor(Math.Log10(number2) + 1);  // for students
//int digits = number2.ToString().Length;               // for hard-core guys
int sumRight = 0, sumLeft = 0;
// loop via digits of generated number                      
for (int i = 0; i < digits; i++)
{
	int digit = (int)(number2 / (Math.Pow(10, i))) % 10;
	if (i > digits / 2)
	{
		sumLeft += digit;
	}
	else
	{
		sumRight += digit;
	}
}
PrintHappyTicket(number2, sumLeft, sumRight);   // print results

Полный исходник вы можете скачать в закрепленном архиве. Архив содержит проект в Visaul Studio 2015 на C#.

Присоединяйся

Зарегестрируйся с помощью социальных сетей.

Публикуй

Опиши работу, прикрепи файлы и назначь цену.

Зарабатывай

Получай пассивный доход с продажи работ.

Тебе понадобится 5 минут для публикации работы на сайте.
Похожие работы
Скачать

бесплатно

HappyTicket.zip
27224
Оцени работу

рейтинг

Поделись работой с друзьями

Мы не грузим циферки, чтоб ты увидел контент как можно быстрее;

Комментарии (0)

dmytro

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегестрированые пользователи имеют возможность комментировать работы
Проверить, является ли число счастливым билетом на C#
Дано четырехзначное число. Проверить, является ли оно "счастливым билетом". Готове решение на C# в Visual Studio 2015
Категория: Образование
Стоимость: Бесплатно