Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Valuamba
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 81
1

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

24.03.2016, 14:24. Просмотров 378. Ответов 14
Метки нет (Все метки)

программа 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;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.03.2016, 14:24
Ответы с готовыми решениями:

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

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

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

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

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

14
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 14:37 2
Цитата Сообщение от Valuamba Посмотреть сообщение
if(i%i==0)//для числ меньше 10 cout<<i<<endl;
это условие уже пропустит любое число, 1,4,11,19,20 и т.д.
Цитата Сообщение от Valuamba Посмотреть сообщение
while(i>9)
а это никогда не выйдет из цикла
0
Valuamba
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 81
24.03.2016, 14:44  [ТС] 3
Насчет цикла я все понял,но
Цитата Сообщение от КОП Посмотреть сообщение
это условие уже пропустит любое число, 1,4,11,19,20 и т.д.
но про это я что-то не понимаю можно поподробнее как оно пропустит?
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 14:49 4
Valuamba, а вы выполните в уме, 19%19 = 0 вот и пропустило
0
Aymurat
123 / 113 / 67
Регистрация: 07.11.2014
Сообщений: 765
Завершенные тесты: 6
24.03.2016, 15:00 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++;
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 15:03 6
Aymurat, вы код тестировали?
и бред имеется (строка 10)
и деление на 0 (17) для i = 101
ваши же пункты)
0
Aymurat
123 / 113 / 67
Регистрация: 07.11.2014
Сообщений: 765
Завершенные тесты: 6
24.03.2016, 15:32 7
КОП,
Цитата Сообщение от КОП Посмотреть сообщение
и бред имеется (строка 10)
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 15:50 8
Цитата Сообщение от Aymurat Посмотреть сообщение
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
1. изменение счетчика внутри цикла
2. n = 10, последний вывод будет 11
"Найти все натуральные числа, не превосходящие заданного n"
3. как вы сами заметили, реагирует только на 0 на последней позиции. Какой смысл тестить быстрее, если тест не верен)

Добавлено через 3 минуты
Только заметил, вы потом else подрисовали. Теперь судя по всему 11 просто пропустит
0
Aymurat
123 / 113 / 67
Регистрация: 07.11.2014
Сообщений: 765
Завершенные тесты: 6
24.03.2016, 15:55 9
Цитата Сообщение от КОП Посмотреть сообщение
Только заметил, вы потом else подрисовали. Теперь судя по всему 11 просто пропустит
О каком 11 идет речь, если i<=n? Если даже n=10 цикл закончится на 10
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 15:56 10
Цитата Сообщение от Aymurat Посмотреть сообщение
О каком 11 идет речь, если i<=n? Если даже n=10 цикл закончится на 10
разумеется речь об n>=11
0
Aymurat
123 / 113 / 67
Регистрация: 07.11.2014
Сообщений: 765
Завершенные тесты: 6
24.03.2016, 16:34 11
Цитата Сообщение от КОП Посмотреть сообщение
разумеется речь об n>=11
Этого не будет, когда в цикле станет i>n - цикл прерывается.
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 16:36 12
Aymurat, n а не i! при n=100 не выведет 11.
0
Aymurat
123 / 113 / 67
Регистрация: 07.11.2014
Сообщений: 765
Завершенные тесты: 6
24.03.2016, 16:40 13
КОП, понял, то есть нужно условие if (i%10!=00) /*и здесь убрать else*/ {...}

А затем внутри {...} проверку на нули.
0
КОП
547 / 397 / 127
Регистрация: 15.08.2010
Сообщений: 1,118
Завершенные тесты: 1
24.03.2016, 16:43 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 << " ";
    }
1
Valuamba
3 / 3 / 4
Регистрация: 03.11.2015
Сообщений: 81
24.03.2016, 19:50  [ТС] 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;
}
0
24.03.2016, 19:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2016, 19:50

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

Найти все натуральные числа, не превосходящие заданного значения N, которые делятся на каждую из своих цифр
Задача 1.3. Разработать программу, которая находит все натуральные числа, не...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru