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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Неправильно вычисляется сумма http://www.cyberforum.ru/cpp-beginners/thread1698917.html
выводит в ответ 0,25 а должно быть 0,125 #include <iostream> using namespace std; double f(double x){ return x * x * x; }
C++ Найти все числа по условию Два двузначных числа, записанных подряд, образуют четырех-значное число, которое нацело делится на их произведение. Найти все такие числа. http://www.cyberforum.ru/cpp-beginners/thread1698911.html
C++ Передача массива в функцию
Как сделать функцию, в которую будет передавться массив. я что-то не оч понимаю. вот исходный код #include <iostream> #include <stdlib.h> using namespace std; int main() { int n; cout << "Enter size: "; cin >> n;
Вычислить результат формулы C++
Заданы натуральные числа m, n, вводятся действительные числа а_1, ..., a_nm. Вычислить: a_1a_2*...*a_m+a_m+1*a_m+2*...*а_2m+...+a_(n-1)(m+1)*a_(n-1)(m+2)*...*a_nm (_ индекс)
C++ Решение интеграла методом прямоугольников http://www.cyberforum.ru/cpp-beginners/thread1698892.html
Вот мой оптимальный вариант для решение интегралов методом прямоугольников #include <iostream> using namespace std; double f(double x){ return x * x * x; }
C++ Объясните запись условия в if if (Index&(1<<1)) Не могу понять, что этот IF делает? Index - некая переменная (по сути индекс)... подробнее

Показать сообщение отдельно
Olej
 Аватар для Olej
123 / 117 / 13
Регистрация: 25.03.2012
Сообщений: 456
30.03.2016, 17:50     Перевод из двоичной системы счисления в десятичную
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++ не нужна), если нужно - переведёте сами ... хотя и компилироваться и выполняться и так будет.
 
Текущее время: 08:39. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru