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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Valuamba
3 / 3 / 2
Регистрация: 03.11.2015
Сообщений: 77
#1

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

24.03.2016, 14:24. Просмотров 288. Ответов 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, которые делятся на каждую из своих цифр (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
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 / 2
Регистрация: 03.11.2015
Сообщений: 77
24.03.2016, 14:44  [ТС] #3
Насчет цикла я все понял,но
Цитата Сообщение от КОП Посмотреть сообщение
это условие уже пропустит любое число, 1,4,11,19,20 и т.д.
но про это я что-то не понимаю можно поподробнее как оно пропустит?
0
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
24.03.2016, 14:49 #4
Valuamba, а вы выполните в уме, 19%19 = 0 вот и пропустило
0
Aymurat
99 / 93 / 29
Регистрация: 07.11.2014
Сообщений: 632
Завершенные тесты: 5
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
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
24.03.2016, 15:03 #6
Aymurat, вы код тестировали?
и бред имеется (строка 10)
и деление на 0 (17) для i = 101
ваши же пункты)
0
Aymurat
99 / 93 / 29
Регистрация: 07.11.2014
Сообщений: 632
Завершенные тесты: 5
24.03.2016, 15:32 #7
КОП,
Цитата Сообщение от КОП Посмотреть сообщение
и бред имеется (строка 10)
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
0
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
24.03.2016, 15:50 #8
Цитата Сообщение от Aymurat Посмотреть сообщение
Уверены, что бред? До 100 будет быстрее тестить, чем проверкой на нули в числе.
1. изменение счетчика внутри цикла
2. n = 10, последний вывод будет 11
"Найти все натуральные числа, не превосходящие заданного n"
3. как вы сами заметили, реагирует только на 0 на последней позиции. Какой смысл тестить быстрее, если тест не верен)

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

А затем внутри {...} проверку на нули.
0
КОП
361 / 280 / 86
Регистрация: 15.08.2010
Сообщений: 762
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 / 2
Регистрация: 03.11.2015
Сообщений: 77
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
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2016, 19:50
Привет! Вот еще темы с ответами:

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

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

Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр - C++
Помогите, решить задачу &quot; Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр.&quot; при n &gt; 10 . При...

Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр - C++
При компиляции выводит какие то числа.Я уверен, что где то ошибка.Но не могу найти. #include&lt;stdio.h&gt; #include&lt;conio.h&gt; int...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.03.2016, 19:50
Ответ Создать тему
Опции темы

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