Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con variables

Estas en el tema de Problema con variables en el foro de C/C++ en Foros del Web. Código: #include <stdio.h> #include <conio.h> #include <math.h> //Declaracion de prototipo int completas(); int incompletas(); int main(){ int accion; printf("Selecciona el tipo de ecuacion de 2 ...
  #1 (permalink)  
Antiguo 25/10/2008, 18:17
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Problema con variables

Código:
#include <stdio.h>
#include <conio.h>
#include <math.h>

//Declaracion de prototipo
int completas();
int incompletas();

int main(){
    int accion;
    printf("Selecciona el tipo de ecuacion de 2 grado que deseas resolver:\n1-Completa\n2-Incompleta\n");
    scanf("%d",&accion);
    if(accion==1)completas();
    if(accion==2)incompletas();
    getch();
}

int completas(){
    float a,b,c,calc,res1,res2;
    printf("Introduzca el valor a: ");
    scanf("%d",&a);
    printf("Introduzca el valor b: ");
    scanf("%d",&b);
    printf("Introduzca el valor c: ");
    scanf("%d",&c);
    calc=sqrt(pow(2,2)-(4*a*c));
    res1=(-b+calc)/2*a;
    res2=(-b-calc)/2*a;
    printf("Los resultados son:\ndiscriminante=%f\nx=%f\nx=%f\n",calc,res1,res2);
}

int incompletas(){
}
No esta acabado, pero el problema que tengo es que siempre que lo ejecuto, me da como discriminante 2, x=0 i x=0 independientemente a los valores que introduzca.
  #2 (permalink)  
Antiguo 25/10/2008, 19:19
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con variables

Código:
   calc=sqrt(pow(2,2)-(4*a*c));
    res1=(-b+calc)/2*a;
    res2=(-b-calc)/2*a;
Considera si debes hacer la siguiente corrección:
Código:
   calc=sqrt(pow(b,2)-(4*a*c));
    res1=(-b+calc)/2/a;      // o  res1=(-b+calc)/(2*a);
    res2=(-b-calc)/2/a;       // o  res2=(-b-calc)/(2*a);
  #3 (permalink)  
Antiguo 25/10/2008, 21:22
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema con variables

He hecho las modificaciones que me comentas, pero ahora me devuelve discriminante=2 x=1.#INF00 x=1.#INF00.
  #4 (permalink)  
Antiguo 26/10/2008, 07:04
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con variables

Cita:
Iniciado por neandertal Ver Mensaje
He hecho las modificaciones que me comentas, pero ahora me devuelve discriminante=2 x=1.#INF00 x=1.#INF00.
Ahora verifica bien si corregiste pow(2,2) por pow(b,2)
Por otro lado, debes depurar las entradas, de manera que el valor bajo la raiz no sea negativo, ó antes de aplicar sqrt, verificar si el valor es negativo y parar el cálculo.

Última edición por IgnacioJavier; 26/10/2008 a las 07:07 Razón: completar información
  #5 (permalink)  
Antiguo 26/10/2008, 15:07
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Exclamación Respuesta: Problema con variables

He estado probando i me he dado cuenta que en las ecuaciones que tienen resultado real, las variables devuelven "#QNAN0" i cuando tiene resultado imaginario, devuelven las 3 "1.#IND0", he estado probando, pero no hay manera de que me devuelva un valor numerico
  #6 (permalink)  
Antiguo 26/10/2008, 17:14
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
De acuerdo Respuesta: Problema con variables

Cita:
Iniciado por neandertal Ver Mensaje
He estado probando i me he dado cuenta que en las ecuaciones que tienen resultado real, las variables devuelven "#QNAN0" i cuando tiene resultado imaginario, devuelven las 3 "1.#IND0", he estado probando, pero no hay manera de que me devuelva un valor numerico

Debes cambiar %d por %f en los scanf y haber hecho las correcciones en las funciones matemáticas

scanf("%f",&a);
scanf("%f",&b);
scanf("%f",&c);

Última edición por IgnacioJavier; 26/10/2008 a las 18:01 Razón: corrección
  #7 (permalink)  
Antiguo 28/10/2008, 08:40
Avatar de neandertal  
Fecha de Ingreso: enero-2008
Ubicación: Barcelona
Mensajes: 79
Antigüedad: 16 años, 3 meses
Puntos: 1
Respuesta: Problema con variables

He hecho los cambios que me comentas, pero sigo con el mismo problema, vuelvo a poner el código.

Código:
#include <stdio.h>
#include <conio.h>
#include <math.h>

//Declaracion de prototipo
int completas();
int incompletas();

int main(){
    int accion;
    printf("Selecciona el tipo de ecuacion de 2 grado que deseas resolver:\n1-Completa\n2-Incompleta\n");
    scanf("%d",&accion);
    if(accion==1)completas();
    if(accion==2)incompletas();
    getch();
}

int completas(){
    float a,b,c,calc,res1,res2;
    printf("Introduzca el valor a: ");
    scanf("%f",&a);
    printf("Introduzca el valor b: ");
    scanf("%f",&b);
    printf("Introduzca el valor c: ");
    scanf("%f",&c);
    calc=sqrt(pow(b,2)-(4*a*c));
    res1=(-b+calc)/(2*a);
    res2=(-b-calc)/(2*a);
    printf("Los resultados son:\ndiscriminante=%f\nx=%f\nx=%f\n",calc,res1,res2);
}

int incompletas(){
}

Última edición por neandertal; 28/10/2008 a las 08:40 Razón: Corrección
  #8 (permalink)  
Antiguo 28/10/2008, 09:01
 
Fecha de Ingreso: octubre-2008
Mensajes: 34
Antigüedad: 15 años, 6 meses
Puntos: 1
Respuesta: Problema con variables

Acabo de copiar tu codigo en mi computadora, y compilado en C++ (con Dev C++) y funciona perfectamente, a menos que le suministre valores que den como resultado un imaginario.
Te sugiero que lo ensayes con los valores adecuados y/o que depures las entradas.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:01.