Hola, he hecho un programa que factoriza ecuaciones de segundo grado
ax²+bx+c = (dx+e)(fx+g)
mediante la "fuerza bruta".
Aquí está el codigo fuente para que vean que se le puede mejorar al programa.
/************************************************** *************************
factoriza.cpp - Este programa factoriza
ecuaciones de segundo grado,
los pasa de la forma ax² + bx + c
a la forma (ax+b)(cx+d)
-------------------
Autor: Othoniel García
giskard@punkass.com
************************************************** *************************/
/************************************************** *************************
*Este programa es software libre. Puede redistribuirlo y/o modificarlo *
*bajo los términos de la Licencia Pública General de GNU según es *
*publicada por la Free Software Foundation, bien de la versión 2 de dicha *
*Licencia o bien (según su elección) de cualquier versión posterior. *
* *
*Este programa se distribuye con la esperanza de que sea útil, pero SIN *
*NINGÚN TIPO DE GARANTÍA, incluso sin la garantía MERCANTIL implícita o *
*sin garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la *
*Licencia Pública General de GNU para más detalles. *
* *
************************************************** *************************/
#include <stdio.h>
#include <conio.h>
#include <math.h>
int a, b, c, d;
int num1, num2, num3, comp;
int conta1, conta2;
int r1,r2,r3;
char opcion;
void main(void)
{
do
{
comp = 0;
clrscr();
printf("Escribe los valores de a,b,c en la ecuacion ax²+bx+c\n");
scanf("%i",&num1);
gotoxy(4,2);
printf("x2+");
scanf("%i",&num2);
gotoxy(10,2);
printf("x+");
scanf("%i",&num3);
conta1 = (0-1)*abs(num1);
conta2 = (0-1)*abs(num3);
a=(0-1)*conta1;
b=(0-1)*conta2;
c=(0-1)*conta1;
d=(0-1)*conta2;
while (a>=conta1 && comp!=1)
{
b=(0-1)*conta2;
while (b>=conta2 && comp!=1)
{
c=(0-1)*conta1;
while (c>=conta1 && comp!=1)
{
d=(0-1)*conta2;
while (d>=conta2 && comp!=1)
{
clrscr();
r1 = a*c;
r2 = (a*d) + (b*c);
r3 = b*d;
printf("(%dx+%d)(%dx+%d)",a,b,c,d);
if (r1 == num1 && r2 == num2 && r3 == num3)comp = 1;
d--;
}
c--;
}
b--;
}
a--;
}
if (comp != 1) printf("\nNo se puede factorizar la ecuacion");
printf("\nDeseas hacer otra ecuacion?[s/n]");
opcion = getch();
}while (opcion == 's' || opcion == 'S');
}
Marcadores