Cita de: do-while en 18 Agosto 2010, 16:56 PM
¡Buenas!
Solo una cosa sobre los operadores aritmeticos. Todas las operaciones las estas haciendo con numeros enteros. En este caso no importa porque el resultado tambien es un numero entero, pero si el resultado fuese un numero con decimales, al trabajar solo con enteros, la parte decimal desapareceria. Para que las operaciones sean entre numeros reales tendrias que convertir alguno de los numeros a float, por ejemplo, de esta forma el compilador convertiria el resto de los numeros a reales y el resultado seria tambien real.
Podrias hacer por ejemplo:Código (c) [Seleccionar]
x = ( ( b * b ) - ( 4. * a * c ) ) / ( 2. * a ) ;
x = ( (float) ( ( b * b ) - ( 4 * a * c ) ) ) / ( 2 * a ) ;
x = ( ( b * b ) - ( 4 * a * c ) ) / ( (float) ( 2 * a )) ;
Cualquiera de las formas anteriores es esquivalente a las otras. El hecho de poner un punto despues de un numero, indica que es real. Es equivalente a poner por ejemplo 2.0...
Espero que te haya quedado claro.
¡Saludos!
Muchas gracias do-while, tu aclaración resolvió mi problema. Pero me acarreao otra duda.
En el manual que estoy siguiendo ( Curso de programación en C/C++ por Juan Ceballos de la editorial RA-MA) dice claramente que en una operación aritmetica en la cual operamos con distintos tipos ( int y float en este caso ) siempre retorna al tipo mas exacto (en este caso al float). Si yo declare la variable 'x' como float me deberá retornar un valor REAL no? sin necesidad de 'indicarle' al compilador en la operación que me ponga por ejemplo la primera parte como Real (x = ( (float) ( ( b * b ) - ( 4 * a * c ) ) ) / ( 2 * a ) . Aunque bueno, quizás esa parte no la haya comprendido del todo y quiera decir lo que tu propones aquí.
Nota: hace un ratito que puse este mensaje y estuve dandole vueltas al asunto y llego a la conclusión de que:
Por mucho que indique que 'x' es de tipo float, siempre que 'x' lo iguale en una operación aritmetica a numeros enteros, me retornará un entero, ya que un entero es un numero real [float ( int) ] (float contiene a int ). Por lo tanto en la expresión debo indicar alguno de los parámetros como Reales para que me retorne un REAL como bien dices.
Es más o menos así ¿no?