2 / 2 / 1
Регистрация: 02.07.2015
Сообщений: 14
1

Выбор счастливого билета случайным образом

22.09.2016, 11:19. Показов 1507. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Привет всем! Недавно начал изучать C#. И вот наткнулся на задачку о счастливом билете. Но решил себе немного усложнить задание и решил запрограммировать создание счастливого билета случайным способом. Вот, хочу поделиться опытом.

Несколько предусловий:
1. В билете 6 цифр.
2. Счастливым билет считается, когда сумма первых трех цифр равна сумме других трех.

Мои действия в конструкторе:
1. Создал целочисленный массив и инициализировал его случайными значениями от 0 до 9.
2. Сравнил суммы левой (lSum) и правой (rSum) части, чтобы определить куда потом добавлять числа для получения lucky ticket.
3. Сосчитал разницу (RizSum) между левой частью и правой и взял ее по модулю. Эту разницу потом нужно будет "раскидать" по меньшей части билета.
4. Далее работаем с меньшей частью (для этого определяется стартовая позиция x в цикле) для каждой цифры: если разница плюс первая цифра больше девяти, то "докидываем" к цифре по максимуму из разницы, чтобы вышло "9", а потом о пересчитываем разницу, убирая уже потраченное на первую цифру. И так до тех пор, пока не распределим разницу до нуля по всей меньшей части (ну или на сколько ее хватит).
5. Конвертируем полученный lucky ticket из массива в одну строку.
6. Ну и создаем метод для получения этой строки. Это и будет "переделанный" счастливый билет.
Код
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
using System;
class LuckyTicket
{
    int[] tMas;
    string ticket;
    public LuckyTicket()
    {
        int i;
        tMas = new int[6];
 
        Random rnd = new Random();
        Console.Write("Выбранный случайным образом номер билета: ");
        for (i = 0; i < 6; i++) {
            tMas[i] = rnd.Next(0, 9);
            Console.Write(tMas[i]);
        }
 
        int lSum, rSum, RizSum;
        lSum = tMas[0] + tMas[1] + tMas[2];
        rSum = tMas[3] + tMas[4] + tMas[5];
        RizSum = lSum - rSum;
 
        int x;
        x= RizSum >= 0 ? 3 : 0;
        RizSum = Math.Abs(RizSum);
        for (i = x; i < (x + 3); i++)
            if ((RizSum + tMas[i]) >= 9) {
                RizSum -= (9-tMas[i]);
                tMas[i] = 9;
                if (RizSum == 0) break;
            }
            else {
                tMas[i] += RizSum;
                break;
            }
        foreach (int t in tMas) ticket += Convert.ToString(t);
    }
    public string GetTicket() {
        return ticket;
    }
}
class LuckyMain {
    static void Main() {
        LuckyTicket ob = new LuckyTicket();
        Console.Write("\nСчастливый билет: {0}\n",ob.GetTicket());
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.09.2016, 11:19
Ответы с готовыми решениями:

Определение "счастливого билета"
В поиске нашел много тем, но всё не то, что нужно. В общем, программа должна писать если билетик...

Количество автобусных билетов, оставшихся до «счастливого» билета
Написать программу, определяющую количество автобусных билетов, оставшихся до «счастливого» билета...

Определить количество автобусных билетов, оставшихся до «счастливого» билета
Написать программу, определяющую количество автобусных билетов, оставшихся до «счастливого» билета...

Сделать выбор случайным образом
Помогите пожалуйста;В данном кусочке программы дано: ген травы, получаемый от отца, и ген кролика и...

2
343 / 305 / 135
Регистрация: 14.03.2015
Сообщений: 1,140
Записей в блоге: 1
22.09.2016, 11:34 2
А в чем, собсна, вопрос?

Зарандомите 6-значное число и через условие прогоните - не подходит - повторите.
0
2 / 2 / 1
Регистрация: 02.07.2015
Сообщений: 14
22.09.2016, 11:41  [ТС] 3
Это не вопрос, а просто хотел поделиться способом таким вот.
Да, можно взять случайное 6-значное число и проверить сумму левой и правой части, но что, если рандом постоянно будет выдавать такое число, что не подходит под "счастливый билет". Все-таки число из 6 цифр, довольно большое.
Мне был интересен сам процесс доведения обычного числа до того, что нам нужно
0
22.09.2016, 11:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.09.2016, 11:41
Помогаю со студенческими работами здесь

Как сделать способ закраски случайным образом и случайным цветом?
Как сделать способ закраски случайным образом и случайным цветом? т.е чтобы он закрашивал,...

Ввести с клавиатуры № лотерейного билета. Задать случайным образом 16 целых чисел от 1 до 1000№№ выигравших би
Приветствую! Помогите плиз с задачей, вообще не шарю. Заранее спасибо) Задача:Ввести с клавиатуры №...

Определение счастливого билета
помогите, не могу понять как составить нужно составить программу показывающую...

Определение счастливого билета
Здравствуйте! Напишите пожалуйста программу, которая по введённому номеру трамвайного билета...

Алгоритм счастливого билета
«Счастливость» билета можно определить несколькими методами. Наибольшее распространение получили...

Расчёт счастливого билета. не запускается
Здравствуйте. прошу извинений за нубство. джаву в глаза увидел только вчера. скачал нетбинс начал...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru