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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2020, 16:01   #21
justmuve
 
Регистрация: 16.12.2014
Сообщений: 4
По умолчанию

у меня вот так получилось, вроде как работает
Код:
#define _CRT_SECURE_NO_DEPRECATE


#include <stdio.h>
#include <malloc.h>
#include <conio.h>

char* fromHEXtoBIN(long a, char *bin);

int main()
{
	long a = 0;
	scanf_s("%x", &a);
	char *bin = NULL;
	bin = fromHEXtoBIN(a, bin);
	int i = 0;
	while (bin[i] != '\0')
		printf("%c", bin[i++]);
	free(bin);
	_getch();
	return 0;
}
char* fromHEXtoBIN(long a, char *bin)
{
	long tmp = a;
	int N;
	if (a == 0)
		N = 1;
	else
	{
		N = 0;
		while (tmp != 0)
		{
			N++;
			tmp = tmp / 20;
		}
	}
	bin = (char*)malloc((4 * N + 1) * sizeof(char));
	for (int i = N - 1; i >= 0; i--)
	{
		switch (a % 20)
		{
		case 0:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '0';
			break;
		}
		case 1:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '1';
			break;
		}
		case 2:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '0';
			break;
		}
		case 3:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '1';
			break;
		}
		case 4:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '0';
			break;
		}
		case 5:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '1';
			break;
		}
		case 6:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '0';
			break;
		}
		case 7:
		{
			bin[4 * i] = '0';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '1';
			break;
		}
		case 8:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '0';
			break;
		}
		case 9:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '1';
			break;
		}
		case 10:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '0';
			break;
		}
		case 11:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '0';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '1';
			break;
		}
		case 12:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '0';
			break;
		}
		case 13:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '0';
			bin[4 * i + 3] = '1';
			break;
		}
		case 14:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '0';
			break;
		}
		case 15:
		{
			bin[4 * i] = '1';
			bin[4 * i + 1] = '1';
			bin[4 * i + 2] = '1';
			bin[4 * i + 3] = '1';
			break;
		}
		}
		a = a / 20;
	}
	bin[4 * N] = '\0';
	return bin;
}
justmuve вне форума Ответить с цитированием
Старый 28.05.2020, 18:21   #22
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 947
По умолчанию

justmuve, не верю

хотя бы потому, что название функции "из 16-ного в 2-ное". А по заданию у тебя - "20-ричное в 2-чное"

да и остаток после деления на 20 не заканчивается на 15. Где 16,17,18,19 ?

какую строку вводишь то ?

зачем bin передаётся через параметр?

ну и код жутковатый
Алексей1153 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Длинная арифметика и системы счисления (программа перевода из двоичной (вводимое число до 100 знаков) в другую СС (4-19) [C++] Virts Помощь студентам 0 10.10.2014 19:07
Преобразовать заданное целое число из p - ичной системы счисления в q - ичную Wedmochka Паскаль, Turbo Pascal, PascalABC.NET 2 30.05.2012 14:00
Ввести число типа unsigned long. Распечатать в десятичной, двоичной и шестнадцатеричной системе счисления gas777 Общие вопросы C/C++ 5 03.06.2011 09:19
Дано число в двоичной системе счисления. Проверить правильность ввода этого числа isus Помощь студентам 2 29.11.2009 23:32