Я выполняю задание по программированию на c, которое работает (+, -, *, /) с двумя двоичными числами, например, если пользователь вводит: «1001 + 1010» должен добавить два двоичных файла и дать вывод «010011»
мой код может принимать только каждый шаг ввода шаг за шагом (берет первый двоичный файл, затем второй двоичный файл и выбирает операцию (+, -, *, /), а затем генерирует ответ) и генерирует ответ, но назначение требует принятьцелое сразу (1001 + 1010 и ответь 010011)
#include <stdio.h>
int main()
{
int num, num2, binary_val, binary_val2, decimal_val = 0, decimal_val2 = 0, base = 1, rem, base2 = 1, rem2, sum;
char oprtr;
printf("Enter the first binary number(1s and 0s) \n");
scanf("%d", &num);
binary_val = num;
printf("Enter the second binary number(1s and 0s) \n");
scanf("%d", &num2);
binary_val2 = num2;
printf("choose operation +,-,/,* \n");
scanf("%char", &oprtr);
while (num > 0)
{
rem = num % 10;
decimal_val = decimal_val + rem * base;
num = num / 10;
base = base * 2;
}
while (num2 > 0)
{
rem2 = num2 % 10;
decimal_val2 = decimal_val2 + rem2 * base2;
num2 = num2 / 10;
base2 = base2 * 2;
}
if (oprtr == '+')
{
sum = decimal_val + decimal_val2;
}
else if (oprtr == '*' || oprtr == 'x' || oprtr == 'X')
{
sum = decimal_val * decimal_val2;
}
else if (oprtr == '-')
{
sum = decimal_val * decimal_val2;
}
else if (oprtr == '/')
{
sum = decimal_val / (float)decimal_val2;
}
else
{
printf("error");
}
int decimal_num, remainder, binary = 0;
while (sum > 0)
{
remainder = num % 2;
/* To count no.of 1s */
if (remainder == 1)
binary = binary + remainder * base;
sum = sum / 2;
base = base * 10;
}
printf("The Binary number of the first one is = %d \n", binary_val);
printf("The Binary number of the second one is = %d \n", binary_val2);
printf("Its decimal equivalent is = %d \n", decimal_val);
printf("Its decimal equivalent is = %d \n", decimal_val2);
printf("And their Value is = %d \n", sum);
}