/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

programa para resolver ecuaciones de 2o grado

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
gaty



Registrado: 30 Oct 2007
Mensajes: 12

MensajePublicado: 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

MensajePublicado: 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

MensajePublicado: 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)

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com