![](/img/trans.png)
[英]Some values are printing extra times the i (i = 0; i < 10; i++) that i don't want . While using for loop in C
[英]i++; ave+=value; ave/=i; in C don't give expected result
我是C语言的新手,我坚持从事一些我认为较有经验的用户可以轻松解决的问题。
我正在尝试编写一个代码,该代码根据给定的价格可以计算出销售税和总平均价格的价值。 这是我的问题,因为平均价格仅适用于第二价格,并且在这里它停止更改其价值。
任何帮助将不胜感激。
#include "stdafx.h"
static const double SAZBA = 21;
double plusDPH(double cena);
int _tmain(int argc, _TCHAR* argv[])
{
double bezDPH=1, sDPH, prumer=0;
int i = 0;
while (bezDPH != 0)
{
printf("Zadejte cenu bez DPH [Kc]: ");
scanf("%lf", &bezDPH);
sDPH = plusDPH(bezDPH);
printf("Cena s DPH je: %.2lf Kc.\n", sDPH); // With Sale tax
i++;
prumer += sDPH;
prumer /= i; // Average price in total
printf("Prumerna cena s DPH: %.2lf Kc.\n\n", prumer);
}
return 0;
}
double plusDPH(double cena)
{
cena *= SAZBA / 100 + 1;
return cena;
}
非常感谢!
如果您有一个平均值,然后向其中添加一个值,然后将其除以计数,则您将在此过程中丢失信息。 您似乎在混合使用两种最常见的方法。
首先是简单地保持总和而不是平均值,当然还有计数。 这可能是最常见的情况。
然后可以随时将平均值计算为sum / count
(对于非零计数)。
第二种是保持平均值,但要确保将值应用于重新计算的总和,例如:
sum = average * count
sum = sum + value
count = count + 1
average = sum / count
如第一段所述,您似乎正在使用混合函数,或者错误地将总和除以计数,或者在添加下一个值之前未将平均值转回总和。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.