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

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

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

Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" - C++

23.11.2013, 20:34. Просмотров 949. Ответов 6
Метки нет (Все метки)

Здравствуйте! Не могу решить задачу из книги.

Задача

Введите целые данные, содержащие только нули и единицы (т.е. «двоичные» целые), и напечатайте их десятичный эквивалент. (Подсказка. Используйте операции деление и вычисления остатка, чтобы «отрывать» разряды «двоичного» числа по одному справа налево. В десятичной системе самая правая цифра имеет позиционное значение 1, следующая цифра слева имеет позиционное значение 10, затем 100, затем 1000 и т.д.; в двоичной системе чисел самая правая цифра имеет позиционное значение 1, следующая цифра слева имеет позиционное значение 2, затем 4, затем 8 и т.д. Таким образом, десятичное число 234 может быть представлено как 4*1 + 3*10 + 2*100. Десятичным эквивалентом двоичного 1101 является 1*1 + 0*2 + 1*4 + 1*8 или 1 + 0 + 4 + 8 или 13.)


Я так понимаю, сначала нужно посчитать количество цифр в числе:

C++
1
2
3
4
5
6
7
8
cin >> chislo;
k = 0;
while (chislo >= 1)
{
     chislo /=  10;
     k++;
};
cout<<k;
Далее отделить каждую цифру и куда-то записать (куда?) Неужели для каждой цифры нужна отдельная переменная?

Я нашла еще одну формулу перевода из двоичной системы в десятичную: 1001110102=(1*2)^8+(0*2)^7+(0*2)^6+(1*2)^5+(1*2)^4+(1*2)^3+(0*2)^2+(1*2)^1+(0*2)^0=31410

Значит, степень первой цифры равна n-1, второй n-2, последней n-n.

Как все это реализовать? Я ума не приложу. Помогите пожалуйста!

Добавлено через 4 часа 8 минут
Люди, помогите кто-нибудь
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.11.2013, 20:34     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++"
Посмотрите здесь:

C++ Перевод числа из двоичной системы счисления в десятичную
C++ Перевод десятичной дроби из двоичной системы счисления в десятичную
Перевод числа из двоичной системы в десятичную C++
Рекурсивный перевод из двоичной системы счисления в десятичную C++
C++ Перевод числа из двоичной системы в десятичную или наоборот
Перевод вещественного числа из двоичной системы в десятичную c++ C++
C++ Перевод из двоичной системы счисления в десятичную
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Max Dark
В поиске работы
1607 / 1408 / 504
Регистрация: 09.10.2013
Сообщений: 3,194
Записей в блоге: 8
Завершенные тесты: 2
23.11.2013, 21:14     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
int main() {
    using std::cout;
    using std::cin;
    using std::endl;
 
    long int binary;
    long int result = 0;
 
    cout<<"Enter binary number";
    cin>>binary;
 
    while(binary != 0) {
        result <<=1;  // битовый сдвиг(умножение на 2)
        result | = ((binary%10) == 1 ? 1 : 0); //(битовое или)
        binary /= 10;
    }
    cout<<"dec number is"<<result<<endl;
    return 0;
}
IYIurasaki
3 / 3 / 0
Регистрация: 05.11.2013
Сообщений: 12
23.11.2013, 22:01  [ТС]     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #3
Цитата Сообщение от Cra3y Посмотреть сообщение
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
 
int main() {
    using std::cout;
    using std::cin;
    using std::endl;
 
    long int binary;
    long int result = 0;
 
    cout<<"Enter binary number";
    cin>>binary;
 
    while(binary != 0) {
        result <<=1;  // битовый сдвиг(умножение на 2)
        result | = ((binary%10) == 1 ? 1 : 0); //(битовое или)
        binary /= 10;
    }
    cout<<"dec number is"<<result<<endl;
    return 0;
}
Спасибо, но нужно стелать без

C++
1
2
3
 using std::cout;
    using std::cin;
    using std::endl;
, я еще не знаю, что это такое. И еще вопрс, что значит <<=1 и знак | ?
Ничего не понятно Если следовать формуле, то в степень можно возводить через
C++
1
for (int stepen = KolTsifr - 1; stepen >= 0; stepen--)
? И как возводить каждую цифру в цикле?
Извините, что загружаю
Alex5
1017 / 680 / 99
Регистрация: 12.04.2010
Сообщений: 1,713
23.11.2013, 22:13     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #4
Cra3y,
Цитата Сообщение от Cra3y Посмотреть сообщение
while(binary != 0) {
result <<=1; // битовый сдвиг(умножение на 2)
result | = ((binary%10) == 1 ? 1 : 0); //(битовое или)
binary /= 10;
}
Если binary == 100, то result == 1.
Если binary == 110, то result == 3.
Если binary == 1000, то result == 1.
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
23.11.2013, 22:16     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #5
Цитата Сообщение от IYIurasaki Посмотреть сообщение
Спасибо, но нужно стелать без
C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
Удали и напиши после строки #include <string> строку using namespace std;
Alex5
1017 / 680 / 99
Регистрация: 12.04.2010
Сообщений: 1,713
23.11.2013, 22:21     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #6
IYIurasaki, Перевод из двоичной системы в десятичную
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.11.2013, 16:21     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++"
Еще ссылки по теме:

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

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

Или воспользуйтесь поиском по форуму:
IYIurasaki
3 / 3 / 0
Регистрация: 05.11.2013
Сообщений: 12
24.11.2013, 16:21  [ТС]     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++" #7
Спасибо, но все равно это не то. Нужно сделать без строк, массивов и т.д. ((
Yandex
Объявления
24.11.2013, 16:21     Перевод из двоичной системы в десятичную, задача 2.30 "Как программировать на С++"
Ответ Создать тему
Опции темы

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