繁体   English   中英

我++; AVE + =值; AVE / = I; 在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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM