c - 为文件的 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)
解决方案
首先,您的 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
变量的任何引用以及任何数组索引。
推荐阅读
- java - 为什么 Java session.getBasicRemote().sendText() 不起作用,但没有错误消息?
- ruby-on-rails - 如何在本地主机上测试地理编码器?
- jquery - 使用'this'关键字将html参数传递给ajax请求
- python - 连接两个numpy数组以使索引顺序保持不变?
- c# - ASP.NET WebForms 在 Azure Active Directory 身份验证后读取 IDToken
- sql-server - Entity Framework Core - 性能非常慢
- python-3.x - Tensorflow.keras:AlreadyExistsError
- java - 有没有办法从值的哈希图中生成 Avro 模式?
- c - Linked List 如何创建具有不同元素顺序的另一个链表。请解释
- gradle - url_launcher 包的问题(Flutter)