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

No se ejecuta una sentencia...

Estas en el tema de No se ejecuta una sentencia... en el foro de C/C++ en Foros del Web. Buenas! Tengo una dudilla, voy a hacer un programilla que calcule el volumen de una esfera. Cuando lo ejecuto parece ser que va todo bien, ...
  #1 (permalink)  
Antiguo 06/08/2011, 06:08
jesusgox
Invitado
 
Mensajes: n/a
Puntos:
No se ejecuta una sentencia...

Buenas!

Tengo una dudilla, voy a hacer un programilla que calcule el volumen de una esfera. Cuando lo ejecuto parece ser que va todo bien, pero en la fórmula el 3/4 no me lo calcula, es decir, multiplica radio*radio*radio*Pi perfectamente, pero no se multiplica por el 3/4.

¿Sabéis porqué?
Otra cosilla en c cómo era poner por ejemplo radio elevado a 3? era agregando la librería math.h creo y algo de quad o algo así

Gracias!

Código:
#include <stdio.h>

#define PI 3.1416

int main(){
    float volumen, radio;
    
    printf("Inserta el radio de la esfera \n");
    scanf("%f", &radio);
    volumen = (4/3)*PI*radio*radio*radio;
    printf("El volumen de la esfera es:%f \n", volumen);
    return (0);
}
  #2 (permalink)  
Antiguo 06/08/2011, 06:35
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: No se ejecuta una sentencia...

La division de enteros da entero. 4/3 = 1, 3/4 = 0.
Para potencias, usar pow(), o bien para casos de potencia pequeña multiplicar.
  #3 (permalink)  
Antiguo 06/08/2011, 07:06
jesusgox
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No se ejecuta una sentencia...

Cita:
Iniciado por CalgaryCorpus Ver Mensaje
La division de enteros da entero. 4/3 = 1, 3/4 = 0.
Para potencias, usar pow(), o bien para casos de potencia pequeña multiplicar.
No me ha quedado muy claro, la división 4/3= 1,33 con lo cual da un número decimal ¿no? por la tanto porqué no sería un número real?

Gracias!
  #4 (permalink)  
Antiguo 06/08/2011, 07:11
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: No se ejecuta una sentencia...

En matematica de humanos tienes razon.
En C / C++ existe clausura. Si divides enteros, el resultado da entero.

4 / 3 = 1
4.0 / 3 = 1.333
4 / 3.0 = 1.333
4.0 / 3.0 = 1.333
  #5 (permalink)  
Antiguo 06/08/2011, 07:24
jesusgox
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: No se ejecuta una sentencia...

Y aparte de esa clausura, ¿existen más o algún sitio donde pueda mirar ese tipo de clausuras?

GRACIAS!
  #6 (permalink)  
Antiguo 06/08/2011, 08:16
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: No se ejecuta una sentencia...

Sugiero buscar conversion de tipos en C++ (google).
  #7 (permalink)  
Antiguo 06/08/2011, 17:41
 
Fecha de Ingreso: abril-2010
Ubicación: Rosario
Mensajes: 1.850
Antigüedad: 14 años
Puntos: 228
Respuesta: No se ejecuta una sentencia...

Clausura es concepto matematico. Un conjunto y un operador son cerrados o tienen clausura si la operacion entre cualquier dos elementos sigue dando un elemento de ese cojunto.

En el caso de C/C++ si uno divide dos entero va a dar entero. Pero si usas un entero y flotante como son dos distintos el compilador te lo lleva a flotanta. El compilador sabe que es unb flotante porque usamos el punto para mostrar la coma.

Saludos

Etiquetas: casting, ejecuta
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 12:30.