[C] Ecuaciones de segundo grado

Iniciado por STANHMAL, 9 Julio 2010, 03:15 AM

0 Miembros y 2 Visitantes están viendo este tema.

STANHMAL

Ahora hice este xD




/*******************************
* Ecuaciones de segundo grado *
*******************************
*    codeado por: STANHMAL    *
********************************/

#include <stdio.h>
#include <math.h>

int main()
{
int i, y=1;
double a, b, c, x1, x2;

printf("\n\n *******************************\n");
printf(" * Ecuaciones de segundo grado *\n");
printf(" *******************************\n\n\n");
printf("\nEscoja que desea hacer.\n");
printf("1. Resolver  2. Salir\n");
scanf("%d", &i);
while (y == 1) {
if (i == 1){
printf("Valor de a: ");
scanf("%lf", &a);
printf("valor de b: ");
scanf("%lf", &b);
printf("valor de c: ");
scanf("%lf", &c);
if (a != 0) {
x1 = (((-(b)) + (sqrt(b*b - (4*(a*c)))))/(2*(a)));
x2 = (((-(b)) - (sqrt(b*b - (4*(a*c)))))/(2*(a)));
printf("\aLos resultados de la ecuación son: %f y %f\n", x1, x2);
printf("1. Continuar. 2. Salir.\n");
scanf("%d", &i);
if (i==1) y=1;
else if (i==2) y=2;
}
else{
printf("a no puede ser 0\n");
y=1;
}
}
else if (i == 2) y=2;
else {
printf("Error, opción no establecida.\n");
printf("1. Continuar. 2. Salir.\n");
scanf("%d", &i);
if (i == 1) y=1;
}
}
return 0;
}


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

$4!u2
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red

.:BlackCoder:.

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...
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




MIG80

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


STANHMAL

Cita de: .: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

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

Cita de: .:BlackCoder:. en  9 Julio 2010, 03:31 AM
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?




Cita de: czealt en  9 Julio 2010, 03:37 AM
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
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red

.:BlackCoder:.

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
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




STANHMAL

Cita de: .: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

ya entendí  :rolleyes:

Gracias.
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red

.:BlackCoder:.

 :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
"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja




nicolas_cof

STANHMAL, te dejo un codigo, para que veas otra forma de poder hacerlo...

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

STANHMAL

Cita de: nicolas_cof en  9 Julio 2010, 04:16 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
Power Metal vs Reggaeton



Que es mi ordenador mi tesoro que todo el mundo ha de temer. Mi ley, el ratón y el módem. Mi única patria, la red

do-while

¡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!
- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!