Título: Ecuacion de la recta en c++ Publicado por: chucho11028 en 24 Febrero 2013, 20:18 pm Saludos
Hice un programa en C++ para calcular la ecuacion de la recta y mi vision del programa fue solicitar los cuatro valores de x1,x2,y1, y2 para calcular la pendiente y segun la formula y2=m*x2 + b obtener el resultado. Claro me di cuenta al principio que si usaba esta formula: cout << "La ecuacion de la recta es y = " << m << "x + "<< (m*(-x1)+y1) << endl; La ecuacion nunca iba a entender el cambio de signo si y1 era positivo o negativo segun la formula (y2-y1)=m*(x2-x1) al tener que despejar para obtener y2=m*(x2 - x1) + y1. Luego utilice esta logica else { m=(y2-y1)/(x2-x1); //comparo si x1 es mayor que 0 o positivo para manejar el cambio de signo x2-x1 al multiplicar signos if (x1>0) { // si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo almaceno en nueva variable p p=x1*(-1); } if (x1<0) { // si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo almaceno en nueva variable p p=x1; } if (y1>0) { // si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q q=y1; } else { // si es negativo, su signo cambia a positivo en (y2-(-y1)) al pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva variable q q=y1*(-1); } cout << "La ecuacion de la recta es y = " << m << "x + " << ((m)*p)+q << endl; Pero cuando y1 es igual a un numero negativo el componente b de la ecuacion y2=m*x2 + b no me da el resultado correcto. Donde estoy cometiendo el error?? Agradezco cualquier ayuda El programa completo es: #include <iostream> using namespace std; int main() { double x1,x2,y1,y2,m; double p, q; cout << "Ingrese coordenada en x1 : "; cin >> x1; cout << "Ingrese coordenada en x2 :"; cin >> x2; cout << "Ingrese coordenada en y1 :"; cin >> y1; cout << "Ingrese coordenada en y2 :"; cin >> y2; if ( x1==x2) { cout << "No existe ecuacion "; } else { m=(y2-y1)/(x2-x1); //comparo si x1 es mayor que 0 o positivo para manejar el cambio de signo x2-x1 al multiplicar signos if (x1>0) { // si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo almaceno en nueva variable p p=x1*(-1); } if (x1<0) { // si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo almaceno en nueva variable p p=x1; } if (y1>0) { // si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q q=y1; } else { // si es negativo, su signo cambia a positivo en (y2-(-y1)) al pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva variable q q=y1*(-1); } cout << "La ecuacion de la recta es y = " << m << "x + " << ((m)*p)+q << endl; cin.get(); } cin.get(); return 0; } Agradeceria cualquier ayuda para ver donde esta mi error Título: Re: Ecuacion de la recta en c++ Publicado por: Stakewinner00 en 24 Febrero 2013, 21:39 pm Puedes publicar el código? Y ya que estar metele las etiquetas GeSHi.
Título: Re: Ecuacion de la recta en c++ Publicado por: chucho11028 en 24 Febrero 2013, 22:43 pm este es el codigo completo pero no funciona si x1 es negativo, me da cualquier error. Donde me estoy equivocando
#include <iostream> using namespace std; int main() { double x1,x2,y1,y2,m; double p, q; cout << "Ingrese coordenada en x1 : "; cin >> x1; cout << "Ingrese coordenada en x2 :"; cin >> x2; cout << "Ingrese coordenada en y1 :"; cin >> y1; cout << "Ingrese coordenada en y2 :"; cin >> y2; if ( x1==x2) { cout << "No existe ecuacion "; } else { m=(y2-y1)/(x2-x1); //comparo si x1 es mayor que 0 o positivo para manejar el cambio de signo x2-x1 al multiplicar signos if (x1>0) { // si es positivo al multiplicarse en (x2-x1) cambiara a negativo y lo almaceno en nueva variable p p=x1*(-1); } if (x1<0) { // si es negativo al multiplicarse en (x2-(-x1)) cambiara a positivo y lo almaceno en nueva variable p p=x1; } if (y1>0) { // si es positivo, no lo afecta el sigono de (y2-y1) y al pasar a la derecha de (y2-y1) cambiara a positivo y lo almaceno en nueva variable q q=y1; } else { // si es negativo, su signo cambia a positivo en (y2-(-y1)) al pasar a la derecha de (y2-y1) cambiara a negativo y lo almaceno en nueva variable q q=y1*(-1); } cout << "La ecuacion de la recta es y = " << m << "x + " << ((m)*p)+q << endl; cin.get(); } cin.get(); return 0; } Título: Re: Ecuacion de la recta en c++ Publicado por: leosansan en 24 Febrero 2013, 22:51 pm este es el codigo completo pero no funciona si x1 es negativo, me da cualquier error. Donde me estoy equivocando La forma más simple es: Código
Y si x1=x2 o y1=y2 hay ecuación: Código
Saluditos!. ... (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Título: Re: Ecuacion de la recta en c++ Publicado por: chucho11028 en 25 Febrero 2013, 03:33 am Saludos
Gracias por el apoyo pero si x1==x2 la pendiente no es posible ya que no puede dividir por 0. Por otro lado la formula m << "x + (" << -m*x1+y1 <<")" tiene el mismo problema que la mia ya que si y1 es negativo pasa como negativo al lado derecho debido a que multiplica el signo (y-(-y1)) pero en tu formula se mantiene como positivo segun -m*x1+y1. Me puedes ayudar con esto? agradecido Título: Re: Ecuacion de la recta en c++ Publicado por: leosansan en 25 Febrero 2013, 14:52 pm Saludos Gracias por el apoyo pero si x1==x2 la pendiente no es posible ya que no puede dividir por 0. Por otro lado la formula m << "x + (" << -m*x1+y1 <<")" tiene el mismo problema que la mia ya que si y1 es negativo pasa como negativo al lado derecho debido a que multiplica el signo (y-(-y1)) pero en tu formula se mantiene como positivo segun -m*x1+y1. Me puedes ayudar con esto? agradecido * Si x1==x2 la pendiente se considera infinita. Se trata de une recta vertical de ecuación x=constante, no se le aplica la fórmula de la pendiente. Ejecuta el código y verás que sale correcto. * El que y1 sea negativo no tiene significado especial a la hora de obtener la ecuación de la recta. Por ejemplo: Código
Otra cosa es que tú quieras con convertir + (-21) en -21: Código
En cuyo caso obtendrás: Código
Saluditos!. ... (http://st.forocoches.com/foro/images/smilies/aaaaa.gif) P.D: Repasa lo de ecuaciones de la recta. ;) Título: Re: Ecuacion de la recta en c++ Publicado por: 85 en 5 Marzo 2013, 04:53 am @leosansan te falta hacer el gráfico de la solución en Opengl y tu explicación sería lo más ;D
http://recursostic.educacion.es/secundaria/edad/4esomatematicasB/ecuaciones/impresos/quincena4.pdf Título: Re: Ecuacion de la recta en c++ Publicado por: leosansan en 5 Marzo 2013, 16:43 pm @leosansan te falta hacer el gráfico de la solución en Opengl y tu explicación sería lo más ;D Soy más de usar el programa Mathematica para esas cosas, como ejemplo un cono dentro de un paraboloide: (http://i1280.photobucket.com/albums/a497/leosansan/cono_paraboloide_zpsbc3a38ac.jpg) Cuando me "entren" ganas me pondré a lo de la recta....(http://st.forocoches.com/foro/images/smilies/aaaaa.gif) Hasta entonces a disfrutar de la anterior imagen. Saluditos!....(http://st.forocoches.com/foro/images/smilies/simba2.gif) (http://i1280.photobucket.com/albums/a497/leosansan/recta_zps6b949cd1.jpg) |