elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


  Mostrar Mensajes
Páginas: [1]
1  Programación / Programación C/C++ / Re: Empezando con C en: 18 Agosto 2010, 20:11 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
  1. x = ( ( b * b ) - ( 4. * a * c ) ) / ( 2. * a ) ;
  2. x = ( (float) ( ( b * b ) - ( 4 * a * c ) ) ) / ( 2 * a ) ;
  3. x = ( ( b * b ) - ( 4 * a * c ) ) / ( (float) ( 2 * a )) ;
  4.  

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?
2  Programación / Programación C/C++ / Re: Empezando con C en: 18 Agosto 2010, 15:02 pm
simplemente has de cambiar el formato , estás usando el '%d' para escribir x , si pones  '%g' te lo va a mostrar bien .


Tienes razón en parte. cambiando el valor de '%d' perteneciente a la 'x' por '%g' me sigue dando un valor entero. Al menos ya no es 0 sino 8, pero sigue siendo un entero... y la solución a la expresión es 17/2... que es un real.

Código:
printf("(%d*%d)-(%d*%d*%d))/(%d*%d)=%g", b, b, 4, a, c, 2, a, x); 

Gracias por la contestación.

Alguna sugerencia más?
3  Programación / Programación C/C++ / Empezando con C en: 18 Agosto 2010, 14:34 pm
Buenas a todos. Antes de nada presentarme ya que soy nuevo en el foro.

Estoy empezando un curso de C y la verdad esque para empezar tengo la siguiente duda y espero que me echeis una mano.

Tengo que escribir el codigo necesario para sacar por pantalla la siguiente expresión con su respectiva solución:

[(bb) - (4ac)] / 2a

Empiezo con el código:
Código:

#include <stdio.h>

main()
{
      int a, b, c;
      float x;
           
      a = 1;
      b = 5;
      c = 2;
     
      // Cuenta
     
      x = ( ( b * b ) - ( 4 * a * c ) ) / ( 2 * a ) ;
      printf ("( %d * %d ) - ( %d * %d * %d ) ) / ( %d * %d ) = %d ", b, b, 4, a, c, 2, a, x); 
                 
      }


La duda es la siguiente:

Al declarar la variable tipo real "x" ( Float ) pretendo que me de como resultado un REAL, y al ejecutar el programa lo que me da es 0 patatero, jajaja. "x = 0"
Pero al declarar la variable X como un entero ( INT ) si que me da el resultado que quiero x = 8 ( que es el resultado final de la expresión sin su parte decimal ) pero lo quiero con parte decimal. ¿ Que estoy haciendo mal ?

Gracias de antemano x las contestaciones.

Un saludo.

Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines