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