PDA

Ver la Versión Completa : ecuaciones


edusus
16-04-2006, 17:55:49
Hola, Estoy tratando de hacer un programa capaz de realizar una ecuación de primer grado, pero no lo consigo. No encuentro una forma de introducir los datos para que despeje la x y la realice.
Si alguien sabe como hacerlo y me manda el código en un ejemplo se lo agradezco.

Robert01
17-04-2006, 00:00:19
lo que quieres es hacer algo como:

aX +b = 0 ?

x = -b/a


es muy simple, solo despejas la incognita y luego pruebas si se cumple para ese valor.
Si es para un sistema de ecuaciones es similar, despejas primero una y luego la otra incognita.

Hay una página de Jean Moreau sobre cálculo númerico (en pascal, c , fortran y basic)

saludos

edusus
17-04-2006, 08:02:39
Gracias por tu respuesta, pero me has entendido mal. Yo sé como resolver las ecuaciones, pero lo que quiero es plantearle la ecuación al programa y que éste lo resuelva. Muchas gracias de todos modos.

[Gunman]
17-04-2006, 09:57:04
Mira lo que puedes hacer es:
||EDIT_A||x ||EDIT_B|| = ||EDIT_C||
Esto seria el form, junto con un botón que ponga "Calcular" o algo por el estilo y luego haces lo que ha dicho Robert01;
x := (||EDIT_C||-||EDIT_B||)/||EDIT_A||;
Recuerda que tienes que convertir el valor de cada edit a integer i que x ha de ser de tipo float.
Si quieres hacerlo de otra forma, por ejemplo, un edit que el usuario le indica toda la equación, el programa ha de hacer:
1.- Separar los valores con X de los que no tienen X, por ejemplo podrias usar la función Copy() y la función Pos().
2.- Obtener el valor final de las partes CON X y de las partes SIN X.
3.- Hacer lo mismo que antes, X := PARTES_SIN_X/PARTES_CON_X
Has de tener en cuenta que cuando extraigas los valores has de sacar el signo de este también, me explico?

edusus
17-04-2006, 11:08:34
Gracias por tu respuesta, pero lamento decirte que no me funciona.
Si hago la primera opción ( que no haría lo que busco porque limitaría el resultado a una opción de producto a un lado de la igualdad y un único término al otro lado), pero aun así:
edit3.text:= floattostr(strtofloat(edit1.text) * strtofloat(edit2.text)); //Solo funciona poniendo un término en cada edit.
Y la otra opción que me das tal vez funcione pero no sé usar las funciones que me dices. De ésta última te agradecería si me mandas el código. Gracias nuevamente.