首页 > 解决方案 > 为文件的 for 循环中的数组计算 BMI 平均值

问题描述

我想根据变量身高和体重中的所有数据找到 bmi 的平均值。我不明白如何计算平均值或为 mbmi 输入什么表达式

input:
int M; // Variable for man
int mbmi; / Variable for bmi
int i =0;
while(fscanf(covid, "%c %d %d %d %c %d", &sex, &age, &height, &weight, &sign, &code) != EOF){
i++
}
for(int i = 0; i< 750; i++)
{
   if(sex[i] == 'M')
{
  M++;
  if(sign[i] == '+'){
   mbmi = height[i] /(weight[i]*weight[i]);
   }

}

output:
printf("\nAverage BMI of males who tested positive: %f ", mbmi)

标签: c

解决方案


首先,您的 BMI 计算方式错误。它应该是体重除以身高的平方,而不是身高除以体重的平方。见https://www.cdc.gov/nccdphp/dnpao/growthcharts/training/bmiage/page5_1.html

其次,您需要计算两个独立的东西 - (1) 特定个体的 BMI 和 (2) BMI 的平均值。您最后的当前输出将打印数据中最后一个人的 BMI,而不是平均值。您将需要引入更多变量。

请记住,数据集的平均值(在这种情况下为平均 BMI)只是数据点的总和除以数据点的数量。因此,要计算平均 BMI,您应该先将 BMI 相加,然后再除以有多少(在这种情况下,只是阳性男性的 BMI)。

最后,您的代码不需要while循环和for循环。您只需要一次读取每组数字,处理它们,然后进入下一行输入。因此,在这种情况下,您可以删除for循环并仅依赖while循环作为输入。然后循环的主体while将检查阳性男性,计算他们的 BMI,并将其添加到运行总数中。这也意味着您不需要将任何重量、高度等值存储在数组中,因此您可以删除对i变量的任何引用以及任何数组索引。


推荐阅读