sclass Average { double sum; double n; void add(double d) { ++n; sum += d; } void add(double d, double weight) { n += weight; sum += d*weight; } double get() { ret doubleRatio(sum, n); } toString { ret get() + " (n=" + n + ")"; } void clear { n = 0; sum = 0; } }