• Sábado 14 de Diciembre de 2024, 08:57

Autor Tema:  Funcion int  (Leído 2581 veces)

matias_11885

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Funcion int
« en: Lunes 15 de Agosto de 2011, 04:37 »
0
Hola a todos...

Recien estoy empezand a usar visual c++ y tengo un problema con el siguiente programa para resolver ecuaciones de segundo grado, este es el codigo fuente:

// ecuaciones de 2do grado.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <Math.h>
#include <conio.h>

void main(void){
   int A, B, C, X1, X2;
   printf("ecuacion de 2do grado: A*X + B*(X^2) + C ");
   printf("\n Ingrese valor de A: ");
      scanf("%i", &A);
   if (A==0){
      printf("\n A no puede ser cero \n");
   }
   else{
      printf("\n Ingrese valor de B: ");
      scanf("%i", &C);
      printf("\n Ingrese valor de C: ");
       scanf("%i", &C);
   }
   X1 = ((-B) - sqrt(B^2 - 4*A*C))/2*A;
   
   if ((B^2 - 4*A*C)<0){
      printf("\n No es posible averiguar X1");
   }
   else{
      printf("\n X1 = %i", X1);
   }
   X2 = ((-(B)) + sqrt(B^2 - 4*A*C))/2*A;
   if ((B^2 - 4*A*C)<0){
      printf("\n No es posible averiguar X2");
   }
   else{
      printf("\n X2 = %i", X2);
   }
   getch();

}

El problema que tengo es que cuando pido los valores de x1 y x2 me devuelve numeros irreales... o sea 8456321 o 4863245... nada que ver con los resultados reales... Creo que el problema esta en como estoy usando en int, pero la verdad no le encuentro la vuelta.

Muchas gracias por la respuesta.

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Funcion int
« Respuesta #1 en: Lunes 15 de Agosto de 2011, 05:05 »
0
Creo que el problema esta en como estoy usando en int, pero la verdad no le encuentro la vuelta.

Exacto, ese es el problema, el uso de int

Dado que el resultado puede dar valores con punto decimal (flotantes), lo mas correcto es definir todas tus variables de tipo float o double, para evitar que el resultado se "trunque" de manera incorrecta. Aun asi, debes tomar en cuenta que esto no garantiza que obtendras un resultado exacto al 100%, debido al redondeo de las variables float, pero obtendras un resultado mas exacto que si utilizaras variables enteras.

Editado: por la rapidez de mi respuesta, no note un detalle adicional, el uso de ^ para elevar al cuadrado, en C/C++ no se utiliza ^ para elevar a una "n" potencia, la manera correcta para elevar al cuadrado es utilizar "variable * variable" o la funcion pow(variable, 2) que esta definida en la libreria math.h

Saludos :)
« última modificación: Lunes 15 de Agosto de 2011, 05:24 por ProfesorX »

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

matias_11885

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re:Funcion int
« Respuesta #2 en: Lunes 15 de Agosto de 2011, 13:59 »
0
Muchas Gracias por la respuesta profesor x!!