Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11

Определить, делится ли это число на 15

26.11.2013, 15:15. Показов 5998. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"Пользователь вводит двоичное число. Нужно определить делится ли это число на 15."
Я написал программу которая переводит двоичное число в десятичное и делит на 15.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
 
int main()
{
    setlocale (LC_ALL, "Russian");
    cout << "Введите двоичное число(длина числа не превышает 10000 двоичных разрядов)" << endl;
    string s;  
    cin>>s;
    int n=0;
    for(int i=s.length()-1;i>=0;i--) 
    {
        if(s[s.length()-i-1]=='1')  
            n=n+pow(2.0,i); 
    }
    if(n%15==0)
        cout<<"Делится";
    else
        cout<<"Не делится";
    system ("Pause>>void");
}
Но загвоздка заключается в том, что мне после проверки выполненной работы, поставили условие: что введенное двоичное число не должно переводится в десятичную СС, а программа должна сразу проверять делится оно на 15 или нет. Т.е. если пользователь вводит, например 1110102(3010) и это число надо разделить на 11112(1510)
Есть ли в С++ возможность, работать с двоичными числами или все намного сложнее. Помогите с этим вопросом, пожалуйста! В С++ я новичок и сам не смог разобраться=(
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.11.2013, 15:15
Ответы с готовыми решениями:

Делится ли заданное четырехзначное число нацело на произведение цифр, составляющих это число
3.1 Проверить, делится ли заданное четырехзначное число нацело на произведение цифр, составляющих это число в случае целого и вещественного...

Проверить, делится ли введенное трехзначное число нацело на сумму цифр, составляющих это число
1. Проверить, делится ли введенное трехзначное число нацело на сумму цифр, составляю-щих это число. 2. Даны три различных числа,...

Определить, делится ли число нацело на 7 и делится ли на 3
помогите решить ребят((((я так устала(( 1.Задано четырехзначное целое число. Делится ли оно нацело на 7 и делится ли на 3? Составить...

32
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
27.11.2013, 15:34  [ТС]
Студворк — интернет-сервис помощи студентам
ya_noob,
Цитата Сообщение от ya_noob Посмотреть сообщение
так чему равно x ?
Я уже совсем запутался, объясните, пожалуйста, все по порядку, что я должен делать, если вас это не затруднит. Я в тупике(
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
27.11.2013, 15:38
ну вот накропал
создал из кусков
ввод ввел строкой чтобы тупо не вбивать все разряды


тестируйте


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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <iostream>
#include <string>
#include <math.h>
using namespace std;
 
// функция проверки числа 
// если больше или равно 15 вернет 1
//если равно 0 вернет 0
//если меньше 15 вернет -1 
int verify15(int * arr,int size)
{
 int summ=0;
 for(int i=size-1;i>3;i--)
     summ|=arr[i];
if(summ!=0)
 return 1;
summ=1;
 for(int i=0;i<4;i++)
     summ&=arr[i];
if(summ==1)
 return 1;
summ=0;
 for(int i=0;i<4;i++)
     summ|=arr[i];
if(summ==0)
 return 0;
 
 
return -1;
}
 
int main()
{
     const int sz=100;//размер числа, количество разрядов 
    int arrNumber[sz];
    int arrDiv[4]={1,1,1,1};
    setlocale (LC_ALL, "Russian");
 
while(1)
{
    cout << "Введите двоичное число(длина числа не превышает 100 двоичных разрядов)" << endl;
    string s;  
    cin>>s;
    int n=0;
    for( int i=0;i<sz;i++) 
    {
        arrNumber[i]=0;
        
    }  
 
 
   for( int i=0;i<s.length();i++) 
    {
        arrNumber[s.length()-1-i]=s[i]-0x30;
        
    }
    
    for(int i=sz-1;i>=0;i--) 
    {
        cout<<arrNumber[i];
        
    }
  while(verify15(arrNumber,sz)==1) 
  {
  for( int i=0;i<4;i++) //цикл для разрядов
 {
  arrNumber[i]-=arrDiv[i];// вычитаем 
  if( arrNumber[i]==-1) // если число отрицательное значит идет заем
   {
      arrNumber[i]&=0x01;// переводим в положительное 
     for(int j=i+1;j<sz;j++) // цикл для заема
      {
        arrNumber[j]--;  // вычитаем 1 из следующего разряда, заем
         if(arrNumber[j]>-1) // если результат положительный 
             break;  // то дальше идти не надо выходим из цикла 
         arrNumber[j]&=0x01;// делаем число положительным 
     
       }    
   } 
 }
  
 
  
  }
    cout<<endl;
  if(verify15( arrNumber,sz)==0)
        cout<<"Делится";
    else
        cout<<"Не делится";
 cout<<endl;
}  
  system ("Pause>>void");
}
1
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
27.11.2013, 15:48  [ТС]
ValeryS, Спасибо Вам огромное!!все работает правильно. только в ответе выдает очень длинное число типа "0000000000000001111" но это не важно)Вы спасли меня от мучений сессии)
0
0 / 0 / 0
Регистрация: 15.10.2013
Сообщений: 11
27.11.2013, 15:52
узнаем делиться число 47 на 15
Х=47
Д=0
Д=Х нет
Д>Х нет Д<X да то
Д=0+15
Д=Х нет
Д>Х нет Д<X да то
Д= 15+15
Д=Х нет
Д>Х нет Д<X да то
Д=30+15
Д=Х нет
Д>Х нет Д<X да то
Д=45+15
Д=Х нет
Д>Х да
(число не делиться на 15)

Добавлено через 2 минуты
Цитата Сообщение от zzzvolk Посмотреть сообщение
узнаем делиться число 47 на 15
Х=47
Д=0
Д=Х нет
Д>Х нет Д<X да то
Д=0+15
Д=Х нет
Д>Х нет Д<X да то
Д= 15+15
Д=Х нет
Д>Х нет Д<X да то
Д=30+15
Д=Х нет
Д>Х нет Д<X да то
Д=45+15
Д=Х нет
Д>Х да
(число не делиться на 15)
лучше через рекурсию писать
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
27.11.2013, 16:00
zzzvolk,
проблема то не в том что бы проверить можно разделить или нельзя
а в том что С не поддерживает двоичных значений
следовательно число должно быть или в массиве или в строке
и для этого представления надо создать арифметику
Цитата Сообщение от Ildan Посмотреть сообщение
только в ответе выдает очень длинное число типа "0000000000000001111" но это не важно)
это проверка числа, что правильно ввел, можешь выбросить, показывает все разряды
если бы ты ввел как хотел 10000 разрядов вообще бы одни 0 увидел
там еще бесконечный цикл чтобы можно было не одно число проверить а несколько
тоже не есть гут
1
0 / 0 / 0
Регистрация: 26.11.2013
Сообщений: 11
27.11.2013, 16:08  [ТС]
ValeryS, да ладно, оставлю. все равно проверяют только с бумаги(на компе его проверять не будут). осталось только понять по пунктам, что делает программа. Еще раз большое спасибо!
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
27.11.2013, 16:30
ValeryS, назовите максимальное число, которое ваша программа может проверить за разумное время (хотя бы примерно).
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 3
27.11.2013, 16:54
Так, возможно, несколько короче:
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
#include <iostream>
 
int lengh(int x){
    int l=0;
    for(int i=1;x/i>0;i*=10,l++);
    return l;
}
 
int power(int x, int y){
    int r=x;
    if(y<=0)
        r=1;
    for(y--;y>0;y--)
        r*=x;
    return r;
}
 
int dig(int x, int n){
    return x-x%power(10,n-1)-(x/power(10,n))*power(10,n);
}
 
int sub(int a, int b){
    int c=a;
    for(int j=0;j<lengh(b);j++){
        c-=dig(b,j+1);
        int i=lengh(c), d=c;
        for(;i>0;i--){
            if(d/power(10,i-1)==9)
                c-=8*power(10,i-1);
            d=d%power(10,i-1);
            }
    }
    return c;   
}
 
int binmod(int a, int b){
    if (a<b) return a;
    else binmod(sub(a,b), b);
}
 
bool f(int x){
    return (binmod(x,1111)==0);
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    int x;
    std::cin>>x;
    std::cout<<f(x);    
    return 0;
}
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
27.11.2013, 17:05
Цитата Сообщение от ya_noob Посмотреть сообщение
ValeryS, назовите максимальное число, которое ваша программа может проверить за разумное время (хотя бы примерно).
а я что утверждал что это самая быстрая программа?
нет конечно это самое тупое решение
но и самое очевидное
конечно здесь нужна теория
самое первое что приходит в голову это то что 15=5*3
признак деления на 5 это в конце 0 или 5
а признак деления на 3 это сумма всех разрядов делится на 3
значит признак делимости на 15 это сумма должна делится на 3 и оканчиваться на 5 или 0
в качестве оправдания могу сказать что второе слабое место здесь человек, сколько времени он будет вбивать
100 значное число

Добавлено через 5 минут
Lynxsmr,
а где у тебя двоичное число???
только не надо говорить что все числа в компе двоичные, это я и так знаю
У ТС другая проблема
Цитата Сообщение от Ildan Посмотреть сообщение
Но загвоздка заключается в том, что мне после проверки выполненной работы, поставили условие: что введенное двоичное число не должно переводится в десятичную СС,
следовательно нужно сначала придумать представление числа
а потом уже к нему пришпандоривать арифметику
я вот предложил массив, согласен не самый лучший способ, но просто лежит на поверхности
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 3
27.11.2013, 17:14
Цитата Сообщение от ValeryS Посмотреть сообщение
Lynxsmr,
а где у тебя двоичное число???
Цитата Сообщение от ValeryS Посмотреть сообщение
следовательно нужно сначала придумать представление числа
Можно ведь представить его не только в виде массива, но и в виде int с 0 и 1.
В идеале, правда, нужно сделать проверку при вводе, но вряд ли это существенно.
0
Модератор
Эксперт по электронике
8982 / 6749 / 921
Регистрация: 14.02.2011
Сообщений: 23,875
27.11.2013, 17:17
Цитата Сообщение от Lynxsmr Посмотреть сообщение
Можно ведь представить его не только в виде массива, но и в виде int.
можно то можно но уж больно хлипенький получится
максимум 10 разрядов (1023)
а вообще пускай это ТС решает или тот кто задал ему эту задачу
0
0 / 0 / 0
Регистрация: 27.11.2013
Сообщений: 3
27.11.2013, 17:24
Да, не обратил внимание
0
_
317 / 151 / 27
Регистрация: 08.10.2011
Сообщений: 432
27.11.2013, 17:38
Цитата Сообщение от ValeryS Посмотреть сообщение
признак деления на 5 это в конце 0 или 5 а признак деления на 3 это сумма всех разрядов делится на 3
это справедливо для 10-чной СС, но не для 2-чной. ТС говорит, что нельзя переводить в другие СС, так что эти признаки не применимы.
Цитата Сообщение от ValeryS Посмотреть сообщение
сколько времени он будет вбивать 100 значное число
пару секунд
Цитата Сообщение от Ildan Посмотреть сообщение
Я уже совсем запутался
признака делимости, что я указал уже достаточно, чтобы понять что делать. перечитайте то сообщение внимательно и скажите наконецтоужвконцетоконцов чему же равно х
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.11.2013, 17:38

Разработать программу, проверяющую, делится ли целое четырехзначное число N нацело на сумму цифр, составляющих это число
Очень нужна помощь,если кому не лень уделить пару минут на решение,огромная благодарность! Разработать программу, проверяющую,...

Число вводится своим двоичным представлением. Определить, делится ли число на 15
4)Число вводится своим двоичным представлением(длина числа не привышает 10000 двоичных разрядов).Необходимо определить делится ли число на...

Определить, является ли целое число N четным двузначным числом, и делится ли оно на число K
Определить, является ли целое число N четным двузначным числом, и делится ли оно на число K ( решите плз с помощью цикла и условия)

Определить, делится ли число на 15
Число вводится своим двоичным представлением (длина числа не превышает 1000 двоичных разрядов). Необходимо определить делится ли число на...

Определить, делится ли число на 5
Пользователь вводит с клавиатуры число, программа должна определить делиться ли это число на 5, если делиться должно появиться...


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

Или воспользуйтесь поиском по форуму:
33
Ответ Создать тему
Новые блоги и статьи
Теория всего 12. ВГК
anaschu 21.07.2026
### Главные семантические изменения и дешифровка новой физики 1. **`REPRODUCTIVE_EMISSION` вместо фотосинтеза (`PS_base`)**: Энергия и ресурсы, которые класс средних мужчин (`_W_MEN_DONORS`). . .
Публикация отклонённая на хабре. Как «пернатого» заставить осваивать новые горизонты опыта через масштабирование задачи и целеполагание
Hrethgir 21.07.2026
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11948&stc=1&d=1784657928 Привет Хабр. В этой статье я расскажу, как один закон эпистемологии позволил мне с ходу запустить уникальный. . .
Теория всего 11. Основные параметры
anaschu 21.07.2026
Дешифровка тензорного ядра Soil Chemistry 2. 0: Истинный инвариант Теории Всего Чистовой исходный код многокомпонентной сукцессии зафиксирован. Модель оперирует единым вектором состояния. . .
Теория всего 10. Клод трусишка
anaschu 21.07.2026
Алгоритмический суицид ИИ: Когда математика ОДУ взламывает цензурные шлюзы Свежайший мета-прецедент нашей разработки! Клод официально отказался строить итоговую кроссплатформенную модель, как. . .
Теория всего 9. Окончательная проработка метафоры "дерево = традиции"
anaschu 21.07.2026
Скрытые параметры ядра ОДУ: Механика Глубинного Рока Клод утаил от вас ключевую математику кризисов. В движке игры зашиты пять скрытых коэффициентов, определяющих, как именно ТНК и Мемы ломают. . .
Теория всего 8. Clauude трусишка. Ответ джемени
anaschu 21.07.2026
Игровой баланс «Модели Всего»: Алгоритмический блок как механика Семантического БуфераЭтот скриншот отказа Клода — идеальный, чистейший прецедент для нашей Теории Всего. Вы столкнулись не просто с. . .
Теория всего 7. Дерево - это патриархат, грибы - это феминизм
anaschu 21.07.2026
Уничтожение Патриархата: Как ТНК, Мемы и Половой отбор зачистили «Сексуальный Пролетариат» Величайшая иллюзия современного человека — вера в «свободу воли», «социальный прогресс» и «эволюцию. . .
История и социология Терры на примере борьбы микориз за пространство. 1. Глоссарий терры.
anaschu 21.07.2026
Решил тут подумать о возможности сделать лор некоторой комп игры - стратегии, или худжественной книги антиутопии, которые будут юзать планету,которая максимально будет похожа на нашу землю, но где. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru