1054 求平均值 (20分)
本題的基本要求非常簡單:給定 n 個實數,計算它們的平均值。但複雜的是有些輸入資料可能是非法的。乙個「合法」的輸入是 [−] 區間內的實數,並且最多精確到小數點後 2 位。當你計算平均值的時候,不能把那些非法的資料算在內。
輸入第一行給出正整數 n(≤)。隨後一行給出 n 個實數,數字間以乙個空格分隔。
對每個非法輸入,在一行中輸出error: x is not a legal number
,其中x
是輸入。最後在一行中輸出結果:the **erage of k numbers is y
,其中k
是合法輸入的個數,y
是它們的平均值,精確到小數點後 2 位。如果平均值無法計算,則用undefined
替換y
。如果k
為 1,則輸出the **erage of 1 number is y
。
7
5 -3.2 aaa 9999 2.3.4 7.123 2.35
error: aaa is not a legal number
error: 9999 is not a legal number
error: 2.3.4 is not a legal number
error: 7.123 is not a legal number
the **erage of 3 numbers is 1.38
2
aaa -9999
error: aaa is not a legal number
error: -9999 is not a legal number
the **erage of 0 numbers is undefined
思路:
1.第乙個字元要麼是數字要麼是負號
2.不能有字母(即字元範圍是'0'----'9'以及'.'和'-')
3.小數點不能有兩個,且小數點可以在首位也可以在末尾
4.小數點後最多2位數字
5.數字範圍是[-1000,1000]
特別要注意:
測試點2的 1 number 不要寫成 1 numbers 不能有s 巨坑
首次通過**:
1 #include2 #include34view codeintmain()
30 dec=1;31
}32else
if(a[j]>='
0'&&a[j]<='9'
) 37
else
45 num=num+(float)(a[j]-'
0')/b;
46 b*=10;47
}48//數字大於1000
49if(num>1000
) 54}55
else60}
61if
(flag)
65else
68 num_sum++;69}
7071}72
73if(num_sum==0)76
else
if(num_sum>1)79
else
82return0;
83 }
參考:
from:
hive UDAF求平均值
最近做資料遷移專案,把聚合部分從kettle遷移到hadoop集群上,需要寫很多聚合指令碼 在論壇是看到alipay同事寫過類似cube的udaf,拿過來執行下報錯,有幾個地方沒看多,而且沒有注釋,只好從基礎開始看,自己搞乙個,之前寫過udf所以入手還是聽快的 準備 1 實現自己的udaf需要整合u...
spark 求平均值
val rdd sc.makerdd list a 1 a 2 a 3 b 1 b 2 b 3 b 4 a 4 2 rdd.combinebykey x x,1 x int,int y int x.1 y,x.2 1 x int int y int int x.1 y.1,x.2 y.2 mapva...
大數求平均值公式
方法1 維護乙個cnt記錄當前資料的個數,evr記錄當前的平均值 然後每增減乙個新資料val時,更新這個cnt和evr的值即可 evr val evr cnt int main 模擬,每產生乙個數就更新這個cnt和evr for i 0 i sizeof d sizeof d 0 i cout 方法...