Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.03.2016, 23:36   #1
Adam77
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 46
По умолчанию Определить, является ли заданный текст двоичной записью числа, кратного 6 - C++

Вот моя программа,она вроде работает верно,но есть цисла ,для которых она считает не верно или вообще не считает,помогите пожалуйста,спасибо за внимание
C++Выделить код

Код:
#include<iostream>
#include<string.h>
#include<stdlib.h>
#include<math.h>
using namespace std;
char s[255];
int a[255];
int l,i,z,n,c,d,j,m;
bool f;
main()
{
    setlocale(LC_ALL,"Russian");
    cout<<"Введите текст, в конце поставьте точку и нажмите Enter:"<<endl<<endl;
    gets(s);
    l=strlen(s);
    f=true;
    for(i=0;i<l;i++)
    {
        if (isalpha(s[i]))
        {
            cout<<"\nТекст не является записью двоичного числа числа.";
            f=false;
            break;
        }
    }
    if (f)
    {   
        n=atoi(s);
        d=0;
        j=10;
        i=0;
        m=1;
        while (n > m)
            {
            a[i]=n%j/m;
            m=m*10;
            j=j*10;
            d++;
            i++;
            }
        c=0;
        f=true;
        for(i=0;i<d;i++)
            {
                if ((a[i]==0)||(a[i]==1))
                {
                c=c+a[i]*pow(2,i+1);
                }
                else
                {
                cout<<"\nТекст не является записью двоичного числа числа.";
                f=false;
                break;  
                }
            }
        if ((c%6==0)&&(c>=6)&&(f==true))cout<<"\nЧисло кратно.";
        else if((c%6!=0)&&(f==true)) cout<<"\nЧисло не кратно.";
    }
}

Последний раз редактировалось Аватар; 14.03.2016 в 23:43.
Adam77 вне форума Ответить с цитированием
Старый 14.03.2016, 23:56   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Двоичное число делится на 2, если младший разряд 0
Двоичное число делится на 3, если знакопеременная сумма цифр числа делится на 3
Если выполняет первое и второе, то число делится на 6

Так же интереснее?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 15.03.2016, 01:16   #3
Adam77
Пользователь
 
Регистрация: 12.03.2016
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Двоичное число делится на 2, если младший разряд 0
Двоичное число делится на 3, если знакопеременная сумма цифр числа делится на 3
Если выполняет первое и второе, то число делится на 6

Так же интереснее?
а можно ввиде кода,а то я не совсем понял?
Adam77 вне форума Ответить с цитированием
Старый 15.03.2016, 01:27   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Чего решил, что в виде кода понятней?

126(10) = 1111110(2)

1111110
ноль в младшем разряде -> делится на 2
1-1+1-1+1-1+0 = 0 - делится на 3 -> и исходное число делится на 3
-> число делится на 6

И это практически для любой длины двоичного числа. И можно сделать без операций деления и умножения
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 15.03.2016 в 01:29.
Аватар вне форума Ответить с цитированием
Старый 15.03.2016, 09:22   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

На этот раз в 39 строк уложился.

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 15.03.2016 в 09:26.
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Паскаль: является ли введенная с клавиатуры последовательность символов записью двоичного или шестнадцатеричного числа Студент ММИ Помощь студентам 12 14.11.2014 14:22
Ввести строку, содержащую цифры. Определить является ли она записью шестнадцатеричного числа. Roman1295 Паскаль, Turbo Pascal, PascalABC.NET 10 24.12.2012 22:52
переход на заданный сайт или как вставить в заданное место заданный текст Biker89 Общие вопросы Delphi 23 29.05.2011 01:59
Является ли заданная строка правильной записью вещественного числа с возможным знаком и десятичной точкой Banny Паскаль, Turbo Pascal, PascalABC.NET 7 18.12.2008 22:28
Определить, является ли заданная строка правильной записью вещественного числа Sergik1977 Паскаль, Turbo Pascal, PascalABC.NET 2 18.10.2007 16:53