Autor
|
Tema: Ecuacion de la recta en c++ (Leído 24,128 veces)
|
chucho11028
Desconectado
Mensajes: 3
|
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
|
|
|
En línea
|
|
|
|
Stakewinner00
|
Puedes publicar el código? Y ya que estar metele las etiquetas GeSHi.
|
|
|
En línea
|
|
|
|
chucho11028
Desconectado
Mensajes: 3
|
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; }
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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:y-y1=m(x-x1) y=mx+y1-mx1
Y si x1=x2 o y1=y2 hay ecuación:#include <iostream> using namespace std; int main(){ double x1,x2,y1,y2,m,p,q; cout << "Ingrese coordenada en x1 : "; cin >> x1; cout << "Ingrese coordenada en y1 :"; cin >> y1; cout << "Ingrese coordenada en x2 :"; cin >> x2; cout << "Ingrese coordenada en y2 :"; cin >> y2; if ( x1==x2) cout << "La ecuacion es: x="<<x1 <<endl; else if ( y1==y2) cout << "La ecuacion es: y="<<y1 <<endl; else { m=(y2-y1)/(x2-x1); cout << "La ecuacion de la recta es y = " << m << "x + (" << -m*x1+y1 <<")" <<endl; cin.get(); } cin.get(); return 0; }
Saluditos!. ...
|
|
« Última modificación: 25 Febrero 2013, 23:46 pm por leosansan »
|
En línea
|
|
|
|
chucho11028
Desconectado
Mensajes: 3
|
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
|
|
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
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:
Ingrese coordenada en x1 : 2 Ingrese coordenada en y1 :-3 Ingrese coordenada en x2 :3 Ingrese coordenada en y2 :6 La ecuacion de la recta es y = 9x + (-21)
Otra cosa es que tú quieras con convertir + (-21) en -21:#include <iostream> using namespace std; int main(){ double x1,x2,y1,y2,m,p,q; cout << "Ingrese coordenada en x1 : "; cin >> x1; cout << "Ingrese coordenada en y1 :"; cin >> y1; cout << "Ingrese coordenada en x2 :"; cin >> x2; cout << "Ingrese coordenada en y2 :"; cin >> y2; if ( x1==x2) cout << "La ecuacion es: x="<<x1 <<endl; else if ( y1==y2) cout << "La ecuacion es: y="<<y1 <<endl; else { m=(y2-y1)/(x2-x1); if ( -m*x1+y1<0) cout << "La ecuacion de la recta es y = " << m << " x " << -m*x1+y1 <<"" <<endl; else cout << "La ecuacion de la recta es y = " << m << " x + " << -m*x1+y1 <<"" <<endl; cin.get(); } cin.get(); return 0; }
En cuyo caso obtendrás:
Ingrese coordenada en x1 : 2 Ingrese coordenada en y1 :-3 Ingrese coordenada en x2 :3 Ingrese coordenada en y2 :6 La ecuacion de la recta es y = 9x -21
Saluditos!. ...
P.D: Repasa lo de ecuaciones de la recta.
|
|
« Última modificación: 25 Febrero 2013, 23:45 pm por leosansan »
|
En línea
|
|
|
|
85
|
|
|
« Última modificación: 5 Marzo 2013, 04:56 am por 85 »
|
En línea
|
|
|
|
leosansan
Desconectado
Mensajes: 1.314
|
|
|
« Última modificación: 6 Marzo 2013, 11:46 am por leosansan »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
una sencilla ecuacion
« 1 2 3 4 »
Desafíos - Wargames
|
Og.
|
36
|
27,444
|
19 Enero 2011, 18:46 pm
por Garfield07
|
|
|
Crear una linea recta de (x1,y1) hasta (x2,y2) (Ayuda)
Programación General
|
anonimo12121
|
1
|
2,769
|
30 Enero 2012, 01:45 am
por Ferno
|
|
|
Linux Mint 13 “Maya” en la recta final. Presentada la versión candidata
Noticias
|
wolfbcn
|
0
|
2,203
|
17 Mayo 2012, 21:48 pm
por wolfbcn
|
|
|
Solución a la ecuación...
Foro Libre
|
Perrito08
|
2
|
2,091
|
20 Noviembre 2012, 22:51 pm
por Perrito08
|
|
|
Intersección de recta y punto
Programación C/C++
|
kaostias
|
4
|
3,750
|
26 Noviembre 2013, 18:23 pm
por kaostias
|
|