Форум программистов, компьютерный форум, киберфорум
C для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 14.03.2016
Сообщений: 64
1

Проверить признак делимости на 11, и вывести числа кратные 11, не превосходящих заданного m

10.06.2016, 16:21. Показов 865. Ответов 10
Метки нет (Все метки)

Помогите пожалуйста: Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах, и суммой цифр, стоящих на чётных местах, кратна 11. Проверить этот признак для всех натуральных чисел, не превосходящих заданного m, и вывести числа, кратные 11.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.06.2016, 16:21
Ответы с готовыми решениями:

Для натуральных чисел, не превосходящих заданного k, проверить признак делимости на 9
Помогите с решением задачки на C, никак не могу понять, заранее благодарю. Буду благодарен даже...

Проверить признак делимости на 11
Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах, и суммой цифр,...

Проверить для четырехзначных чисел признак делимости на 11
Проверить для четырехзначных чисел признак делимости на 11 – число делится на 11, если разность...

Проверить признак делимости на 3 на примере заданного числа
Известно, что число делится на 3 , когда сумма его цифр делится на 3. Проверить этот признак на...

10
130 / 130 / 157
Регистрация: 11.04.2015
Сообщений: 343
10.06.2016, 17:12 2
можно без всяких разностей
C
1
2
3
int divide_by_11(int a){
    return (a%11==0)?(0):(1);
}
0
0 / 0 / 1
Регистрация: 14.03.2016
Сообщений: 64
10.06.2016, 18:11  [ТС] 3
andreyka93, нужно чтобы именно с разностью, условие заключается в этом
0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
11.06.2016, 02:02 4
Ilya111,
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
#include <stdio.h>
#include <stdlib.h>
//Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах,
// и суммой цифр, стоящих на чётных местах, кратна 11. Проверить этот признак для
//всех натуральных чисел, не превосходящих заданного m, и вывести числа, кратные 11.
int main()
{
    int i, x, sum_even, sum_odd, n, flag = 0, m, dif;
    do{
        puts("Input number more 200");
        if(1 != scanf("%d", &m)){
            fprintf(stderr, "Incorrect input.Try again.");
            exit(1);
        }
        if(m > 200)break;
    }while(1);
    for(i = 200; i < m; ++i){
        sum_even = sum_odd = 0;
        x = i;
        n = 1;
        while(x > 0){
            (n % 2 == 0) ? (sum_even += x % 10) : (sum_odd += x % 10);
            x /= 10;
            ++n;
        }
        (sum_even > sum_odd) ? (dif = sum_even - sum_odd) : (dif = sum_odd - sum_even);
        if(dif == 11){
            printf("Number different 11 is %d\n", i);
            flag = 1;
            if(i % 11 == 0)
                puts("  Yes,number is a multiple of 11");
            else
                puts("  No,number is not multiple of 11");
        }
    }
    if(!flag)
        puts("the required number is not found");
    return 0;
}
0
Jewbacabra
11.06.2016, 03:31
  #5

Не по теме:

Цитата Сообщение от LFC Посмотреть сообщение
i % 11 == 0
И все равно без остатка не обойтись.

0
737 / 542 / 416
Регистрация: 17.09.2015
Сообщений: 1,601
11.06.2016, 04:34 6
Цитата Сообщение от Jewbacabra Посмотреть сообщение
И все равно без остатка не обойтись.
что вы имели ввиду?
0
130 / 130 / 157
Регистрация: 11.04.2015
Сообщений: 343
11.06.2016, 11:44 7
вот изменил программу автора выше, и теперь ты не увидишь остатка от деления, строка 37
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
#include <stdio.h>
#include <stdlib.h>
 
int isdiv11(int x)
{
    div_t d = div(x, 11);
    return !d.rem;
}
 
//Число делится на 11, если разность между суммой цифр, стоящих на нечётных местах,
// и суммой цифр, стоящих на чётных местах, кратна 11. Проверить этот признак для
//всех натуральных чисел, не превосходящих заданного m, и вывести числа, кратные 11.
int main(
{
    int i, x, sum_even, sum_odd, n, flag = 0, m, dif;
    do{
        puts("Input number more 200");
        if(1 != scanf("%d", &m)){
            fprintf(stderr, "Incorrect input.Try again.");
            exit(1);
        }
        if(m > 200)break;
    }while(1);
    for(i = 200; i < m; ++i){
        sum_even = sum_odd = 0;
        x = i;
        n = 1;
        while(x > 0){
            (n % 2 == 0) ? (sum_even += x % 10) : (sum_odd += x % 10);
            x /= 10;
            ++n;
        }
        (sum_even > sum_odd) ? (dif = sum_even - sum_odd) : (dif = sum_odd - sum_even);
        if(dif == 11){
            printf("Number different 11 is %d\n", i);
            flag = 1;
            if(isdiv11(i))
                puts("  Yes,number is a multiple of 11");
            else
                puts("  No,number is not multiple of 11");
        }
    }
    if(!flag)
        puts("the required number is not found");
    return 0;
}
0
Jewbacabra
11.06.2016, 13:10
  #8

Не по теме:

Цитата Сообщение от LFC Посмотреть сообщение
что вы имели ввиду?
К бессмысленности задачи. Что от начального числа остаток считать, что от разности

0
0 / 0 / 1
Регистрация: 14.03.2016
Сообщений: 64
15.06.2016, 10:23  [ТС] 9
andreyka93, а что делает подпрограмма isdiv11? что она возвращает? !d.rem и что это такое?
0
4638 / 2148 / 270
Регистрация: 01.03.2013
Сообщений: 5,719
Записей в блоге: 22
18.06.2016, 01:25 10
Цитата Сообщение от Jewbacabra Посмотреть сообщение
Что от начального числа остаток считать, что от разности
C
1
2
3
4
5
int f(int i, int a) {return i ? f(i/10, i%10-a) : a>0 ? a : -a;}
 
bool tst(int i) {return i>9 ? tst(f(i,0)) : i==0;}
 
int main() {for(int i=1; i<1E8; i++) if (tst(i)!=(i%11==0)) cout<<"err on "<<i<<'\n';}
Вот вам осмысленный кот без остатков. Только %10 для выделения цифр.
1
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
11046 / 6993 / 1656
Регистрация: 25.07.2009
Сообщений: 12,763
19.06.2016, 04:09 11
Цитата Сообщение от Jewbacabra Посмотреть сообщение
И все равно без остатка не обойтись.
Дао в том, чтобы операцию остатка от деления не использовать?
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdio.h>
#include <stdlib.h>
 
int main(void) {
    unsigned n;
    
    while ( printf("Number: ") && scanf("%u", &n) == 1 ) {
        char buf[16];
        int i, diff, cnt[2] = { 0 };
        
        sprintf(buf, "%u", n);
        for ( i = 0; buf[i]; ++i )
            cnt[i & 1] += buf[i] - '0';
        
        diff = abs(cnt[0] - cnt[1]); 
        
        printf("It is %sa multiple of 11\n", ( diff / 11 * 11 == diff ) ? "" : "not ");
    }
    
    return 0;
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.06.2016, 04:09

Проверить признак делимости вводимого числа на 10
Прошу помощи. Нужно составить программу, которая проверяла бы признак делимости вводимого числа на...

Для заданного числа n определите делится ли оно на 9, используя признак делимости
1. для заданного числа n определите делится ли оно на 9, используя признак делимости. 2. провести...

Проверить признак делимости на 11
Задача. Число делится на 11, если разность между суммой цифр, стоящих на нечетных местах, кратна...

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


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

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

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