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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.01.2010, 15:19   #11
Kastet14
Пользователь
 
Регистрация: 14.01.2010
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Veselyn Посмотреть сообщение
Попробуйте так
Код:
#include <stdio.h>

int main() {
	int a, n, b=1, i=0, c;
	scanf("%d", &a);
	n=a;
	while (n!=0) {
		c=n%2;
		n=n/2;
if(c==1)     b=b*10+1;                       
else		b=b*10+0;
i++;
	}
	printf("\nbin = %d\n", b);
}
Попытаюсь объяснить на примере зачем нужен счетчик
Код:
// переворачиваем Б 
b/=10;             // отбрасываем последний разряд (он всегда равен 1)  и заносим его в Д      
           //еще можно предыдущий цикл         сдеать while (n!=1)  и тогда этот шаг можно будет пропустить
int d=1;      //перевернутая Б 
for(i--; i!=0; --i)      //идем по каждому разряду Б (пока они не закончатся)
  {
     d=d*10+b%10   //переписываем в конец Д последнюю цифру Б
     b/=10;           //удаляем последнюю цифру из Б
  }
PS. Поставьте задержку
Код:
#include <conio.h>

int main()
{
 //...
getch();
 return 0;
}
и включите библиотеку #include math.h
т.е. вот так выглядит код рабочей программы перевода из десятичной в двоичной систему


Код:
#include <stdio.h>
#include <limits.h>

int main() {
	int a, n, i=1, c;
	MAX_INT b=1, d=1;
//	int d=1;      //перевернутая Б 
	scanf("%d", &a);
	n=a;
	while (n!=0) {
		c=n%2;
		n=n/2;
		if(c==1) {
			b=b*10+1;
		}
		else {
			b=b*10+0;
		}
		i++;
	}
	printf("\nbin = %d\n", b);
	// переворачиваем Б 
	b/=10;             // отбрасываем последний разряд (он всегда равен 1)  и заносим его в Д      
	//еще можно предыдущий цикл         сдеать while (n!=1)  и тогда этот шаг можно будет пропустить

	for(i--; i!=0; --i)      //идем по каждому разряду Б (пока они не закончатся)
	{
		d=d*10+b%10;   //переписываем в конец Д последнюю цифру Б
		b/=10;           //удаляем последнюю цифру из Б
	}
	printf("\nbin1 = %d\n", d=d/10);
}
спасибо!
Kastet14 вне форума Ответить с цитированием
Старый 29.04.2016, 16:49   #12
Cherepanov6
Новичок
Джуниор
 
Регистрация: 29.04.2016
Сообщений: 1
По умолчанию

Можно без массивов и рекурсий, как-то так:

Код:
#include <stdio.h>

int a, // число от пользователя
		kol=1, //множитель (что бы 0 или 1 попали в нужный разряд) 
		ost; // остаток
	long int b = 0; // итоговое число (в "двоичной" системе)
	puts("binary number\ninput number");
	scanf("%d", &a); // принимаем число
		
	while(1)
	{
		if(a<2) //последний шаг 
		{
			b+=a*kol;
			break;
		}
		else
		{
			b+=(ost=a%2)*kol; //если в остатке 1, то отправляем его в нужный разряд 
			a=(a-ost)/2; //делим число на 2 
		}
		kol*=10; //увеличиваем счетчик разрядов
	}	
	
	printf("%ld", b);
	
	return 0;
(только число по факту все равно десятичное, только состоит из 0 и 1 )
Cherepanov6 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать двоичного представления числа в формате слова. Lina__N Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 06.06.2009 12:06
Преобразование десятичного числа в двоичное. Quize Паскаль, Turbo Pascal, PascalABC.NET 4 12.04.2008 16:09
C++. Перевод десятичного числа в двоичное Panterka Помощь студентам 15 12.12.2007 15:04
информатика-дополнительный код десятичного числа Artem1987 Помощь студентам 3 18.11.2007 14:32