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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
DMGR-
0 / 0 / 0
Регистрация: 07.10.2012
Сообщений: 101
#1

Двоичное число перевести в десятичное - C++

19.04.2014, 20:33. Просмотров 1906. Ответов 13
Метки нет (Все метки)

Введите целое число в двоичной системе счисления и выведите его десятичный эквивалент.

Указание. Примените операции деления (/) и взятия по модулю (%) для отделения справа налево одного за другим «двоичного» числа.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.04.2014, 20:33
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Двоичное число перевести в десятичное (C++):

Перевести двоичное число в десятичное - C++
у меня есть например ASCII код в двоичной системе какого то символа. как вывести это двоичное число чтоб на экране вывелась буква...

Требуется двоично-десятичное число перевести в десятичное - C++
Помогите пожалуйста реализовать

Преобразовать введенное с клавиатуры двоичное восьмиразрядное число в десятичное - C++
Преобразовать введенное с клавиатуры восьмиразрядное двоичное число в десятичное. Буду благодарен если сделаете правильно. Если не...

Требуется написать прогу которая преобразуют двоичное число в десятичное - C++
Вообщем я пишу контрольную помогите плиз кто знает с использованием цикла for))) Добавлено через 16 секунд Язык С++

Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное - C++
Задание: Написать программу, которая преобразует введенное с клавиатуры восьмиразрядное двоичное число в десятичное. Написать на языке...

Перевести десятичное число в unicode - C++
Есть программа, вводим десятичное число до 10 000 и отображает символ. Однако, когда ввожу, например 800 - пусто, 801 тоже ничего. С 880...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
19.04.2014, 21:54 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include  <iostream>
#include <cmath>
using namespace std;
int main()
{
    int a,s=0;
    cin >> a;
for(int i=0; a; i++)
    {
        s+=int(a%10*pow(2.0,i));
        a/=10;
    }
    cout << s;
    system ("pause");
return 0;
}
1
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
19.04.2014, 22:08 #3
LVV, А чем результат s отличается от исходного a?
0
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
20.04.2014, 07:12 #4
Цитата Сообщение от zss Посмотреть сообщение
А чем результат s отличается от исходного a?
Пользователь при вводе, например, двоичного 1111 получает на выходе десятиричное 15.
(а каков алгоритм этого получения, и какого типа переменные использовал автор решения - не важно)

Хотя, согласно условию, должно вводиться целое число, и для его преобразования должны использоваться операции / и %. Что и соблюдено.
1
IrineK
20.04.2014, 07:24
  #5

Не по теме:

Условие какое-то несуразное.
Ввод строкой был-бы естественней.

0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
20.04.2014, 09:12 #6
Цитата Сообщение от LVV Посмотреть сообщение
Пользователь при вводе, например, двоичного 1111
У Вас int a;cin>>a;
соответственно оно водится как десятичное 1111=1*10^3+1*10^2+1*10+1
0
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
21.04.2014, 12:28 #7
Цитата Сообщение от zss Посмотреть сообщение
У Вас int a;cin>>a;
соответственно оно водится как десятичное 1111=1*10^3+1*10^2+1*10+1
А Вы можете предложить способ ввода изначально двоичных чисел? Ну, таких, например, чтобы 11+10=101...
Для этого ведь нужно предварительно(предкомпилированно) задать собственный, отличный от стандартных (числовых-десятеричных, и строчных) тип переменных, прописать все арифметические действия для него... Новый заголовочный файл создавать вместо <iostream> какой нибудь <bitiostream> ???

По большому счету пользователь вводит лишь символы. А дальше уже дело обрабатывающей программы, как их воспринимать.
В данном случае просто происходит преобразование какого-то набора символов, который пользователь трактует как двоичное число, в стандартный, целочисленный-дестятеричный тип данных. И это, кажется, даже проще, чем использовать при вводе строковый/символьный тип данных.
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
21.04.2014, 13:12 #8
при вводе с потока по умолчанию числа трактуются как десятичные.
Есть манипуляторы для изменения типа dec, hex,oct.
Для двоичных данных манипулятора нет.
1
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
21.04.2014, 13:43 #9
Цитата Сообщение от zss Посмотреть сообщение
при вводе с потока по умолчанию числа трактуются как десятичные.
Есть манипуляторы для изменения типа dec, hex,oct.
Для двоичных данных манипулятора нет.
И я о том же. Остаётся вводить либо недвоичное число (ранее представленное решение), либо строку (символы). По условию, требуется вводить число, значит первое решение (выше) более корректное.
Других способов кроме трёх представленных я не знаю. А Вы
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <cmath>
using namespace std;
int main()
{
string s;
cin >> s;
int bit=0;
for(int i=s.length()-1; i>=0; i--)
    bit+=(s[i]-'0')*pow(2.0,double(s.length()-i-1));
    cout << bit << endl;
system ("pause");
 return 0;
}
или так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
char s[100];
cin >> s;
int len;
for(len=0; s[len]!='\0'; len++);
 
int bit=0;
for(int i=len-1; i>=0; i--)
    bit+=(s[i]-48)*pow(2.0,double(len-i-1));
    cout << bit << endl;
system ("pause");
 return 0;
}
0
zss
Модератор
Эксперт С++
6382 / 5947 / 1927
Регистрация: 18.12.2011
Сообщений: 15,264
Завершенные тесты: 1
21.04.2014, 13:47 #10
Уж лучше тогда строку, поскольку Вы введенное число интерпретируете как последовательность
независимых битов, а не как двоичное число.
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
21.04.2014, 13:51 #11
Цитата Сообщение от LVV Посмотреть сообщение
string s;
Цитата Сообщение от LVV Посмотреть сообщение
char s[100];
А если заполнять битовое множество?
0
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
21.04.2014, 14:02 #12
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А если заполнять битовое множество?
Предложите вариант. Было бы интересно взглянуть.
0
SatanaXIII
Супер-модератор
Эксперт С++
5616 / 2651 / 246
Регистрация: 01.11.2011
Сообщений: 6,529
Завершенные тесты: 1
21.04.2014, 14:10 #13
LVV, не. Что-то мне лениво огород городить.
0
LVV
57 / 57 / 4
Регистрация: 15.02.2010
Сообщений: 249
21.04.2014, 15:27 #14
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
#include <cmath>
#include <bitset>
using namespace std;
int main()
{
bitset<100> b;
b.reset(0);
cin >> b;
 
int len;
for(len=99; b[len]!=1; len--);
 
int s=0;
for(int i=0; i<=len; i++)
   s+=int(b[i])*pow(2.0,double(i));
cout << s;  
system ("pause");
return 0;
}
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
21.04.2014, 15:27
Привет! Вот еще темы с ответами:

Как перевести десятичное число в двоичную - C++
Зравствуйте, значит проблема у меня такая 1.Есть у меня число представленная в десятичной системе Допустим 35, мне его нужно перевести...

Перевести восьмеричное число в двоичное - C++
имееться задача перевести восьмеричное число в двоичное с использованиям структуры с битовыми полями. Как? До этой задачи я даже незнал...

Перевести длинное двоичное число в 10 систему - C++
Имеется длинное двоичное число, хранящееся в char. Необходимо перевести его в десятичную систему счисления. Как это можно сделать? ...

Перевести заданное десятичное число в 2-ю, 8-ю, 16-ю, двоично-десятичную системы и обратно - C++
Перевести заданное десятичное число в 2-ю, 8-ю, 16-ю, двоично-десятичную системы и обратно. число 432


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
21.04.2014, 15:27
Ответ Создать тему
Опции темы

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