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

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

Войти
Регистрация
Восстановить пароль
 
Andrei161
0 / 0 / 0
Регистрация: 30.03.2016
Сообщений: 1
#1

Перевод из двоичной системы счисления в десятичную - C++

30.03.2016, 17:08. Просмотров 315. Ответов 6
Метки нет (Все метки)

Помогите пожалуйста перевести число из 2-ой сс в 10 сс.
Буду очень благодарен
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.03.2016, 17:08     Перевод из двоичной системы счисления в десятичную
Посмотрите здесь:
C++ Перевод из двоичной системы счисления в десятичную
C++ Перевод из двоичной системы счисления в десятичную
Перевод из двоичной системы счисления в десятичную C++
C++ Перевод числа из двоичной системы счисления в десятичную
Рекурсивный перевод из двоичной системы счисления в десятичную C++
C++ Перевод из двоичной системы счисления в десятичную с плавающей запятой
C++ Перевод десятичной дроби из двоичной системы счисления в десятичную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Olej
123 / 117 / 13
Регистрация: 25.03.2012
Сообщений: 456
30.03.2016, 17:50     Перевод из двоичной системы счисления в десятичную #2
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
// [2] => [10]: от младшего к старшему
int main() {
   char buf[ 80 ];
   while( 1 ) {
      printf( "введите двоичное представление числа: ");
      if( !fgets( buf, sizeof( buf ) - 1, stdin ) ) break;
      if( index( buf, '\n' ) != NULL )
         *index( buf, '\n' ) = '\0';
      int j;
      for( j = 0; j < strlen( buf ); j++ )
         if( buf[ j ] != '0' && buf[ j ] != '1' ) {
            printf( "ошибочный ввод\n" );
            break;
         }
      if( j != strlen( buf ) ) continue;
      unsigned long inp = 0, mask = 1;
      for( j = strlen( buf ) - 1; j >= 0; j-- ) {
         if( '1' == buf[ j ] ) inp += mask;
         mask <<= 1;
      }
      printf( "число: %s => %lu : %lo : %lX\n",
              buf, inp, inp, inp );
   }
   return 0;
}
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
// [2] => [10]: от старшего к младшему (схема Горнера)
int main() {
   char buf[ 80 ];
   while( 1 ) {
      printf( "введите двоичное представление числа: ");
      if( !fgets( buf, sizeof( buf ) - 1, stdin ) ) break;
      if( index( buf, '\n' ) != NULL )
         *index( buf, '\n' ) = '\0';
      int j;
      for( j = 0; j < strlen( buf ); j++ )
         if( buf[ j ] != '0' && buf[ j ] != '1' ) {
            printf( "ошибочный ввод\n" );
            break;
         }
      if( j != strlen( buf ) ) continue;
      unsigned long inp = 0;
      for( j = 0; j < strlen( buf ); j++, inp <<= 1 ) {
         inp += '1' == buf[ j ]? 1 : 0; // схема Горнера
      }
      inp >>= 1;
      printf( "число: %s => %lu : %lo : %lX\n",
              buf, inp, inp, inp );
   }
   return 0;
}
Код - чистый C (потому что там специфика C++ не нужна), если нужно - переведёте сами ... хотя и компилироваться и выполняться и так будет.
MansMI
1136 / 933 / 240
Регистрация: 08.01.2012
Сообщений: 3,389
30.03.2016, 17:57     Перевод из двоичной системы счисления в десятичную #3
как-то так, не тестил
C++
1
2
3
4
5
6
7
8
9
10
11
char bin[100];
cout<<"Bin:";
cin>>bin;
long long n=0;
for(char *p=bin; *p; p++)
if(*p=='0' || *p=='1')
{
    n<<=1;
    if(*p=='1') n++;
}
cout<<n;
zss
Модератор
Эксперт С++
6284 / 5887 / 1908
Регистрация: 18.12.2011
Сообщений: 15,113
Завершенные тесты: 1
30.03.2016, 18:01     Перевод из двоичной системы счисления в десятичную #4
MansMI, Вы перевели из двоичного строкового представления в двоичное бинарное представление и вместо if(*p=='1') n++; проще написать n+= *p-'0';
MansMI
1136 / 933 / 240
Регистрация: 08.01.2012
Сообщений: 3,389
30.03.2016, 18:09     Перевод из двоичной системы счисления в десятичную #5
тогда какие данные на входе?
Olej
123 / 117 / 13
Регистрация: 25.03.2012
Сообщений: 456
30.03.2016, 18:54     Перевод из двоичной системы счисления в десятичную #6
Цитата Сообщение от MansMI Посмотреть сообщение
тогда какие данные на входе?
Ну, на входе задачи, как её сформулировали, должна быть символьная строка, что-то типа:
"100100111000111100010101011000001110111110001111110011001100110011100"

Как-то так
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.03.2016, 19:05     Перевод из двоичной системы счисления в десятичную
Еще ссылки по теме:
Перевод вещественных чисел из двоичной системы счисления в десятичную C++
Перевод целого (дробного) числа из двоичной системы счисления в десятичную C++
C++ Написать рекурсивный алгоритм перевода из двоичной системы счисления в десятичную ( из восьмеричной и шестнадцатеричной в десятичную)
C++ Перевести из двоичной системы счисления в десятичную
перевод чисел из двоичной в десятичную систему счисления C++

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

Или воспользуйтесь поиском по форуму:
MansMI
1136 / 933 / 240
Регистрация: 08.01.2012
Сообщений: 3,389
30.03.2016, 19:05     Перевод из двоичной системы счисления в десятичную #7
сейчас у меня на 64 0/1, если мало, что должен продемонстрировать ТС: bigint или такую же немереную строку в десятичном виде?
Yandex
Объявления
30.03.2016, 19:05     Перевод из двоичной системы счисления в десятичную
Ответ Создать тему
Опции темы

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