我++; AVE + =值; AVE / = I;在C中没有给出预期的结果

时间:2015-07-02 13:44:42

标签: c

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

非常感谢!

1 个答案:

答案 0 :(得分:0)

如果您有平均值,然后为其添加一个值并将其除以计数,您将在此过程中丢失信息。你似乎正在使用两种最常见的混合方式。

首先是简单地保持总和而不是平均值,以及当然的计数。这可能是最常见的情况。

然后可以随时计算平均值sum / count(非零计数)。

第二个是维持平均值但确保将值应用于重新计算的总和,例如:

sum = average * count
sum = sum + value
count = count + 1
average = sum / count

如第一段所述,您似乎正在使用混合,错误地将总和除以计数,或者在添加下一个值之前不将平均值转换为总和。