Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.03.2021, 15:45   #1
Empt7
 
Регистрация: 23.02.2021
Сообщений: 5
Сообщение Задания на For (C++)

Выведите все четыре значные числа сумма цифр которых равна 15 (например
это 1941 так как 1 + 9 + 4 + 1 = 15)
Empt7 вне форума Ответить с цитированием
Старый 10.03.2021, 15:53   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Что не получается? Сделайте 3 вложенных цикла (внешний от 1 до 9, а два внутренних от 0 до 9), внутри считайте 4ю цифру (из 15 вычесть все 3 счетчика циклов), если получилась от 0 до 9, то печатайте 3 счетчика и найденную цифру.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.03.2021, 19:27   #3
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,716
По умолчанию

Можно проще: один цикл, при каждом вхождении "распиливать" на цифры и анализировать на 15.
digitalis вне форума Ответить с цитированием
Старый 10.03.2021, 20:24   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

digitalis, если сделать просто цикл от 1000 до 9999, то код получится короче, но количество чисел, которые требуется проверить, будет в 10 раз больше, а на практике в 35 раз медленнее (если верно намерил).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 10.03.2021, 21:13   #5
digitalis
Старожил
 
Аватар для digitalis
 
Регистрация: 04.02.2011
Сообщений: 4,716
По умолчанию

При современных скоростях процессоров я бы не заморачивался с таких пустяков... Зато писa'ть короче. Затратим лишнюю мс процессорного времени - сэкономим себе полчаса на пиво
digitalis вне форума Ответить с цитированием
Старый 11.03.2021, 08:32   #6
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Код:
int[] mas1 = new int[] { 0, 0, 0, 0 };
            int c = 0;
            System.Diagnostics.Stopwatch stw = new System.Diagnostics.Stopwatch();
            stw.Restart();
            while (true)
            {
                mas1[0]++;
                int acc = 0;
                for (int i = 0; i < mas1.Length; i++)
                {
                    if (mas1[i] % 10 == 0)
                    {
                        acc++;
                        mas1[i] %= 10;
                        if (i + 1 < mas1.Length)
                            mas1[i + 1]++;
                    }
                    else break;
                }

                double sum = mas1.Sum();
                if (sum == 15)
                {
                    Console.Write(mas1.Aggregate("", (a, b) => a += b.ToString()) + "; ");
                    if ((++c) % 40 == 0) Console.WriteLine();
                }

                if (acc == mas1.Length) break;
            }
            stw.Stop();
            Console.WriteLine(Environment.NewLine + "Total count: " + c.ToString());
            Console.WriteLine("Time ellapsed: " + stw.Elapsed.TotalSeconds.ToString() + " sec.");
Цитата:
Сообщение от BDA Посмотреть сообщение
а на практике в 35 раз медленнее (если верно намерил).
Даже секунды не заняло.
Изображения
Тип файла: jpg Безымянный.jpg (95.2 Кб, 9 просмотров)
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 11.03.2021, 19:59   #7
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

WorldMaster, отличное четырехзначное число 0960
Цитата:
Сообщение от WorldMaster Посмотреть сообщение
Даже секунды не заняло.
Написал несколько функций по поиску нужных чисел (с чуть разными подходами) и сравнивал время 100 тысяч вызовов без непосредственной печати. 245 символов против 129 символов, но 0.159 секунд против 5.367 секунд. В принципе, мне все равно, какой подход изберет ТС.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.03.2021, 20:22   #8
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
WorldMaster, отличное четырехзначное число 0960
А что с ним не так?? по человечьи это 960.
С каких пор вы перестали ноль считать за числом??



Цитата:
Сообщение от BDA Посмотреть сообщение
Написал несколько функций по поиску нужных чисел
Цитата:
Сообщение от BDA Посмотреть сообщение
но 0.159 секунд против 5.367 секунд
ну хоть бы опубликовали методы то. Из чего ТС будет выбирать?
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Старый 11.03.2021, 20:50   #9
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,430
По умолчанию

Цитата:
Сообщение от WorldMaster Посмотреть сообщение
ну хоть бы опубликовали методы то. Из чего ТС будет выбирать?
Все алгоритмы уже описаны в теме словестно. Вот будут попытки реализации от ТС, тогда можно их будет обсудить и выложить свою реализацию.
Цитата:
Сообщение от WorldMaster Посмотреть сообщение
С каких пор вы перестали ноль считать за числом??
Ну сам по себе ноль и число, и цифра. Но так как старший разряд многозначного числа должен быть больше нуля, то количество разрядов подсчитывается уже после отбрасывания незначащих нулей. А найти нужно именно четырехзначные числа.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 11.03.2021, 20:59   #10
WorldMaster
Старожил
 
Аватар для WorldMaster
 
Регистрация: 25.08.2011
Сообщений: 2,841
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Ну сам по себе ноль и число, и цифра. Но так как старший разряд многозначного числа должен быть больше нуля, то количество разрядов подсчитывается уже после отбрасывания незначащих нулей. А найти нужно именно четырехзначные числа.
ну один элементарный if никак не повлияет на ситуацию. К тому же
Цитата:
Сообщение от BDA Посмотреть сообщение
А найти нужно именно четырехзначные числа.
ТС явно об этом не указывает.
Skype - wmaster_s E-Mail - WorldMasters@gmail.com
Работаем по 3 критериям - быстро, качественно, недорого. Заказчик выбирает любые два.
WorldMaster вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Решения задания №1 и задания №2 выполнить в одном файле-проекте С++ bittspower Помощь студентам 1 26.11.2017 21:21
2 задания на С++ Антон1305 Фриланс 4 17.07.2012 15:27
задания с++ pksvova Общие вопросы C/C++ 6 01.11.2011 00:52
задания divwond Свободное общение 4 23.05.2011 10:29
4 задания по С++ chev-91 Фриланс 4 04.05.2011 15:31