Форум программистов, компьютерный форум CyberForum.ru

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр - C++

Восстановить пароль Регистрация
 
Valuamba
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 49
24.03.2016, 14:24     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #1
программа 1. Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.
Не понимаю что не так?Какие-то странные ошибки выдает(прервать,продолжить)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int main()
{
    setlocale(LC_ALL,"Russian");
    int n,k,p;//число n я беру как 100
    cout<<"Введите число n: ";cin>>n;
    for(int i=1;i<=n;i++)
    {
        if(i%i==0)//для числ меньше 10
            cout<<i<<endl;
        while(i>9)//для числ больше или равно 10 
        {
            if(i%(i%10)==0)//пример 30:0=0,0-подходит
                if(i%(i/10)==0)//пример 30:3=10,0-подходит
                cout<<i<<endl;
        }   
    }
    _getch();
return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2016, 14:24     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Посмотрите здесь:

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр C++
C++ Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр.
C++ Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Найти все натуральные числа,не превосходящие заданного n,которые делятся на каждую из своих цифр. C++
C++ Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 14:37     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #2
Цитата Сообщение от Valuamba Посмотреть сообщение
if(i%i==0)//для числ меньше 10 cout<<i<<endl;
это условие уже пропустит любое число, 1,4,11,19,20 и т.д.
Цитата Сообщение от Valuamba Посмотреть сообщение
while(i>9)
а это никогда не выйдет из цикла
Valuamba
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 49
24.03.2016, 14:44  [ТС]     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #3
Насчет цикла я все понял,но
Цитата Сообщение от КОП Посмотреть сообщение
это условие уже пропустит любое число, 1,4,11,19,20 и т.д.
но про это я что-то не понимаю можно поподробнее как оно пропустит?
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 14:49     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #4
Valuamba, а вы выполните в уме, 19%19 = 0 вот и пропустило
Aymurat
90 / 84 / 25
Регистрация: 07.11.2014
Сообщений: 572
Завершенные тесты: 5
24.03.2016, 15:00     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #5
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
using namespace std;
int main()
{
    int n;
    cout<<"Vvedite n:"; cin>>n;
    int isave,a,count,schetchik;
    for(int i=1;i<=n;i++)
    {
        if (i%10==0) i++; else {
       if (i<10) cout<<i<<" "; else {
       isave=i;
       schetchik=0;
       count=0;
       while (isave>0)
       {
            a=isave%10; count++; isave=isave/10; if (i%a==0) {schetchik++;}
       }
       if (schetchik==count) cout<<i<<" ";
    }}}
}
Все равно вылет, если n>100, ибо встречаются 101 и т.д., где есть 0. А на ноль делить нельзя. Проверьте, есть ли в числе ноль, если есть - i++;
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 15:03     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #6
Aymurat, вы код тестировали?
и бред имеется (строка 10)
и деление на 0 (17) для i = 101
ваши же пункты)
Aymurat
90 / 84 / 25
Регистрация: 07.11.2014
Сообщений: 572
Завершенные тесты: 5
24.03.2016, 15:32     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #7
КОП,
Цитата Сообщение от КОП Посмотреть сообщение
и бред имеется (строка 10)
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 15:50     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #8
Цитата Сообщение от Aymurat Посмотреть сообщение
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
1. изменение счетчика внутри цикла
2. n = 10, последний вывод будет 11
"Найти все натуральные числа, не превосходящие заданного n"
3. как вы сами заметили, реагирует только на 0 на последней позиции. Какой смысл тестить быстрее, если тест не верен)

Добавлено через 3 минуты
Только заметил, вы потом else подрисовали. Теперь судя по всему 11 просто пропустит
Aymurat
90 / 84 / 25
Регистрация: 07.11.2014
Сообщений: 572
Завершенные тесты: 5
24.03.2016, 15:55     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #9
Цитата Сообщение от КОП Посмотреть сообщение
Только заметил, вы потом else подрисовали. Теперь судя по всему 11 просто пропустит
О каком 11 идет речь, если i<=n? Если даже n=10 цикл закончится на 10
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 15:56     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #10
Цитата Сообщение от Aymurat Посмотреть сообщение
О каком 11 идет речь, если i<=n? Если даже n=10 цикл закончится на 10
разумеется речь об n>=11
Aymurat
90 / 84 / 25
Регистрация: 07.11.2014
Сообщений: 572
Завершенные тесты: 5
24.03.2016, 16:34     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #11
Цитата Сообщение от КОП Посмотреть сообщение
разумеется речь об n>=11
Этого не будет, когда в цикле станет i>n - цикл прерывается.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 16:36     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #12
Aymurat, n а не i! при n=100 не выведет 11.
Aymurat
90 / 84 / 25
Регистрация: 07.11.2014
Сообщений: 572
Завершенные тесты: 5
24.03.2016, 16:40     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #13
КОП, понял, то есть нужно условие if (i%10!=00) /*и здесь убрать else*/ {...}

А затем внутри {...} проверку на нули.
КОП
348 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 755
24.03.2016, 16:43     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #14
Aymurat, вообще вне while не нужна проверка
C++
1
2
3
4
5
6
7
8
9
10
11
for (int i = 1; i <= n; i++)
    {
        int temp = i;
        while (temp > 0)
        {
            int r = temp%10;
            if (r == 0 || i%r !=0) break;
            temp = temp/10;
        }
        if (temp == 0) cout << i << " ";
    }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2016, 19:50     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Еще ссылки по теме:

Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр C++
C++ Найти все натуральные числа, не превосходящие заданного значения N, которые делятся на каждую из своих цифр
C++ Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр

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

Или воспользуйтесь поиском по форуму:
Valuamba
0 / 0 / 0
Регистрация: 03.11.2015
Сообщений: 49
24.03.2016, 19:50  [ТС]     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #15
Я переделал код чтоб сразу начинать с десятков,но все равно выдает ошибку не понятную
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
int main()
{
    setlocale(LC_ALL,"Russian");
    int n,k,p;//число n я беру как 100
    cout<<"Введите число n: ";cin>>n;
    for(int i=10;i<=n;i++)
    {
        k=i;
            if(i%(k%10)==0)
                if(i%(k/10)==0)
                cout<<i<<endl;
        
    }
    _getch();
return 0;
}
Yandex
Объявления
24.03.2016, 19:50     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Ответ Создать тему
Опции темы

Текущее время: 01:24. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru