Introducción
En este laboratorio, aprenderás a simplificar fracciones utilizando el algoritmo del Máximo Común Divisor (MCD) en programación C. El laboratorio cubre los siguientes pasos: leer el numerador y el denominador de la entrada del usuario, calcular el MCD y luego dividir tanto el numerador como el denominador por el MCD para obtener la fracción simplificada. Este laboratorio tiene como objetivo ayudarte a comprender el concepto de simplificación de fracciones e implementarlo utilizando técnicas de programación en C.
Leer Numerador y Denominador
En este paso, aprenderás a leer el numerador y el denominador de la entrada del usuario en un programa C para la simplificación de fracciones.
Primero, creemos un nuevo archivo C para nuestro programa de simplificación de fracciones:
cd ~/project
nano fraction_simplify.c
Ahora, agrega el siguiente código para leer el numerador y el denominador:
#include <stdio.h>
int main() {
int numerator, denominator;
printf("Ingrese el numerador: ");
scanf("%d", &numerator);
printf("Ingrese el denominador: ");
scanf("%d", &denominator);
printf("Numerador: %d\n", numerator);
printf("Denominador: %d\n", denominator);
return 0;
}
Compilamos y ejecutamos el programa:
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
Salida de ejemplo:
Ingrese el numerador: 12
Ingrese el denominador: 18
Numerador: 12
Denominador: 18
Explicación del código:
scanf()se utiliza para leer la entrada de entero del usuario.%des el especificador de formato para enteros.&numeratory&denominatorpasan las direcciones de memoria para almacenar los valores de entrada.printf()se utiliza para mostrar el numerador y el denominador ingresados.
Calcular MCD y Dividir Ambos
En este paso, implementarás el algoritmo del Máximo Común Divisor (MCD) y lo usarás para simplificar la fracción.
Modifiquemos el programa anterior para añadir una función de cálculo del MCD:
cd ~/project
nano fraction_simplify.c
Actualiza el código con la siguiente implementación:
#include <stdio.h>
// Función para calcular el MCD usando el algoritmo de Euclides
int computeGCD(int a, int b) {
// Asegurar valores positivos
a = (a > 0) ? a : -a;
b = (b > 0) ? b : -b;
// Algoritmo de Euclides
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
int main() {
int numerator, denominator, gcd;
printf("Ingrese el numerador: ");
scanf("%d", &numerator);
printf("Ingrese el denominador: ");
scanf("%d", &denominator);
// Calcular el MCD
gcd = computeGCD(numerator, denominator);
// Simplificar la fracción
int simplified_numerator = numerator / gcd;
int simplified_denominator = denominator / gcd;
printf("Fracción Original: %d/%d\n", numerator, denominator);
printf("Fracción Simplificada: %d/%d\n", simplified_numerator, simplified_denominator);
return 0;
}
Compila y ejecuta el programa:
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
Salida de ejemplo:
Ingrese el numerador: 12
Ingrese el denominador: 18
Fracción Original: 12/18
Fracción Simplificada: 2/3
Explicación del código:
computeGCD()implementa el algoritmo de Euclides para encontrar el Máximo Común Divisor.- La función maneja números positivos y negativos.
- La fracción se simplifica dividiendo el numerador y el denominador por su MCD.
- Maneja casos especiales como ceros y números negativos.
Imprimir la Fracción Simplificada
En este paso, mejorarás el programa de simplificación de fracciones para manejar diversos escenarios de entrada y proporcionar un formato de salida claro.
Actualicemos el programa para incluir una impresión de fracciones más robusta:
cd ~/project
nano fraction_simplify.c
Actualiza el código con la siguiente implementación:
#include <stdio.h>
// Función para calcular el MCD usando el algoritmo de Euclides
int computeGCD(int a, int b) {
a = (a > 0) ? a : -a;
b = (b > 0) ? b : -b;
while (b != 0) {
int temp = b;
b = a % b;
a = temp;
}
return a;
}
// Función para imprimir la fracción con manejo de casos especiales
void printFraction(int numerator, int denominator) {
// Manejar la división por cero
if (denominator == 0) {
printf("Error: No se permite la división por cero.\n");
return;
}
// Calcular el MCD
int gcd = computeGCD(numerator, denominator);
// Simplificar la fracción
int simplified_numerator = numerator / gcd;
int simplified_denominator = denominator / gcd;
// Manejar el signo
if (simplified_denominator < 0) {
simplified_numerator = -simplified_numerator;
simplified_denominator = -simplified_denominator;
}
// Imprimir resultados
printf("Fracción Original: %d/%d\n", numerator, denominator);
// Salida diferente para números enteros y fracciones
if (simplified_denominator == 1) {
printf("Fracción Simplificada: %d\n", simplified_numerator);
} else {
printf("Fracción Simplificada: %d/%d\n",
simplified_numerator, simplified_denominator);
}
}
int main() {
int numerator, denominator;
printf("Ingrese el numerador: ");
scanf("%d", &numerator);
printf("Ingrese el denominador: ");
scanf("%d", &denominator);
// Llamar a la función de impresión de fracciones
printFraction(numerator, denominator);
return 0;
}
Compila y ejecuta el programa:
gcc fraction_simplify.c -o fraction_simplify
./fraction_simplify
Ejemplos de salida:
Ingrese el numerador: 12
Ingrese el denominador: 18
Fracción Original: 12/18
Fracción Simplificada: 2/3
Ingrese el numerador: 15
Ingrese el denominador: 5
Fracción Original: 15/5
Fracción Simplificada: 3
Ingrese el numerador: -12
Ingrese el denominador: 18
Fracción Original: -12/18
Fracción Simplificada: -2/3
Explicación del código:
- Se añadió la función
printFraction()para manejar la impresión de fracciones. - Maneja casos especiales como la división por cero.
- Gestiona el signo de la fracción simplificada.
- Imprime números enteros cuando el denominador es 1.
- Preserva el signo original de la fracción.
Resumen
En este laboratorio, aprenderás a leer el numerador y el denominador de la entrada del usuario, calcular el Máximo Común Divisor (MCD) utilizando el algoritmo de Euclides y, a continuación, simplificar la fracción dividiendo tanto el numerador como el denominador por el MCD. La fracción simplificada se imprimirá como salida.
Los pasos clave son: 1) leer el numerador y el denominador de la entrada del usuario, 2) implementar el algoritmo del MCD para encontrar el máximo común divisor y 3) dividir tanto el numerador como el denominador por el MCD para obtener la fracción simplificada.



