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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.04.2013, 14:32   #1
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию Двоичная система счисления!!!!!!!

Как написать прогу которая переводит с десятичной системы счисления в двоичную. писать прогу не надо только на словах.

Код:
#include<iostream>
using namespace std;
void main(){
int a;
cin>>a;
while(a){
	if(a/2<=1){
	a/=2;
	cout<<a;	
}
	else
a/=2;
}
cout<<'\n';
}

Последний раз редактировалось Stilet; 15.04.2013 в 14:45.
mixon-21 вне форума Ответить с цитированием
Старый 15.04.2013, 14:47   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Примерно так, используя битовые сдвиги:
Код:
char s[32]={0};
int n=123;
for(int i=31;i>=0;i--){s[i]=(n&1)?'1':'0'; n=n>>1;}
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.04.2013, 14:48   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Используйте оператор нахождения остатка от деления %. Отдельная проблема, что при этом Вы будете выводить двоичные цифры от младшего разряда до старшего - это решается или записью цифр в массив, или рекурсивным алгоритмом (когда найденная раньше цифра будет выводиться позже).

Альтернативно, можете использовать оператор побитового И & совместно с оператором побитового сдвига влево <<. Это позволит поочерёдно проверить на равенство 1 все биты числа.
Abstraction вне форума Ответить с цитированием
Старый 15.04.2013, 14:53   #4
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Знаете суть, как переводятся числа из 10-ичной системы в 2-ичную? Щас раскажу
Берем число десятичное, делим столбиком на 2. В итоге, в остатке может оказаться 0 либо 1. Результат деления (или частное) снова делим на 2, остаток опять может быть 0 или 1. И так до тех пор, пока результат не станет равным 1 (если делить дальше на 2, то будут одни нули, так что когда результат равен 1, то это уже конец перевода)
Ghost3 вне форума Ответить с цитированием
Старый 15.04.2013, 14:53   #5
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Спасибо а какие еще есть идеи??????????

Цитата:
Сообщение от Ghost3 Посмотреть сообщение
Знаете суть, как переводятся числа из 10-ичной системы в 2-ичную? Щас раскажу
Берем число десятичное, делим столбиком на 2. В итоге, в остатке может оказаться 0 либо 1. Результат деления (или частное) снова делим на 2, остаток опять может быть 0 или 1. И так до тех пор, пока результат не станет равным 1 (если делить дальше на 2, то будут одни нули, так что когда результат равен 1, то это уже конец перевода)
Это я знаю а как создать прогу не могу въехать до конца. Надо создать цыкл который будет делить число на 2 и выводить остаток на экран.

Последний раз редактировалось Stilet; 18.04.2013 в 08:07.
mixon-21 вне форума Ответить с цитированием
Старый 15.04.2013, 15:00   #6
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Ну вот что-то вроде этого, но эта программа не работает как надо:
Код:
#include <iostream>
#include <string>

using namespace std;

int main()
{
	int a,b,i=1,s=0;
	cin >> a;
	if (a==1) s=1;
	else
	while (a!=1)
	{
		i=i*10;
		b=a%2;
		s=s+(b*i);
		a=a/2;
	}
	cout << s;

	cin >> a; // это строка не имеет смысла, написал для того, чтобы результат можно было увидеть ;) 

return 0;
}

Последний раз редактировалось Ghost3; 15.04.2013 в 15:02.
Ghost3 вне форума Ответить с цитированием
Старый 15.04.2013, 15:13   #7
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
Спасибо а какие еще есть идеи??????????
Вам этих не хватает?
Abstraction вне форума Ответить с цитированием
Старый 15.04.2013, 15:17   #8
Ghost3
Ученик в c++
Форумчанин
 
Аватар для Ghost3
 
Регистрация: 28.02.2011
Сообщений: 162
По умолчанию

Вот! Работает! :DD

Код:
#include <iostream>
#include <string>

using namespace std;

int main()
{
	int a,j,i=1,s[255];
	cin >> a;
	if (a==1)
	{
		cout << '1';
		return 0;
	}
        if (a==0)
	{
		cout << '0';
		return 0;
	}
	else
	{
		while (a!=1)
		{
			if (a%2==0) s[i]=0;
			else s[i]=1;
			a=a/2;
			i++;
		}
	}

	s[i]=1;
	for (j=i;j>=1;j--) cout << s[j];

	cin >> a; //опять повторюсь, это строка нужна только что бы увидеть результат в консоли, лучше ее удалить

return 0;
}
Задачка не очень сложная.
Суть программы: Берем число a, если оно равно 1 - выводим 1, если равно 0 - то выводим 0. Иначе, записываем в массив остатки от деления на 2, само число а делим тоже на 2. После всей операции, добавляем еще одну "единичку". В массиве ответ получается перевернутым, так что выводим наоборот.

Последний раз редактировалось Ghost3; 15.04.2013 в 15:22.
Ghost3 вне форума Ответить с цитированием
Старый 15.04.2013, 15:32   #9
mixon-21
Я только Учусь
Форумчанин
 
Аватар для mixon-21
 
Регистрация: 06.03.2013
Сообщений: 193
По умолчанию

Цитата:
Сообщение от Abstraction Посмотреть сообщение
Вам этих не хватает?
спасибо уже достаточно

УРА РЕШИЛ!!!!!!!!!!!!!!!!!!
Код:

#include <iostream>
#include <cstring>
using namespace std;
 
char Func(unsigned int n, unsigned short s, char buffer[33]);
 
int main ()
{
    setlocale(LC_ALL,"Rus");
    int n,s;
    char buffer[33];
cout << "Система счисления(2 - 36) \n "; 
cin >> s;
cout << "Введите число  "; 
cin >> n;
Func(n,s,buffer);
cout << "Число " << n << " в " << s << " -ой системе счисления -- " ;
puts(buffer);
system("pause");
return 0;
}
char Func(unsigned int n, unsigned short s, char buffer[33])
{
    if(s >= 2 && s <= 36) {
 itoa(n,buffer,s);
return buffer[33];
    }
    strcpy(buffer,"Ошибка ввода");
    return buffer[33];

}

Последний раз редактировалось Stilet; 18.04.2013 в 08:08.
mixon-21 вне форума Ответить с цитированием
Старый 15.04.2013, 19:47   #10
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Похвально, что написали сами, но преподавателя вполне может не устроить такое решение, так как используется стандартная функция преобразования, то есть Вы не научились переводить числа сами.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
двоичная система VinDiz Помощь студентам 0 01.03.2012 15:06
Двоичная система счисления.С++ Демик Помощь студентам 6 18.05.2011 16:15
не двоичная система счисления МмлашкО_о Помощь студентам 2 11.01.2011 20:39
двоичная система счисления galaid Паскаль, Turbo Pascal, PascalABC.NET 3 17.05.2009 15:42