Программа на C++ - Вопросы по С+
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

Вопрос Программа на C++

Регистрация
25 Июл 2013
Сообщения
87
Репутация
1
Спасибо
0
Монет
0
Задача. Нужно найти все натуральные числа на отрезке [a;b] которые делятся на все свои цифры. Например. a=13, b=20. Вывод: 15.
Я её решил, но когда отправляю вижу, что программа не прошла ни одного теста. В чём же ошибка?
#include
using namespace std;
int main()
{
int a,b,j,h;
bool r=0;
j=1;
cin >> a >> b;
if (a!=b)
for (int i=a;i<=b;i++)
{
while (i/j>=1)
{
j=j*10;
h=(i%j)/(0.1*j);
if (h==0)
{
r=1;
break;
}
if (i%h!=0)
{
r=1;
break;
}
}
if (r!=1)
cout << << i;
r=0;
j=1;
}
return 0;
}
 
Регистрация
13 Мар 2017
Сообщения
314
Репутация
70
Спасибо
11
Монет
0
Можно реализовать интереснее, чтобы показывало делятся ли на свои элементы все числа на заданном промежутке.
[THIDE="0"]#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("YES\n");
else
printf("NO\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;
}[/THIDE]
 
Сверху Снизу