体积计算总是导致0

时间:2015-02-16 02:39:32

标签: c++

我是C语言编程的新手。我正在计算锥体内截锥的体积,我发现程序总是返回0。

该程序包含其他功能中的功能。

#include<stdio.h>
#include<stdlib.h>
#include<math.h> 

int AreaCirculo ( float radio ){
if ( radio <= 0 ){ 
throw 1; 
} 
int aux = M_PI * pow (radio,2) ;
     return aux ;
}           

int VolumenCono ( float r, float h ){
if ( h <= 0 ){
    throw 2 ; 
}

int aux = (((1/3 )* AreaCirculo (r)) * h );
return aux;
} 
 int RadioMenor (float R, float H, float h){
if ( H < h){
throw 3;
}
if ( R <= 0){
throw 4;
  }
 if ( h <= 0){ // No hay ConoTruncado 
throw 5;
    }
if ( H <=0 ){
   throw 6;
}
int aux = (( R * h) / H ) ;
   return aux;
}
  int VolumenConoTruncado ( float R, float H, float h){
int aux2 = VolumenCono (R,H) - VolumenCono (( RadioMenor (R,H,h)),h);
    return aux2;
}
 int main (){
   float R,H,h;
printf ( " THIS PROGRAM CALCULATE THE VOLUME OF A TRUNCATED CONE IN A CONE.\n");
printf ( " Enter the  Radio : ");
scanf ("%f",&R);
printf ( " Enter the tallest: ");
scanf ("%f",&H);
printf ( " Enter the lower height : ");
scanf ("%f",&h);

try {
    int auxi = VolumenConoTruncado (R,H,h);
    printf ( " El Volumen del cono truncado es es %i.\n",auxi);
}
catch ( int CodigoError){
    switch (CodigoError){
        case 1 :  printf ( " ERROR :  El radio no puede ser menor o igual a cero . \n"); break;
        case 2 : printf ( " ERROR :  La altura no puede ser menor o igual a cero . \n"); break;
        case 3 : printf ( "La altura menor no puede ser mayor a la mayor.\n"); break;
        case 4 : printf ( "El radio no puede ser menor o igual  cero "); break;
        case 5 : printf ( "La altura del cono truncado no puede ser menor a cero"); break;
        case 6 : printf ( "La altura no puede ser menor o igual a cero "); break;
    }
}
system ("pause");
return 0;
}

2 个答案:

答案 0 :(得分:2)

我认为这是因为你在这一行中混合浮动和整数:

int aux = (( R * h) / H )

注意整数截断分数:

int x = 1.0/2.0;    // x = 0;

答案 1 :(得分:0)

下面:

int aux = (((1/3 )* AreaCirculo (r)) * h );

1/3将评估为0,因此aux也将始终为零。

更改为:

int aux = (((1.0/3) * AreaCirculo(r)) * h);