Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: STANHMAL en 9 Julio 2010, 03:15 am



Título: [C] Ecuaciones de segundo grado
Publicado por: STANHMAL en 9 Julio 2010, 03:15 am
Ahora hice este xD



Código
  1. /*******************************
  2.  * Ecuaciones de segundo grado *
  3.  *******************************
  4.  *    codeado por: STANHMAL    *
  5.  ********************************/
  6.  
  7. #include <stdio.h>
  8. #include <math.h>
  9.  
  10. int main()
  11. {
  12. int i, y=1;
  13. double a, b, c, x1, x2;
  14.  
  15. printf("\n\n *******************************\n");
  16. printf(" * Ecuaciones de segundo grado *\n");
  17. printf(" *******************************\n\n\n");
  18. printf("\nEscoja que desea hacer.\n");
  19. printf("1. Resolver  2. Salir\n");
  20. scanf("%d", &i);
  21. while (y == 1) {
  22. if (i == 1){
  23. printf("Valor de a: ");
  24. scanf("%lf", &a);
  25. printf("valor de b: ");
  26. scanf("%lf", &b);
  27. printf("valor de c: ");
  28. scanf("%lf", &c);
  29. if (a != 0) {
  30. x1 = (((-(b)) + (sqrt(b*b - (4*(a*c)))))/(2*(a)));
  31. x2 = (((-(b)) - (sqrt(b*b - (4*(a*c)))))/(2*(a)));
  32. printf("\aLos resultados de la ecuación son: %f y %f\n", x1, x2);
  33. printf("1. Continuar. 2. Salir.\n");
  34. scanf("%d", &i);
  35. if (i==1) y=1;
  36. else if (i==2) y=2;
  37. }
  38. else{
  39. printf("a no puede ser 0\n");
  40. y=1;
  41. }
  42. }
  43. else if (i == 2) y=2;
  44. else {
  45. printf("Error, opción no establecida.\n");
  46. printf("1. Continuar. 2. Salir.\n");
  47. scanf("%d", &i);
  48. if (i == 1) y=1;
  49. }
  50. }
  51. return 0;
  52. }
  53.  

Ustedes dirán que tal me quedo, en que se puede mejorar, etc..

$4!u2


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: .:BlackCoder:. en 9 Julio 2010, 03:31 am
Yo personalmente en los if/else no coloco return, a menos q este obligado... pero en el main casi nunca es necesario... No se si es mala practica pero para mi lo es... Tu veras xD

Pudiste poner un else if (i != 2)  cout<<"Error blablabla"<<endl;

El resto es control de errores... fijate que esta dentro de la raiz no de negativo y esas cosas...

Saludos...


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: MIG80 en 9 Julio 2010, 03:37 am
Hola, se podria incluir la posibilidad que las soluciones sean números complejos..



Título: Re: [C] Ecuaciones de segundo grado
Publicado por: STANHMAL en 9 Julio 2010, 03:43 am
Yo personalmente en los if/else no coloco return, a menos q este obligado... pero en el main casi nunca es necesario... No se si es mala practica pero para mi lo es... Tu veras xD

jeje, entonces me aconsejas que en vez del return coloque un exit?

Pudiste poner un else if (i != 2)  cout<<"Error blablabla"<<endl;

hmmm si, es una posibilidad, pero a la final termina siendo lo mismo no?



Hola, se podria incluir la posibilidad que las soluciones sean números complejos..

si claro, porque no, veré a ver que puedo hacer.

gracias.

$4!u2


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: .:BlackCoder:. en 9 Julio 2010, 04:00 am
No, no te aconsejo que uses exit (), todo lo contrario que no uses salidas repentinas en los programas... para mi el exit y el return en una estructura de desicion es como un break o un continue lo cual es mala practica de programacion... Desvia el flujo del programa una cosa asi  :xD

Saludos...

PD: Si aceptas numeros complejos pes dejalo asi, pero pes eso casi nunca lo piden asi que practica, no aceptando numeros complejos


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: STANHMAL en 9 Julio 2010, 04:05 am
No, no te aconsejo que uses exit (), todo lo contrario que no uses salidas repentinas en los programas... para mi el exit y el return en una estructura de desicion es como un break o un continue lo cual es mala practica de programacion... Desvia el flujo del programa una cosa asi  :xD

ya entendí  :rolleyes:

Gracias.


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: .:BlackCoder:. en 9 Julio 2010, 04:07 am
 :xD De nada... OJO eso que te digo no lo tengo comprobado, si alguien con mas conocimiento te lo dice pes consideralo simpre, por ahora solo tenlo en cuenta y trata de evitar esos exit

Saludos


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: nicolas_cof en 9 Julio 2010, 04:16 am
STANHMAL, te dejo un codigo, para que veas otra forma de poder hacerlo...

Código:
#include <stdio.h>
#include <math.h>
 
int main( void )
{
    int opcion;
    double a, b, c, x1, x2;

    do
    {
        printf( "\n*******************************\n"
                "* Ecuaciones de segundo grado *\n"
                "*******************************\n"
                "Escoja que desea hacer.\n"
                "1. Resolver\n"
                "2. Salir\n"
                "Opcion: " );
        fscanf( stdin, "%d", &opcion );

        switch ( opcion )
        {
            case 1:
                /* ... */
                break;
            case 2:
                puts( "Saliendo..." );
                break;
            default:
                puts( "Opcion incorrecta" );
                break;
        }
    }
    while ( opcion != 2 );
   
    return 0;
}

Salu10.


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: STANHMAL en 9 Julio 2010, 04:38 am
...

Ta bueno el code, gracias man.

antes estuve intentado hacerlo con switch pero me daba error, mejor dicho, no supe como usarlo.  :xD

$4!u2


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: do-while en 9 Julio 2010, 13:14 pm
¡Buenas!

Solo una cosa, asegurate de que a!=0, sino tendras errores de division por cero. En este caso tambien tendras que solucionar una de primer grado.

Y si a==0, b==0 y c!=0, la ecuacion no tendra solucion.

¡Saludos!


Título: Re: [C] Ecuaciones de segundo grado
Publicado por: STANHMAL en 10 Julio 2010, 04:28 am
...

Gracias do, nose como se me paso por alto eso xD

Ya he corregido un poco el código, con respecto a lo opinado por black y por do

$4!u2