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

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

Войти
Регистрация
Восстановить пароль
 
Scorpik1
7 / 7 / 4
Регистрация: 27.07.2011
Сообщений: 29
#1

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

12.10.2013, 17:33. Просмотров 822. Ответов 2
Метки нет (Все метки)

Помогите, решить задачу " Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр." при n > 10 . При n< 10 Мы используем for (i=1; i<=n; i++) printf("%d,",i);
Я пытался реализовать задачу вот так :
C++ (Qt)
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
#include <stdio.h>
#include <Windows.h>
int main(){
    int i, n, kol, soxranx, soxranx1, j, k, sum;
    int delitel[5];
    printf("Vvedi chislo n=");
    scanf("%d",&n);
    kol=2;
    soxranx= n;
    soxranx1= n;
    sum=0;
    if(n<10) for (i=1; i<=n; i++) printf("%d,",i);
    if(10<=n){
    for (i=1; i<10; i++) printf("%d,",i);
    do{
        kol=kol+1;
        soxranx=soxranx/10;
 
    }while(soxranx =0);
    
    for (i=10; i<=n; i++){
        for (j=1; j<=kol; j++){
        delitel[j]=soxranx1%10;
        if(delitel[j]==0) break;
        soxranx1=soxranx1/10;
        }
        for(k=1; k<=kol; k++){
            if(delitel[k]==0) {break;}
            else{ sum= sum+1;}
            if(sum==kol) printf("%d", n);
            }
                        sum=0;
 
        n=n+1;
    }
}
    system("pause");
 
    return 0;
}
Но, у меня она не работает при n>10. Подскажите , как лучше реализовать эту программу и подскажите, где ошибки. Заранее большое спасибо.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 17:33     Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр
Посмотрите здесь:

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

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
VEINHORN
542 / 91 / 22
Регистрация: 16.12.2011
Сообщений: 317
12.10.2013, 22:28     Найти все натуральные числа, не превосходящие заданного 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
28
29
30
31
32
33
#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
 
int main() {
    int n = 0;
    cout << "enter n: ";
    cin >> n;
    if(n >= 10) {
        for(int i = 1; i < n; i++) {
            char buf[10];
            char *string = itoa(i, buf, 10);
            bool flag = true;
            for(int j = 0; j < strlen(string); j++) {
                char digit[2];
                sprintf(digit, "%c", string[j]);
                if(digit[0] == '0')
                    continue;
                if(i % atoi(digit) != 0) {
                    flag = false;
                    break;
                }
            }
            if(flag)
                printf("%d,", i);
        }
    } else
        for(int i = 0; i < n; i++)
            printf("%d,", i);
    system("pause");
    return 0;
}
Hoottie_McGOOB
107 / 105 / 5
Регистрация: 04.10.2013
Сообщений: 231
12.10.2013, 23:02     Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр #3
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
48
49
50
51
52
53
54
55
56
57
58
59
60
#include <stdafx.h>
#include <iostream>
#include <cstdlib>
 
using namespace std;
 
int main()
{
    setlocale(LC_ALL, "rus");
    int N;
    cout<<"Введите N: ";
    cin>>N;
 
    int p=1;
    int z;
    int m;
 
    bool is_true_digit = true;
 
    for(int i=1; i<=N; i++)
    {
        m = i;
        is_true_digit = true;
 
        if(m<10)
        {
            cout <<p<<": "<<i<<endl;
            p++;
        }
 
 
        if(m>=10)
        for(;;)
        {
            z = m%10;
 
            if(z==0) break;
            
            m=(m-m%10)/10;
 
            if(i%z!=0) is_true_digit = false;
            if (m<10)
            {
                if(m==0) break;
                if(i%m!=0) is_true_digit = false;
            }
 
            if(m<10)
            if(is_true_digit == true)
            {
                cout <<p<<": "<<i<<endl;
                p++;
                break;
            }
        }
        
    }
 
  system("pause");
}
Yandex
Объявления
12.10.2013, 23:02     Найти все натуральные числа, не превосходящие заданного N и делящиеся на каждую из своих цифр
Ответ Создать тему
Опции темы

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