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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 19, средняя оценка - 4.63
~B~
 Аватар для ~B~
6 / 6 / 0
Регистрация: 12.06.2011
Сообщений: 80
11.08.2012, 11:49     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #1
Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр.

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

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main ()
{
 int n;
 cout << "Vvedite znachenie n: ";
 cin >> n;
 cout << endl;
 int k,l;
 float m;
 for (int i=0;i<=n;++i)
 {
     k=i/10;
     l=i%10;
     if ((i/k)||(i/l)) 
     cout << "Chislo " << i << "podhodit" << endl;
     else 
     cout <<"Chislo " << i << "ne podhodit";
 }   
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.08.2012, 11:49     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Посмотрите здесь:

Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр C++
C++ Найти все натуральные числа, не превышающие заданного N, которые делятся на каждую из своих цифр.
Найти все натуральные числа,не превосходящие заданного n,которые делятся на каждую из своих цифр. C++
C++ Найти все натуральные числа, не превосходящие заданного п, которые делятся на каждую из своих цифр.
Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
11.08.2012, 12:24     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #2
У тебя проверяется лишь одна цифра. Попробуй так :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
bool flg;
for (int i=1, dig, i_dig; /*0 - не натуральное число*/ i<=n; ++i)
{
flg = true;
i_dig = i;
dig = i%10;
while (i_dig)
{
if (dig == 0) //Проверка на цифру 0
{
flg = false;
break;
}
if (i % dig == 0)
{
i_dig /= 10;
dig = i_dig % 10;
}
else
{
flg = false;
break;
}
if (flg)
cout << i;
}
}
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
11.08.2012, 12:40     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #3
Цитата Сообщение от ~B~ Посмотреть сообщение
C++
1
2
3
k=i/10;
 l=i%10;
 if ((i/k)||(i/l))
диапазон 0 -- 9то
k=i/10; ==0
(i/k) исключение (на 0 не делят) не обрабатывается
0,10,20....
l=i%10;==0
(i/l) исключение (на 0 не делят) не обрабатывается
~B~
 Аватар для ~B~
6 / 6 / 0
Регистрация: 12.06.2011
Сообщений: 80
11.08.2012, 17:33  [ТС]     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #4
Цитата Сообщение от ValeryS Посмотреть сообщение
диапазон 0 -- 9то
k=i/10; ==0
(i/k) исключение (на 0 не делят) не обрабатывается
0,10,20....
l=i%10;==0
(i/l) исключение (на 0 не делят) не обрабатывается
C++
1
2
3
k=i/10;
     l=i%10;
     if (((i/k)!=0)&&((i/l)!=0))
а если так?
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
11.08.2012, 17:40     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #5
~B~, я тебе полностью код привел, но все равно ноль внимания? О_О
Что за мода пошла - игнорировать
~B~
 Аватар для ~B~
6 / 6 / 0
Регистрация: 12.06.2011
Сообщений: 80
11.08.2012, 18:23  [ТС]     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #6
Цитата Сообщение от nexen Посмотреть сообщение
~B~, я тебе полностью код привел, но все равно ноль внимания? О_О
Что за мода пошла - игнорировать
Нет, нет ) Прошу прощения, просто разобраться сложновато, мне бы в своем найти ошибку и исправить. Твой я уже сохранил. Спасибо.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
11.08.2012, 18:56     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #7
~B~, как я уже написал, в твоем коде нет проверки даже на 0 и на числа больше 10, поэтому "исправлять" значит "переписать"
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,057
12.08.2012, 06:58     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #8
~B~,
для начала ты не решил задачу
Цитата Сообщение от ~B~ Посмотреть сообщение
Найти все натуральные числа, не превосходящие заданного n,
Цитата Сообщение от ~B~ Посмотреть сообщение
for (int i=0;i<=n;++i)
{
k=i/10;
l=i%10;
все таки n число или количество разрядов?
~B~
 Аватар для ~B~
6 / 6 / 0
Регистрация: 12.06.2011
Сообщений: 80
12.08.2012, 08:33  [ТС]     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #9
Цитата Сообщение от ValeryS Посмотреть сообщение
~B~,
для начала ты не решил задачу




все таки n число или количество разрядов?
Число, вводимое с клавиатуры.
tuluku
 Аватар для tuluku
5 / 5 / 0
Регистрация: 22.03.2012
Сообщений: 78
12.08.2012, 11:07     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #10
Допустим, так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include <iostream>
using namespace std;
//Деление числа на все цифры, которые входят в его состав
int cif(int chislo){
 int k=1, count, cel, ost;
 cel=chislo;
 count=0;
 do
 {
 ost=cel%10;
 cel=cel/10;
 if (ost>0)
 if ((chislo%ost)>0) count++;//счетчик увеличивается, если число не делится на цифру без остатка
 }
 while(cel);
 return count;
}
 
int main ()
{
 int n;
 cout << "Vvedite znachenie n: ";
 cin >> n;
 int k,l;
 float m;
 for (int i=1;i<=n;++i)
 {
 //если число делится на все свои цифры счетчик должен быть на нуле
 if (cif(i)>0) cout <<"Chislo " << i << "ne podhodit";
 else cout <<"Chislo " << i << "podhodit";
 }   
 cin>>n;
}
Добавлено через 17 минут
В Вашем коде есть строки
k=i/10;
l=i%10;
if ((i/k)||(i/l))
в которых происходит проверка, делится ли число на цифру...
Практически верно, но проверка осуществляется только для одного разряда.
Поэтому в примере выше имеется отдельная подпрограмма cif, в которой и происходит проверка
делится ли число на цифру для каждого разряда.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.08.2012, 13:26     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
-=ЮрА=-
Заблокирован
Автор FAQ
12.08.2012, 13:26     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр #11
~B~, вот решение вашей задачи
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#include <stdio.h>
 
//Функция проверяет делиться ли без остатка число на все
//цифры своих разрядов
int isValueDivOnItsDigits(int val);
 
int main()
{
    int n = 0;
    int i = 0;//Счётчик
    printf("n = ");
    if(!scanf("%d",&n))
        printf("Input error\n");
    else
    {
        for(i = 0; i < n; i = i + 1)
        {
            printf("Value : %d - ", i);
            if(isValueDivOnItsDigits(i))
                printf("is div on it's digits\n");
            else
                printf("not div on it's digits\n");
        }               
    }
    return 0;
}
 
int isValueDivOnItsDigits(int val)
{
    int buf = val;
    int iRet= 0;
    int dig = 0; 
    do
    {
        dig = buf % 10;
        if(dig != 0)
        {
            if(val % dig == 0)
                iRet = 1;
            buf = buf / 10;
        }
        else
            iRet = 0;
    }
    while(iRet == 1 && buf);
    return iRet;
}
Отработка
n = 125
Value : 0 - not div on it's digits
Value : 1 - is div on it's digits
Value : 2 - is div on it's digits
Value : 3 - is div on it's digits
Value : 4 - is div on it's digits
Value : 5 - is div on it's digits
Value : 6 - is div on it's digits
Value : 7 - is div on it's digits
Value : 8 - is div on it's digits
Value : 9 - is div on it's digits
Продолжение
Value : 10 - not div on it's digits
Value : 11 - is div on it's digits
Value : 12 - is div on it's digits
Value : 13 - not div on it's digits
Value : 14 - not div on it's digits
Value : 15 - is div on it's digits
Value : 16 - not div on it's digits
Value : 17 - not div on it's digits
Value : 18 - not div on it's digits
Value : 19 - not div on it's digits
Value : 20 - not div on it's digits
Value : 21 - is div on it's digits
Value : 22 - is div on it's digits
Value : 23 - not div on it's digits
Value : 24 - is div on it's digits
Value : 25 - is div on it's digits
Value : 26 - not div on it's digits
Value : 27 - not div on it's digits
Value : 28 - not div on it's digits
Value : 29 - not div on it's digits
Value : 30 - not div on it's digits
Value : 31 - is div on it's digits
Value : 32 - is div on it's digits
Value : 33 - is div on it's digits
Value : 34 - not div on it's digits
Value : 35 - is div on it's digits
Value : 36 - is div on it's digits
Value : 37 - not div on it's digits
Value : 38 - not div on it's digits
Value : 39 - not div on it's digits
Value : 40 - not div on it's digits
Value : 41 - is div on it's digits
Value : 42 - is div on it's digits
Value : 43 - not div on it's digits
Value : 44 - is div on it's digits
Value : 45 - is div on it's digits
Value : 46 - not div on it's digits
Value : 47 - not div on it's digits
Value : 48 - is div on it's digits
Value : 49 - not div on it's digits
Value : 50 - not div on it's digits
Value : 51 - is div on it's digits
Value : 52 - is div on it's digits
Value : 53 - not div on it's digits
Value : 54 - not div on it's digits
Value : 55 - is div on it's digits
Value : 56 - not div on it's digits
Value : 57 - not div on it's digits
Value : 58 - not div on it's digits
Value : 59 - not div on it's digits
Value : 60 - not div on it's digits
Value : 61 - is div on it's digits
Value : 62 - is div on it's digits
Value : 63 - is div on it's digits
Value : 64 - is div on it's digits
Value : 65 - is div on it's digits
Value : 66 - is div on it's digits
Value : 67 - not div on it's digits
Value : 68 - not div on it's digits
Value : 69 - not div on it's digits
Value : 70 - not div on it's digits
Value : 71 - is div on it's digits
Value : 72 - is div on it's digits
Value : 73 - not div on it's digits
Value : 74 - not div on it's digits
Value : 75 - is div on it's digits
Value : 76 - not div on it's digits
Value : 77 - is div on it's digits
Value : 78 - not div on it's digits
Value : 79 - not div on it's digits
Value : 80 - not div on it's digits
Value : 81 - is div on it's digits
Value : 82 - is div on it's digits
Value : 83 - not div on it's digits
Value : 84 - is div on it's digits
Value : 85 - is div on it's digits
Value : 86 - not div on it's digits
Value : 87 - not div on it's digits
Value : 88 - is div on it's digits
Value : 89 - not div on it's digits
Value : 90 - not div on it's digits
Value : 91 - is div on it's digits
Value : 92 - is div on it's digits
Value : 93 - is div on it's digits
Value : 94 - not div on it's digits
Value : 95 - is div on it's digits
Value : 96 - is div on it's digits
Value : 97 - not div on it's digits
Value : 98 - not div on it's digits
Value : 99 - is div on it's digits
Value : 100 - not div on it's digits
Value : 101 - not div on it's digits
Value : 102 - not div on it's digits
Value : 103 - not div on it's digits
Value : 104 - not div on it's digits

Value : 105 - not div on it's digits
Value : 106 - not div on it's digits
Value : 107 - not div on it's digits
Value : 108 - not div on it's digits
Value : 109 - not div on it's digits
Value : 110 - not div on it's digits
Value : 111 - is div on it's digits
Value : 112 - is div on it's digits
Value : 113 - not div on it's digits
Value : 114 - not div on it's digits
Value : 115 - is div on it's digits
Value : 116 - not div on it's digits
Value : 117 - not div on it's digits
Value : 118 - not div on it's digits
Value : 119 - not div on it's digits
Value : 120 - not div on it's digits
Value : 121 - is div on it's digits
Value : 122 - is div on it's digits
Value : 123 - is div on it's digits
Value : 124 - is div on it's digits
Press any key to continue
Проверка http://liveworkspace.org/code/7aee52...f4b26b2f25dd59
Миниатюры
Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр  
Yandex
Объявления
12.08.2012, 13:26     Найти все натуральные числа, не превосходящие заданного n, которые делятся на каждую из своих цифр
Ответ Создать тему
Опции темы

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