Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.07.2012, 17:26   #1
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию Преобразование двоичного числа в десятичное

Хотелось бы услышать мнения про этот код, а также конструктивную критику, предложения, но использовать можно только: деление и остаток от деления, спасибо.
Код:
#include <iostream>
using std::cout;
using std::cin;
using std::endl;

#include <math.h>

void main()
{
	int a;
	int b;
	int c;
	int i;

	cout << "Vvedite dvoichnoe chislo: ";
	cin >> a;

	b = 0;
	for( i = 0; ; i++ )
	{
		c = pow( 10, i );

		if( a / c == 0 )
			break;

		b += ( a / c ) % 10 * pow( 2, i );
	}
	cout << b << endl;
}
Dmitry_Web вне форума Ответить с цитированием
Старый 10.07.2012, 17:53   #2
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Раз:
Код:
    string s;
    cin >> s;
    unsigned a = 0;
    for(int i = s.size()-1; i>=0; i--){
        if(s[i]=='1') a |= 1 << (s.size()-i-1);
    }
    cout << a << "\n";
Два:
Код:
    unsigned a, b = 0, i = 0;
    cin >> a;
    while(a){
        b += ((a%10) << i);
        a /= 10; i++;
    }
    cout << b << "\n";
Kostia вне форума Ответить с цитированием
Старый 10.07.2012, 17:57   #3
Dmitry_Web
Пользователь
 
Аватар для Dmitry_Web
 
Регистрация: 01.11.2011
Сообщений: 43
По умолчанию

Спасибо конечно, но забыл уточнить, что строками то же нельзя пользовоться.
Dmitry_Web вне форума Ответить с цитированием
Старый 10.07.2012, 18:07   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Ну тогда только "Два" =)

1)
pow( 2, i ) = 2*2*2* ... *2 = 1 << i
a << 1 = a*2
a << 2 = a*2*2 = a*4

2)
c = pow( 10, i );
лишнее, лучше уменьшать само число "a"
a /= 10;

Последний раз редактировалось Kostia; 10.07.2012 в 18:09.
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод двоичного числа в десятичное Wrack Помощь студентам 0 09.05.2012 23:15
Перевести из 16-го числа в дробное десятичное Skail Общие вопросы Delphi 3 29.04.2012 09:31
Рекурсия (разряд двоичного предстовления числа N) Kloun Помощь студентам 6 23.04.2011 15:02
Смена знака у двоичного числа Volchara Общие вопросы C/C++ 7 15.04.2009 16:55
Алгоритм перевода двоичного числа в десятичное и обратно strab Общие вопросы Delphi 5 17.06.2008 21:33