Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.93/40: Рейтинг темы: голосов - 40, средняя оценка - 4.93
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65

Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр

28.08.2012, 14:21. Показов 7972. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр. подсчитать кол-во

Решаю ее в таком ключе, подскажите, пожалуйста, в каком месте ошибка и как изменить алгоритм решения?

int sum=0, kol=0;

for (int i=100000; i<=999999; i++)
{
if (i%sum==0)
{

sum=sum+i%10;
i=i/10;
kol=kol+1;
}
else continue;

}

cout<<"kolichestvo="<<kol<<endl;
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.08.2012, 14:21
Ответы с готовыми решениями:

Найти числа, которые делятся без остатка на сумму своих цифр
Как єто сделать? Используя функцию Sum Digits, разработайте программу, выводит в порядке возрастания целые числа диапазона от 1 до...

Вывести все целые числа, на которые оба введенных числа делятся без остатка
Пользователь вводит два целых числа. Необходимо вывести все целые числа, на которые оба введенных числа делятся без остатка. вот код...

Вывести все целые числа, на которые оба введенных числа делятся без остатка
Пользователь вводит два целых числа. Необходимо вывести все целые числа, на которые оба введенных числа делятся без остатка.

11
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.08.2012, 15:18
ashta, вот корректный алгоритм
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    long buf   = 0;
    long sum   = 0;
    for(long i = 1E6; i < 1E7; i++)
    {
        buf = i;
        sum = buf % 10;
        while(0 < (buf /= 10))
            sum += buf % 10;
        if(i % sum == 0)//Äåëèòñÿ áåç îñòàòêà
            cout<<i<<" % "<<sum<<" = 0\n";
    }
    return 0;
}
http://liveworkspace.org/code/... 13e9b26bca
1000000 % 1 = 0
1000002 % 3 = 0
1000006 % 7 = 0
1000008 % 9 = 0
1000010 % 2 = 0
1000011 % 3 = 0
1000012 % 4 = 0
1000014 % 6 = 0
....
Миниатюры
Вывести все 6-ти значные числа, которые делятся без остатка на сумму своих цифр  
1
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
28.08.2012, 15:49  [ТС]
Спасибо большое, Юра, за подсказку. Теперь знаю, в каком направлении думать, чтобы решить ее с помощью той информации, которой владею на данный момент. Еще не знаю, что такое long и Е6 - Е7 (я так понимаю это диапазон?). В любом случае, Вы очень мне помогли.
0
Эксперт С++
 Аватар для valeriikozlov
4728 / 2549 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
28.08.2012, 15:50
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
C++
1
for(long i = 1E6; i < 1E7; i++)
заменить на:
C++
1
for(long i = 1E5; i < 1E6; i++)
1
 Аватар для DaskOFF
113 / 113 / 42
Регистрация: 02.05.2012
Сообщений: 524
Записей в блоге: 1
28.08.2012, 16:06
Цитата Сообщение от ashta Посмотреть сообщение
Спасибо большое, Юра, за подсказку. Теперь знаю, в каком направлении думать, чтобы решить ее с помощью той информации, которой владею на данный момент. Еще не знаю, что такое long и Е6 - Е7 (я так понимаю это диапазон?). В любом случае, Вы очень мне помогли.
1E6 = 1 000 000
1E7 = 10 000 000
1
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
28.08.2012, 16:22  [ТС]
Спасибо всем за помощь, но мне решение в такою ключе не подойдет -Е6-Е7, нужно адаптировать под то, что я этого еще знаю.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
28.08.2012, 18:18
Цитата Сообщение от ashta Посмотреть сообщение
Спасибо всем за помощь, но мне решение в такою ключе не подойдет -Е6-Е7, нужно адаптировать под то, что я этого еще знаю.
- DaskOFF, правильно написал
Цитата Сообщение от DaskOFF Посмотреть сообщение
1E6 = 1 000 000
1E7 = 10 000 000
. Программисты рациональный народ - поэтому чтобы каждый раз не вбивать Н-ое число нулей язык содержит специальный формат ввода для ввода десятичной мантиссы, а именно Е а далее идёт число разрядов т.е. int v = 100 эквивалентно int v = 1E2 а десять в 6-й 1000000 равно 1Е6 а 2 на 10 в шестой это 2Е6 что тут не понятного

Не по теме:

Попробуйте сделать ввод 2E6 для этого кода и будете приятно удивлены

Код
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
int main()
{
    int val = 0;
    cout<<"Enter val : ";cin>>val;//Прямо в консоли при англ раскладке вбейте 2E6
    cout<<val<<endl;//Увидите что ввели
    return 0;
}



Хорошо давайте проанализируем Ваш код указав на ошибки:

Цитата Сообщение от ashta Посмотреть сообщение
nt sum=0,kol=0;
- сумма и количество равны ную до цикла, тобишь в самом цикле они только будут накапливаться. Вы понимаете, что для каждого числа отдельно должны сумму и число цифр накапливать?От того у вас и не работало, потому что суммировались все значения разрядов чисел и kol также накапливало общее количество во всех числах.
Далее что вас тут пугает
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
for(long i = 1E6; i < 1E7; i++)
или в каком ключе записано, что вы понять не можете?
А вот такой код вам понятен???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <iostream>
using namespace std;
 
int main()
{
    int buf   = 0;
    int sum   = 0;
    for(int i = 100000; i < 1000000; i++)
    {
        buf = i;
        sum = buf % 10;
        while(0 < (buf /= 10))
            sum += buf % 10;
        if(i % sum == 0)//Делится без остатка
            cout<<i<<" % "<<sum<<" = 0\n";
    }
    return 0;
}
http://liveworkspace.org/code/... 5a80c49da0
100000 % 1 = 0
100002 % 3 = 0
100008 % 9 = 0
100010 % 2 = 0
100011 % 3 = 0
100012 % 4 = 0
100014 % 6 = 0
100016 % 8 = 0
...

Не по теме:

Я кажется понимаю что смутил тип long, т..е если в задачах используем дабл, флоат, инт всё понятно чуть шаг в сторону и приводим тип для тех же целых что и инт всё полные непонятки (до сих пор не пойму в ВУЗах, что забывают рассказать о типах переменных?:scratch:)


Теперь об этом
Цитата Сообщение от valeriikozlov Посмотреть сообщение
аменить на:
Код C++
1
for(long i = 1E5; i < 1E6; i++)
Я неверно трактовал 6-ти значное, т.е в моём представлении это была единица и 6-ть ноликов(т.е изначально посчитал что задача подразумевала рассматривать числа в диапазоне 1000000 до 9999999), на самом деле 6-ти значное число это число в котором всех цифр 6-ть (тобишь от 100000 до 999999)
0
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
29.08.2012, 23:03  [ТС]
Всем спасибо за помощь. Нашла решение в том ключе, котором от нас требуется!!!! Делюсь решением.


int sum=0, kol_vo=0;

for (int i=100000; i<=999999; i++)
{
if (i%(i/100000+i/10000%10+i/1000%10+i/100%10+i/10%10+i%10)==0)

{
cout<<i<<endl;
kol_vo=kol_vo+1;
}

else continue;

}
cout<<"kol_vo="<<kol_vo<<endl;
0
30.08.2012, 01:14

Не по теме:

ashta, вот это

Цитата Сообщение от ashta Посмотреть сообщение
if (i%(i/100000+i/10000%10+i/1000%10+i/100%10+i/10%10+i%10)==0)
и заменяет вот этот цикл
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение
while(0 < (buf /= 10))
* * * * * * sum += buf % 10;
Вот представьте если надо будет 20-ти или вообще невесть какое н-значное число разобрать, вы тоже будете н условных операторов писать?В принципе дело ваше, похвально что вы решили по своему, но применимость такого решения крайне узкая(цикл отработает и для 2-х значных и н-значных), ваш алгоритм исключительно для 6-ти значных, что отимальней решать уж вам...

0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38168 / 21103 / 4307
Регистрация: 12.02.2012
Сообщений: 34,692
Записей в блоге: 14
30.08.2012, 10:09
Цитата Сообщение от ashta Посмотреть сообщение
Нашла решение в том ключе, котором от нас требуется
Цитата Сообщение от ashta Посмотреть сообщение
if (i%(i/100000+i/10000%10+i/1000%10+i/100%10+i/10%10+i%10)==0)
- Ох... И кто же этот садист, такое ТРЕБУЮЩИЙ?
0
9 / 9 / 4
Регистрация: 28.08.2012
Сообщений: 65
30.08.2012, 10:11  [ТС]
Цитата Сообщение от -=ЮрА=- Посмотреть сообщение

Не по теме:

ashta, вот это
и заменяет вот этот цикл

Вот представьте если надо будет 20-ти или вообще невесть какое н-значное число разобрать, вы тоже будете н условных операторов писать?В принципе дело ваше, похвально что вы решили по своему, но применимость такого решения крайне узкая(цикл отработает и для 2-х значных и н-значных), ваш алгоритм исключительно для 6-ти значных, что отимальней решать уж вам...

Юра, я согласна, что Ваше решение компактнее, но для начинающего в изучении с++ когда мы такого еще не изучали я могу пока решить только так. Я взяла Ваше решение на заметку и когда мы придем к этой теме, я думаю смогу решить так как предлагаете Вы.
0
Автор FAQ
 Аватар для -=ЮрА=-
6614 / 4256 / 401
Регистрация: 08.08.2009
Сообщений: 10,325
Записей в блоге: 24
30.08.2012, 10:15
ashta, так ведь я использую тоже целочисленное деление / и остаток от целочисленного деления что и вы % вам должно быть вот это не понятно
buf = i;
sum = buf % 10;
while(0 < (buf /= 10))
sum += buf % 10;
Дык это просто компатная запись этого
C++
1
2
3
4
5
6
7
buf = i;
sum = buf % 10;
while(0 < buf)
{
     buf = buf / 10;
     sum = sum + (buf % 10); 
}
не более...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2012, 10:15
Помогаю со студенческими работами здесь

Вывести все трехзначные числа, которые делятся на суму своих цифр
Вывести все трехзначные числа, которые делятся на суму своих цифр #include &lt;iostream&gt; using namespace std; int main() { ...

Найти все числа в заданном диапазоне, которые делятся на сумму своих цифр.
Написать программу, содержащую не менее двух функций в разных файлах .c (.cpp), и три варианта определения функций: - нерекурсивная; ...

Вывести на экран все трехзначные числа, которые делятся на последнюю из своих цифр
Вывести на экран все трехзначные числа, которые делятся на последнюю из своих цифр. Числа содержащие цифру 0 не учитывать. Спасибо за...

Найти все такие М-значные числа, которые делятся на каждую из цифр в их записи
Найти все такие М-значные числа (М=2,3...), которые делятся на каждую из цифр в их записи. Что-то я не могу понять саму суть задания....

Вывести числа в диапазоне от 0 до 500.которые делятся на 5 без остатка
создать программу которая выводит на экран числа в диапазоне от 0 до 500.которые делятся на 5 без остатака.Заранее спасибо)))))


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru