Imprimir soluciones o casos especiales
En este último paso, mejorará el programa para proporcionar una salida más detallada para diferentes tipos de soluciones en un sistema de dos ecuaciones lineales.
Abra el archivo existente y realice las modificaciones finales:
cd ~/project
nano linear_equations.c
Actualice el código con un formato de salida mejorado:
#include <stdio.h>
#include <math.h>
// Función para calcular el determinante
float determinant(float a1, float b1, float a2, float b2) {
return a1 * b2 - a2 * b1;
}
int main() {
float a1, b1, c1; // Coeficientes de la primera ecuación
float a2, b2, c2; // Coeficientes de la segunda ecuación
float det, detX, detY;
float x, y;
float EPSILON = 1e-6; // Pequeño valor para comparación de punto flotante
// Solicitar y leer los coeficientes de la primera ecuación
printf("Resolvedor de Ecuaciones Lineales\n");
printf("Ingrese los coeficientes de la primera ecuación (ax + by = c):\n");
printf("a1: ");
scanf("%f", &a1);
printf("b1: ");
scanf("%f", &b1);
printf("c1: ");
scanf("%f", &c1);
// Solicitar y leer los coeficientes de la segunda ecuación
printf("Ingrese los coeficientes de la segunda ecuación (ax + by = c):\n");
printf("a2: ");
scanf("%f", &a2);
printf("b2: ");
scanf("%f", &b2);
printf("c2: ");
scanf("%f", &c2);
// Imprimir las ecuaciones de entrada
printf("\nEcuaciones de entrada:\n");
printf("Ecuación 1: %.2fx + %.2fy = %.2f\n", a1, b1, c1);
printf("Ecuación 2: %.2fx + %.2fy = %.2f\n", a2, b2, c2);
// Calcular el determinante principal
det = determinant(a1, b1, a2, b2);
// Determinar e imprimir el tipo de solución
if (fabs(det) > EPSILON) {
// Caso de solución única
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
x = detX / det;
y = detY / det;
printf("\n--- Tipo de solución: Solución única ---\n");
printf("Solución:\n");
printf("x = %.2f\n", x);
printf("y = %.2f\n", y);
} else {
// Verificar si no hay solución o hay soluciones infinitas
detX = determinant(c1, b1, c2, b2);
detY = determinant(a1, c1, a2, c2);
if (fabs(detX) > EPSILON || fabs(detY) > EPSILON) {
printf("\n--- Tipo de solución: Sin solución ---\n");
printf("El sistema de ecuaciones no tiene solución.\n");
printf("Las ecuaciones son inconsistentes y paralelas.\n");
} else {
printf("\n--- Tipo de solución: Soluciones infinitas ---\n");
printf("El sistema de ecuaciones tiene infinitas soluciones.\n");
printf("Las ecuaciones son equivalentes y dependientes.\n");
}
}
return 0;
}
Compile y ejecute el programa:
gcc linear_equations.c -o linear_equations
./linear_equations
Ejemplo de salida para una solución única:
Resolvedor de Ecuaciones Lineales
Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 1
b2: 4
c2: 10
Ecuaciones de entrada:
Ecuación 1: 2.00x + 3.00y = 8.00
Ecuación 2: 1.00x + 4.00y = 10.00
--- Tipo de solución: Solución única ---
Solución:
x = 2.00
y = 2.00
Ejemplo de salida para la ausencia de solución:
Resolvedor de Ecuaciones Lineales
Ingrese los coeficientes de la primera ecuación (ax + by = c):
a1: 2
b1: 3
c1: 8
Ingrese los coeficientes de la segunda ecuación (ax + by = c):
a2: 4
b2: 6
c2: 16
Ecuaciones de entrada:
Ecuación 1: 2.00x + 3.00y = 8.00
Ecuación 2: 4.00x + 6.00y = 16.00
--- Tipo de solución: Sin solución ---
El sistema de ecuaciones no tiene solución.
Las ecuaciones son inconsistentes y paralelas.