体积计算总是产生0

Volume calculations always resulting in 0

本文关键字:计算      更新时间:2023-10-16

我是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;
}

我认为这是因为您混合了float和int,如下行所示:

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

注意整数截断分数:

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

此处:

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

1/3将计算为0,因此aux也将始终为零。

更改为:

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