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

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

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

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

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

Проверьте, делится ли число на 11 по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
14.06.2013, 23:22     Проверка делимости числа на 11 #2
Цитата Сообщение от LN Посмотреть сообщение
занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
а по моему равна 0
Croessmah
Модератор
Эксперт CЭксперт С++
13058 / 7321 / 817
Регистрация: 27.09.2012
Сообщений: 18,071
Записей в блоге: 3
Завершенные тесты: 1
14.06.2013, 23:23     Проверка делимости числа на 11 #3
Цитата Сообщение от ValeryS Посмотреть сообщение
а по моему равна 0
Нет!
Длинная арифметика(деление на 11)
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
14.06.2013, 23:26     Проверка делимости числа на 11 #4
LN, получаешь остаток от деления на 10 cуммируешь их, потом делишь число на 10, и так до тех пор пока число не станет <1
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
14.06.2013, 23:27     Проверка делимости числа на 11 #5
Цитата Сообщение от Croessmah Посмотреть сообщение
Нет!
хорошо
можно так сказать равна 0 или 11
мне просто сейчас некогда лезть в учебники и вспоминать

Цитата Сообщение от LN Посмотреть сообщение
число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
мы же просто к рекурсии придем
Croessmah
Модератор
Эксперт CЭксперт С++
13058 / 7321 / 817
Регистрация: 27.09.2012
Сообщений: 18,071
Записей в блоге: 3
Завершенные тесты: 1
14.06.2013, 23:35     Проверка делимости числа на 11 #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;
}
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
14.06.2013, 23:42     Проверка делимости числа на 11 #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 например,
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
14.06.2013, 23:57     Проверка делимости числа на 11 #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
Hrundel
26 / 26 / 2
Регистрация: 27.05.2012
Сообщений: 114
15.06.2013, 00:01     Проверка делимости числа на 11 #9
А так нельзя???

std::cout<<((sum1-sum2)%11?"неделится":"делится")<<std::endl;
Croessmah
Модератор
Эксперт CЭксперт С++
13058 / 7321 / 817
Регистрация: 27.09.2012
Сообщений: 18,071
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 00:04     Проверка делимости числа на 11 #10
Цитата Сообщение от Hrundel Посмотреть сообщение
А так нельзя?
собственно вот:
Цитата Сообщение от LN Посмотреть сообщение
по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
15.06.2013, 00:05     Проверка делимости числа на 11 #11
Цитата Сообщение от Hrundel Посмотреть сообщение
А так нельзя???
std::cout<<((sum1-sum2)%11?"неделится":"делится")<<std::endl;
как бы это не совсем совпадает с требованием
Цитата Сообщение от LN Посмотреть сообщение
Проверьте, делится ли число на 11 по следующему признаку: число делится на 11, если у него разность между суммой цифр, занимающих четные места, и суммой цифр занимающих нечетные места, кратна 11.
Croessmah
Модератор
Эксперт CЭксперт С++
13058 / 7321 / 817
Регистрация: 27.09.2012
Сообщений: 18,071
Записей в блоге: 3
Завершенные тесты: 1
15.06.2013, 00:07     Проверка делимости числа на 11 #12
Цитата Сообщение от ValeryS Посмотреть сообщение
остаток от деления проверяете ?
В условии не сказано о способе проверки кратности
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
15.06.2013, 00:15     Проверка делимости числа на 11 #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;
    }
UnsKneD
алкокодер
154 / 150 / 11
Регистрация: 27.12.2012
Сообщений: 548
15.06.2013, 02:23     Проверка делимости числа на 11 #14
ValeryS, сказано проверить разность на кратность, вот она и проверена. Конечно можно сразу число проверить, но ТС не это просил сделать.

Добавлено через 4 минуты
C++
1
2
if(n<0) // если отрицательная разность
  n*=-1;  // сделаем положительной
ааа зачем?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.06.2013, 10:53     Проверка делимости числа на 11
Еще ссылки по теме:
C++ Признак делимости и рекурсия
Проверить признак делимости на 11 C++
C++ Нахождение критерия делимости
Функция проверки признаков делимости C++
Проверить признак делимости на три C++

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

Или воспользуйтесь поиском по форуму:
ValeryS
Модератор
6551 / 5017 / 463
Регистрация: 14.02.2011
Сообщений: 16,738
15.06.2013, 10:53     Проверка делимости числа на 11 #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;
}
Yandex
Объявления
15.06.2013, 10:53     Проверка делимости числа на 11
Ответ Создать тему
Опции темы

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