// Función para validar si un dígito es válido para la base dada
int isValidDigit(char digit, int base) { int maxDigit; if (digit >= '0' && digit <= '9') { maxDigit = '0' + base - 1; } else { maxDigit = 'A' + base - 11; } return digit <= maxDigit; }
// Función para convertir un número de una base a decimal
int toDecimal(char num[], int base) { int decimal = 0; int len = strlen(num); int power = 0; for (int i = len - 1; i >= 0; i--) { if (!isValidDigit(num[i], base)) { printf("Error: El número no es válido para la base especificada.\n"); exit(1); } decimal += charToDigit(num[i]) * pow(base, power); power++; } return decimal; }
// Función para convertir un número decimal a una base dada
void toBase(int decimal, int base) { char result[100]; int i = 0; while (decimal != 0) { int rem = decimal % base; result[i++] = (rem < 10) ? rem + '0' : rem + 'A' - 10; decimal /= base; } if (i == 0) { printf("0"); } else { for (int j = i - 1; j >= 0; j--) { printf("%c", result[j]); } } } int main() { char num1[100], num2[100], operation[20]; int base1, base2, resultBase;
// Obtener los números y bases del usuario
printf("Introduce el primer operando: "); scanf("%s", num1); printf("Introduce base del primer operando: "); scanf("%d", &base1); printf("Introduce el segundo operando: "); scanf("%s", num2); printf("Introduce base del segundo operando: "); scanf("%d", &base2); printf("¿Qué operación deseas realizar? (suma/multiplicación): "); scanf("%s", operation); printf("Introduce base para el resultado: "); scanf("%d", &resultBase);
// Convertir los números a decimal
int decimalNum1 = toDecimal(num1, base1); int decimalNum2 = toDecimal(num2, base2);
// Realizar la operación solicitada
int result; if (strcmp(operation, "suma") == 0) { result = decimalNum1 + decimalNum2; } else if (strcmp(operation, "multiplicación") == 0) { result = decimalNum1 * decimalNum2; } else { printf("Operación no válida\n"); return 1; }
// Mostrar el resultado en la base especificada
printf("El resultado en base %d es ", resultBase); toBase(result, resultBase); printf("\n");