Bueno, pues os traigo otro script, que calcula una ecuación de segundo grado, vamos... que te la da completa.
Fórmulas hechas con imágenes para que la lectura de código sea más sencilla, le doy las gracias a engel lex por darme esa idea.
Inicio del pseudocódigo
[Resolución de la ecuación cuadrática ax2 + bx + c = 0]
1. Pedir valores de los campos.
2. Capturar valores de a, b y c.
3. Si VALUE = (NEGATIVO = 0 AND POSITIVO = 1) 000
4. ENTONCES VALOR SERÁ !=.
Final del pseudocódigo
Si encontráis algún error, ¡comentadlo!
(http://i.imgur.com/fpMcNbL.png)
https://mega.nz/#!yI0AVRDB!0ekZ4hPEZkWM8WB3m1Ds-NqpaCco5uR8pLZflVQnFxQ
El código del script supera las 500 líneas así que me veo obligado a subirlo a MEGA. Un saludo.
Es incorrecto en varios aspectos.
En primer lugar, si B es negativo o positivo, en la representacion, no se ve.
En segundo lugar, haces la raiz de numeros negativos.
En tercer lugar, el código está muy repetido.
Hazlo sin un if/else por cada combinacion de positivo/negativo.
Comprueba si la raiz es negativa o positiva, que es una parte importante de esta ecuación.
Trata de hacer que los números que se ven en la ecuación con LATEX sean correctos.
Al parecer por lo que he visto, cuando B es negativa, la cambias a positiva sin más razón.
Este código lo puedes hacer sin necesidad de if/elses para cada posibilidad.
1 hilo de código, haciendo las comprobaciones que quieras, pero solo 1 hilo, no 8 posibilidades.
En la representación sí se ve si son negativos o positivos.
¿En la raíz cuadrada? Será algún fallo, tendré que echarle un vistazo.
Hombre... está muy repetido por las posibilidades que tiene. Por ejemplo:
Si a es negativo, b es positivo y c es negativo, lo represento como 010 para no perderme, y que si a = 0, b = 1 y c = 0 HACER ALGO, en este caso, hacer la ecuación con los números representados y en la gráfica de LATEX agregar los paréntesis que se agregan a los números negativos en las ecuaciones
¿Y cómo lo hago sin el if/else? Saludos y gracias por tu comentario.
Basta que pongas un if en donde vayas o no a colocar los parentesis. Con un operador ternario lo tienes fácil.
Pero es que no es sólo poner el if donde ponga los paréntesis, eso es la parte visual, haría falta la parte del código, porque a veces se elimina el signo menos y otras se añade, ¿me entiendes compae?
Por cierto, creo que más o menos lo voy entendiendo, itentaré basarlo.
El único caso donde se elimina el signo menos, es en b^2. Pero eso es matemática, menos por menos es más.
Lo habré quitado sin querer, ¿podrías especificarme en qué línea de código pasa eso?
¿Pasa el qué?
Cita de: ivancea96 en 20 Julio 2015, 14:35 PM
El único caso donde se elimina el signo menos, es en b^2. Pero eso es matemática, menos por menos es más.
En matemáticas, si multiplicas un número negativo por otro negativo, sale un número positivo. Así que un número elevado a un número par, siempre va a ser positivo.
Cita de: uluigi en 20 Julio 2015, 04:06 AM
porque a veces se elimina el signo menos y otras se añade
tan solo es multiplicar, los signos se colocan solos al realizar las multiplicaciones. Lo único que tienes que hacer es poner (o no) los paréntesis.
500 lineas para calcular la ecuacion de segundo grado? A ver, yo no quiero desalentar a la gente con respecto a la programación... pero es que esto se calcula en 5 -10 lineas y luego se pone bonito con otras 5-10 lineas.
Para hallar las soluciones bastaría con:
$radicando=$b*$b-4*$a*$c;
if($radicando>=0){
$x1=(-$b+sqrt($radicando))/(2*$a);
if($radicando!=0)
$x2=(-$b-sqrt($radicando))/(2*$a);
}
else{
//hallar soluciones complejas
}
Con respecto al tema de representarlo, ahí ya no me meto, porque a ti te ha quedado bastante bien y yo no tengo mucha idea de latex.
Siempre intenta en la medida de lo posible separar codigo php del html, a veces es inevitable entremezclarlo, pero cuando se pueda separar una cosa de la otra, hazlo. Tu código se entenderá mucho mejor.
Saludos
Cita de: joecarl en 28 Julio 2015, 09:50 AM
500 lineas para calcular la ecuacion de segundo grado? A ver, yo no quiero desalentar a la gente con respecto a la programación... pero es que esto se calcula en 5 -10 lineas y luego se pone bonito con otras 5-10 lineas.
Para hallar las soluciones bastaría con:
$radicando=$b*$b-4*$a*$c;
if($radicando>=0){
$x1=(-$b+sqrt($radicando))/(2*$a);
if($radicando!=0)
$x2=(-$b-sqrt($radicando))/(2*$a);
}
else{
//hallar soluciones complejas
}
Con respecto al tema de representarlo, ahí ya no me meto, porque a ti te ha quedado bastante bien y yo no tengo mucha idea de latex.
Siempre intenta en la medida de lo posible separar codigo php del html, a veces es inevitable entremezclarlo, pero cuando se pueda separar una cosa de la otra, hazlo. Tu código se entenderá mucho mejor.
Saludos
recomiendo que las revises... están mayormente bien justificadas y en pro de la lectura... si, podría reducirse, pero no mucho... pero con respecto a lo que tu haces, creo que sería imposible extenderlo a 500 lineas...
Cita de: engel lex en 28 Julio 2015, 10:17 AM
recomiendo que las revises... están mayormente bien justificadas y en pro de la lectura... si, podría reducirse, pero no mucho... pero con respecto a lo que tu haces, creo que sería imposible extenderlo a 500 lineas...
Lo he revisado bien antes de postear, no entiendo mucho lo que quieres decir. No entiendo por qué dices que su código no se puede reducir mucho, porque salta a la vista que sí se puede.
Si bien su código se puede reducir mucho, ten en cuenta que él también muestra la interfaz, con LATEX.
Sí, se puede reducir. Pero no tanto, ni mucho menos.
En clase nos hicieron un ejercicio de 30 minutos evaluable que consistía en resolver una ecuación de segundo grado en C, y no podía fallar nada, ¿crees que escribimos 500 líneas? >:D >:D >:D
De todas formas ¿alguien ha visto el código del link? Seguramente hará más que ese script.
Saludos.
Entre 100 y 150 lineas, es una longitud viable. Lo único que alarga tanto el código son los if-else encadenados.