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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.60
LN
0 / 0 / 0
Регистрация: 25.02.2010
Сообщений: 50
#1

Проверка делимости числа на 11 - C++

14.06.2013, 23:17. Просмотров 1931. Ответов 14
Метки нет (Все метки)

Проверьте, делится ли число на 11 по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.06.2013, 23:17
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Проверка делимости числа на 11 (C++):

Проверка делимости чисел - C++
Даны два целых числа a и b. Если a делится на b или b делится на a, то вывести 1, иначе – любое другое число. Условные операторы и...

Проверка делимости 1,11,111,.,11.1 на их позиции - C++
Дана последовательность из чисел (последовательность из единиц): 1, 11, 111, ..., 11..1. (до N) Требуется определить делимость числа на...

Ввод чисел и проверка их делимости - C++
Программа осуществляет ввод чисел и проверяет их делимость на 2 и 3. Сообщение о том, что введенное число делится на 2 или 3 или...

Функция проверки делимости числа на 8 - C++
Для проверки делимости числа на 8, необходимо, чтобы сумма цифр числа делилась на 8. Написать функцию проверки делимости числа N вводимого...

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

Возведение числа в степень и проверка числа на четность - C++
Добрый вечер что то вообще не понял эту тему помогите пожалуйста С помощью директивы #define написать следующие макросы: a) возведение...

14
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
14.06.2013, 23:22 #2
Цитата Сообщение от LN Посмотреть сообщение
занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
а по моему равна 0
0
Croessmah
Ушел
13777 / 8027 / 927
Регистрация: 27.09.2012
Сообщений: 19,783
Записей в блоге: 3
Завершенные тесты: 1
14.06.2013, 23:23 #3
Цитата Сообщение от ValeryS Посмотреть сообщение
а по моему равна 0
Нет!
Длинная арифметика(деление на 11)
0
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
14.06.2013, 23:26 #4
LN, получаешь остаток от деления на 10 cуммируешь их, потом делишь число на 10, и так до тех пор пока число не станет <1
0
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
14.06.2013, 23:27 #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Нет!
хорошо
можно так сказать равна 0 или 11
мне просто сейчас некогда лезть в учебники и вспоминать

Цитата Сообщение от LN Посмотреть сообщение
число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
мы же просто к рекурсии придем
0
Croessmah
Ушел
13777 / 8027 / 927
Регистрация: 27.09.2012
Сообщений: 19,783
Записей в блоге: 3
Завершенные тесты: 1
14.06.2013, 23:35 #6
Не проверял, но попробуйте так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
 
int main(){
    int number=275;
    int sum1=0,sum2=0;
    while(number){
        sum1+=number%10;
        number/=10;
        sum2+=number%10;
        number/=10;
    }
    std::cout<<((sum1-sum2)%11?"No":"Yes")<<std::endl;
}
1
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
14.06.2013, 23:42 #7
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;
void main()
{
    setlocale(0,"");
    int n = 110, sum1 = 0, sum2 = 0;
    for( int i = 1; n>0; i++){
        int tmp = n%10;
        if( i%2 == 0 ){ 
            sum2+=tmp; 
        } else {
            sum1+=tmp;
        };
        n/=10;
    };
    if( (sum2 - sum1)%11 == 0 ){
        cout << "делиться" << endl;
    } else {
        cout << "не делиться" << endl;
    }
};
Добавлено через 3 минуты
ValeryS, ноль же можно делить, и кратность будет. 110, 220 например,
1
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
14.06.2013, 23:57 #8
Цитата Сообщение от UnsKneD Посмотреть сообщение
ValeryS, ноль же можно делить, и кратность будет.
Как бы догадываюсь
мне одно не понятно зачем вы

Цитата Сообщение от Croessmah Посмотреть сообщение
((sum1-sum2)%11?
Цитата Сообщение от UnsKneD Посмотреть сообщение
(sum2 - sum1)%11
остаток от деления проверяете ?
может тогда проще сразу все число проверить?

здесь именно рекурсия
примерно так (пишу на коленке так мысли вслух)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
bool Div11(int n)
{
int sum1=0;
int sum2=0;
 while(n){
        sum1+=n%10;
        n/=10;
        sum2+=n%10;
        n/=10;
    }
n=sum1-sum2;
 
if(n<0) // если отрицательная разность
  n*=-1;  // сделаем положительной
 
if(n==0)  
 return true; // значит делится
if(n<11)  
 return false; // не делится
 
return Div11( n); // проверим разность
 
}
каюсь цикл стащил у Croessmah
2
Hrundel
28 / 28 / 2
Регистрация: 27.05.2012
Сообщений: 114
15.06.2013, 00:01 #9
А так нельзя???

std::cout<<((sum1-sum2)%11?"неделится":"делится")<<std::endl;
1
Croessmah
Ушел
13777 / 8027 / 927
Регистрация: 27.09.2012
Сообщений: 19,783
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 00:04 #10
Цитата Сообщение от Hrundel Посмотреть сообщение
А так нельзя?
собственно вот:
Цитата Сообщение от LN Посмотреть сообщение
по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
1
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
15.06.2013, 00:05 #11
Цитата Сообщение от Hrundel Посмотреть сообщение
А так нельзя???
std::cout<<((sum1-sum2)%11?"неделится":"делится")<<std::endl;
как бы это не совсем совпадает с требованием
Цитата Сообщение от LN Посмотреть сообщение
Проверьте, делится ли число на 11 по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
0
Croessmah
Ушел
13777 / 8027 / 927
Регистрация: 27.09.2012
Сообщений: 19,783
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 00:07 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
остаток от деления проверяете ?
В условии не сказано о способе проверки кратности
0
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
15.06.2013, 00:15 #13
Croessmah,
а цикл то можно изменить (чтобы всех запутать)
C++
1
2
3
4
5
6
7
int sum=0;
 while(n){
        sum+=n%10;
        n/=10;
        sum-=n%10;
        n/=10;
    }
1
UnsKneD
алкокодер
155 / 151 / 12
Регистрация: 27.12.2012
Сообщений: 550
15.06.2013, 02:23 #14
ValeryS, сказано проверить разность на кратность, вот она и проверена. Конечно можно сразу число проверить, но ТС не это просил сделать.

Добавлено через 4 минуты
C++
1
2
if(n<0) // если отрицательная разность
  n*=-1;  // сделаем положительной
ааа зачем?
0
ValeryS
Модератор
7012 / 5350 / 528
Регистрация: 14.02.2011
Сообщений: 18,051
15.06.2013, 10:53 #15
Цитата Сообщение от UnsKneD Посмотреть сообщение
ValeryS, сказано проверить разность на кратность, вот она и проверена.
Цитата Сообщение от Croessmah Посмотреть сообщение
В условии не сказано о способе проверки кратности
Ценю ваш юмор
но чем разность отличается от числа?
Цитата Сообщение от UnsKneD Посмотреть сообщение
но ТС не это просил сделать.
он много чего не просил
например что число должно быть целым
с плавающими наши примеры не пойдут( хотя бы потому что там нет остатков от деления)
или что число положительное
где то пробегала тема что остаток от деления отрицательных чисел дан на откуп компилятору, но дело было давно и нюансов не помню

Цитата Сообщение от UnsKneD Посмотреть сообщение
ааа зачем?
а чтоб мне удобней было
иноче пришлось писать бы так
C++
1
2
3
4
if(n==0)  
 return true; // значит делится
if((n>-11) && (n<11))  
 return false; // не делится

вот другой вариант (но он уже менее понятен,по моему)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
bool Div11(int n)
{
int sum=0;
 while(n){
        sum+=n%10;
        n/=10;
        sum-=n%10;
        n/=10;
    }
if(sum)
 {  
    if(sum<11 && sum>-11)  
        return false; 
    return Div11( sum);
 }
 return true;
}
0
15.06.2013, 10:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 10:53
Привет! Вот еще темы с ответами:

Графическое изображение делимости - C++
Составить программу для графического изображения делимости чисел от 1 до N (значение N вводится с клавиатуры). В каждой строке надо...

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

Нахождение критерия делимости - C++
Помогите пожалуйста с нахождением критерия делимости большого десятичного числа, реализованное в виде массива байт, на число 293. Я не...

Признак делимости и рекурсия - C++
Помргите, пожалуста, решить задачу: С помощью признака делимости на 11 проверить, кратно ли заданное натуральное число 11. Реализовать...


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

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

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