| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
gaty
Registrado: 30 Oct 2007 Mensajes: 12
| Publicado: 11/11/2007 10:11 am | | | Título: programa para resolver ecuaciones de 2o grado |
| estoy haciendo para clase un programa en dev c++ en c que resuelva una ecuacion de segundo grado en los tres casos posobles: que la solucion sea una y doble, que seandos soluciones reales o que sean dos soluciones imaginarias.he hecho el programa, pero a la hora de compilarlo me da un error,a ver si me podriais ayudar a corregirlo, el programa es:
| Código: | #include <stdio.h> #include <stdlib.h> #include <math.h> int EcuacionSegundoGrado (double a,double b,double c,double *x1,double *x2,double *x1i,double *x2i) { double raiz;
raiz= (b*b-4*a*c);
printf("Introduzca a: "); scanf("%lf",&a); printf("Introduzca b: "); scanf("%lf",&b); printf("Introduzca c: "); scanf("%lf",&c); if (raiz==0) { *x1=-b/(2*a); printf("El resultado de la ecuacion es x=%5.3f doble\n",x1); } else if (raiz<0) { *x1=-b/(2*a); *x1i=(sqrt(raiz)*sqrt(-1))/(2*a); *x2=-b/(2*a); *x2i=(sqrt(raiz)*sqrt(-1))/(2*a); printf("El resultado de la ecuacion es x1=%5.3f + %5.3f i y x2=%5.3f + %5.3f i\n",*x1,*x1i,*x2,*x2i); } else if (raiz>0) { *x1=(-b+sqrt(raiz))/(2*a); *x2=(-b-sqrt(raiz))/(2*a); printf("El resultado de la ecuacion es x1=%5.3f y x2=%5.3f\n",*x1,*x2); } else return 0; } int main(int argc, char *argv[]) { int o; o=EcuacionSegundoGrado; system("PAUSE"); return 0; }
|
y en este otro tampoco se me compila . en este si la solucion es imaginaria ha de salir como resultado 0 y que el resultado es falso y en los otros dos casos te da el resultado
| Código: | #include <stdio.h> #include <stdlib.h> #include <math.h> int ResuelveSegundoGrado (double a,double b,double c,double *x1,double *x2) { double raiz; int ok; printf("Escriba a: "); scanf("%lf",&a); printf("Escriba b: "); scanf("%lf",&b); printf("Escriba c: "); scanf("%lf",&c);
raiz=(b*b-4*a*c); if (raiz<0) { ok=0; *x1=0; *x2=0; printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } else if (raiz==0) { ok=1; *x1=*x2=-b/(2*a); printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } else { ok=1; *x1=(-b/(2*a))+sqrt(raiz)/(2*a); *x2=(-b/(2*a))-sqrt(raiz)/(2*a); printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } return ok; } int main(int argc, char *argv[]) { int o; o=ResuelveSegundoGrado(); system("PAUSE"); return 0; }
|
y si pongo todo dentro del main si que se me compila pero al ejecutarlo no me sale nada
| Código: | #include <stdio.h> #include <stdlib.h> #include <math.h>
int main(int argc, char *argv[]) { int ResuelveSegundoGrado (double a,double b,double c,double *x1,double *x2) { double raiz; int ok; printf("Escriba a: "); scanf("%lf",&a); printf("Escriba b: "); scanf("%lf",&b); printf("Escriba c: "); scanf("%lf",&c);
raiz=(b*b-4*a*c); if (raiz<0) { ok=0; *x1=0; *x2=0; printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } else if (raiz==0) { ok=1; *x1=*x2=-b/(2*a); printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } else { ok=1; *x1=(-b/(2*a))+sqrt(raiz)/(2*a); *x2=(-b/(2*a))-sqrt(raiz)/(2*a); printf ("Los resultados de la ecuacion son %5.3f y %5.3f",*x1,*x2); } return ok; } system("PAUSE"); return 0; }
|
_________________ Si te molesta que te mientan, no preguntes. |
| | Volver arriba | |  | digies
Registrado: 18 Nov 2005 Mensajes: 314 Ubicación: Cono Sur
| Publicado: 12/11/2007 7:41 am | | | Título: |
| Hola
Con respecto al primer código, trata de verlo de esta forma:
| Código: | #include <stdio.h> #include <stdlib.h> #include <math.h>
void EcuacionSegundoGrado (void);
int main(void) { EcuacionSegundoGrado(); system("PAUSE"); return EXIT_SUCCESS; }
void EcuacionSegundoGrado (void) { double a,b, c, x1, x2, x1i, x2i, raiz;
raiz=b*b-4*a*c;
printf("Introduzca a: "); scanf("%lf",&a); printf("Introduzca b: "); scanf("%lf",&b); printf("Introduzca c: "); scanf("%lf",&c);
if (raiz==0) { x1=-b/(2*a); printf("El resultado de la ecuacion es x=%5.3f doble\n",x1); }
else if (raiz<0) { x1=-b/(2*a); x1i=(sqrt(raiz)*sqrt(-1))/(2*a); x2=-b/(2*a); x2i=(sqrt(raiz)*sqrt(-1))/(2*a); printf("El resultado de la ecuacion es x1=%5.3f + %5.3f i y x2=%5.3f + %5.3f i\n", x1, x1i, x2, x2i); } else if (raiz>0) { x1=(-b+sqrt(raiz))/(2*a); x2=(-b-sqrt(raiz))/(2*a); printf("El resultado de la ecuacion es x1=%5.3f y x2=%5.3f\n", x1, x2); } else exit (EXIT_FAILURE); }
|
Porque en el original hay varios errores en la implementación de la función EcuacionSegundoGrado.
Un saludo |
| | Volver arriba | |  | gaty
Registrado: 30 Oct 2007 Mensajes: 12
| Publicado: 12/11/2007 9:31 am | | | Título: |
| podrias decirme cuales son los errores para ver si los puedo corregir, que si no no aprendo
Edito: he probado tu codigo y algo esta mal porque le ponga los valores que le ponga a a,b y c siempre te da solucion doble _________________ Si te molesta que te mientan, no preguntes. |
| | Volver arriba | |  | | LunatikO
Registrado: 24 Sep 2007 Mensajes: 9 Ubicación: La Luna (de Valencia)
| Publicado: 12/11/2007 2:31 pm | | | Título: |
| ¿Y no será que todas las combinaciones que introduces dan soluciones dobles? _________________ Comité Contra las Faltas Voluntarias y el Lenguaje SMS: |
| | Volver arriba | |  | gaty
Registrado: 30 Oct 2007 Mensajes: 12
| Publicado: 12/11/2007 2:48 pm | | | Título: |
| no porque las he calculado primero a mano para probar las tres posibilidades _________________ Si te molesta que te mientan, no preguntes. |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |