Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: uluigi en 15 Julio 2015, 20:32 pm



Título: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: uluigi en 15 Julio 2015, 20:32 pm
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 17 Julio 2015, 23:12 pm
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: uluigi en 18 Julio 2015, 03:38 am
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 18 Julio 2015, 11:17 am
Basta que pongas un if en donde vayas o no a colocar los parentesis. Con un operador ternario lo tienes fácil.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: uluigi en 20 Julio 2015, 04:06 am
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: 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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: uluigi en 21 Julio 2015, 07:13 am
Lo habré quitado sin querer, ¿podrías especificarme en qué línea de código pasa eso?


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 21 Julio 2015, 13:01 pm
¿Pasa el qué?


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: uluigi en 23 Julio 2015, 11:09 am
El único caso donde se elimina el signo menos, es en b^2. Pero eso es matemática, menos por menos es más.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 23 Julio 2015, 13:06 pm
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.

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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: 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:

Código
  1. $radicando=$b*$b-4*$a*$c;
  2. if($radicando>=0){
  3.  $x1=(-$b+sqrt($radicando))/(2*$a);
  4.  if($radicando!=0)
  5.    $x2=(-$b-sqrt($radicando))/(2*$a);
  6. }
  7. else{
  8.  //hallar soluciones complejas
  9. }

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


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: engel lex en 28 Julio 2015, 10:17 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:

Código
  1. $radicando=$b*$b-4*$a*$c;
  2. if($radicando>=0){
  3.  $x1=(-$b+sqrt($radicando))/(2*$a);
  4.  if($radicando!=0)
  5.    $x2=(-$b-sqrt($radicando))/(2*$a);
  6. }
  7. else{
  8.  //hallar soluciones complejas
  9. }

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...


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: joecarl en 28 Julio 2015, 11:08 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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 29 Julio 2015, 00:18 am
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: Kaxperday en 29 Julio 2015, 02:08 am
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.


Título: Re: [Aporte] Script que calcula la ecuación cuadrática ax2 + bx + c = 0
Publicado por: ivancea96 en 29 Julio 2015, 16:21 pm
Entre 100 y 150 lineas, es una longitud viable. Lo único que alarga tanto el código son los if-else encadenados.