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

Программа которая переводит из 2ой системы в 10ую - C++

Восстановить пароль Регистрация
 
MasterYo
 Аватар для MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
18.07.2013, 13:42     Программа которая переводит из 2ой системы в 10ую #1
Создать программу которая переводит из двоичной системы в десятичную.

P.S вообще то я знаю как переводить 2ую в 10ую, ну например - если 10100111 = 1*2^0+1*2^1+1*2^2+0*2^3+0*2^4+1*2^5+0*2^6+1*2^7= 1+2+4+32+128= 167.

Но как это всё реализовать в коде?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 13:42     Программа которая переводит из 2ой системы в 10ую
Посмотрите здесь:

Программа, которая переводит числа в слова C++
C++ Написать программу, которая переводит число из 4-й системы счисления в 14-ю через 10-ю
Из 2ой в 10ую C++
C++ Написать программу, которая переводит число из 13-й системы счисления в 3-ю через 10-ю
C++ Составить рекурсивной функции, которая переводит числа из десятичной системы счисления в шестнадцатилетнюю
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Schizorb
 Аватар для Schizorb
508 / 460 / 16
Регистрация: 07.04.2012
Сообщений: 865
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 13:58     Программа которая переводит из 2ой системы в 10ую #2
MasterYo, ну так в цикле "отковыриваете" от двоичного числа по цифре (с помощью операций деления и вычисления остатка), умножаете на нужную степень двойки, и суммируете. Все же написали сами.
EnRJ
1 / 1 / 0
Регистрация: 17.07.2013
Сообщений: 9
18.07.2013, 14:38     Программа которая переводит из 2ой системы в 10ую #3
Так подойдет?
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
26
27
28
#include <iostream>
#include <math.h>
using namespace std;
 
void main()
{
    int *bin_num, dec_num = 0;
    char buf[512];
    cout << "Bin number ->";
    gets(buf);
    bin_num = new int [strlen(buf)];
    int k = strlen(buf)-1;
    for(int i=0;i<strlen(buf);i++)
    {
        if(buf[i] == 48)
            bin_num[i] = 0;
        if(buf[i] == 49)
            bin_num[i] = 1;
    }
    for(int i=0;i<=k;i++)
    {
        dec_num += bin_num[i] * pow(2.0, k-i);
    }
    cout << endl;
    cout << "Dec ->" << dec_num << endl;
    cout << endl;
    system ("pause");
}
Добавлено через 2 минуты
+ еще можно добавить, если введено было не двоичное число программа выдавала ошибку..
Thinker
Эксперт C++
 Аватар для Thinker
4215 / 2189 / 150
Регистрация: 26.08.2011
Сообщений: 3,802
Записей в блоге: 5
18.07.2013, 14:44     Программа которая переводит из 2ой системы в 10ую #4
задача на 2 строчки кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<iostream>
int To10(char *s)
{
    int rez = 0;
    for(; *s; rez = (rez << 1) + (*s++ - '0'))
        ;
    return rez;
}
int main()
{
   std::cout << To10("1110") << std::endl;
   return 0;
}
Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 14:56     Программа которая переводит из 2ой системы в 10ую #5
clang (начиная с 3.2) уже частично С++14 поддерживает и можно делать так
C++
1
2
3
4
5
6
7
#include <iostream>
 
int main()
{
    int n = 0b110110110;
    std::cout << n << std::endl;
}
ключ компиляции -std=c++1y
diagon
Higher
 Аватар для diagon
1920 / 1186 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
18.07.2013, 16:07     Программа которая переводит из 2ой системы в 10ую #6
Цитата Сообщение от Kastaneda Посмотреть сообщение
clang (начиная с 3.2) уже частично С++14 поддерживает и можно делать так
gcc умеет это в виде расширения c незапамятных времен (сейчас он тоже просит -std=c++1y)
Через текущий стандарт можно так сделать
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
constexpr size_t to_bin(const char* str, size_t i) //i is last index of string
{
    return i == 0 ? str[i] - '0' : str[i] - '0' + to_bin(str, i - 1) * 2;  
}
 
constexpr size_t operator "" _bin(const char* str, size_t len)
{
    return to_bin(str, len - 1);
}
 
int main()
{
    std::cout << "101"_bin << std::endl;
}
Результат: http://ideone.com/KHzR4E

Не по теме:

Когда уже lws починят :(

Kastaneda
Модератор
Эксперт С++
 Аватар для Kastaneda
4236 / 2769 / 218
Регистрация: 12.12.2009
Сообщений: 7,104
Записей в блоге: 1
Завершенные тесты: 1
18.07.2013, 19:52     Программа которая переводит из 2ой системы в 10ую #7
Цитата Сообщение от diagon Посмотреть сообщение
Через текущий стандарт можно так сделать
C++
1
size_t operator "" _bin(const char* str, size_t len)
Блин, как я от жизни то отстал. Наткнулся на нечто похожее на SO, думал это С++14. А скажи, в какую сторону гуглить, чтоб про такую форму оператора почитать?

Добавлено через 1 час 5 минут
Цитата Сообщение от Kastaneda Посмотреть сообщение
в какую сторону гуглить
Нашел, сие называется User-defined literals.

Оно еще и шаблоном может быть, и даже может иметь специализацию.

Не по теме:

Блин, как я раньше об этом не слышал.

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.07.2013, 13:05     Программа которая переводит из 2ой системы в 10ую
Еще ссылки по теме:

Не компилится программа, которая переводит градусы Цельсия по Фарангейту и наоборот C++
Написать программу, которая переводит числа с шестнадцатеричной системы в десятичную C++
Написать программу, которая переводит десятичное число из двоичной системы в восьмеричную C++

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

Или воспользуйтесь поиском по форуму:
MasterYo
 Аватар для MasterYo
1 / 1 / 0
Регистрация: 07.07.2013
Сообщений: 39
19.07.2013, 13:05  [ТС]     Программа которая переводит из 2ой системы в 10ую #8
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
26
27
28
#include <iostream>
#include <conio.h>
using namespace std;
 
int dvavstep(int n)
{
    int value=1;
    for (int i=0;i<n;i++)
     value*=2;
     return value;
}
 
void dectobin(int binnum)
{
     for(int i=7;i>=0;i--)
     {
             int p=binnum/dvavstep(i);
             cout<<p;
             binnum-=p*dvavstep(i);
             }     
           cout<<endl;
}
int main()
{
    dectobin(124);
    dectobin(167);
    getch();
}
Yandex
Объявления
19.07.2013, 13:05     Программа которая переводит из 2ой системы в 10ую
Ответ Создать тему
Опции темы

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