台灣最大程式設計社群網站
線上人數
1870
 
會員總數:246318
討論主題:189850
歡迎您免費加入會員
討論區列表 >> ASP >> 陣列中統計次數和列出最大值
[]  
[我要回覆]
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
陣列中統計次數和列出最大值
價值 : 10 QP  點閱數:3907 回應數:24
樓主

tiger
門外漢
0 14
480 53
發送站內信

有一個陣列
a=array(小明,小花,阿正,小山,小名,小鐘,阿正,中忠,小名,小花,小名,小明,阿正,小李,小花,小花,小明,阿正,阿忠,梨山,台中,小花)
如何用asp計算各個名字出現次數,並顯示出最大出現次數。
請各位學長指點
謝謝

本篇文章發表於2014-05-19 09:59
1樓
回應

Sdany
捐贈 VP 給 Sdany 檢舉此回應
用迴圈

例for
本篇文章回覆於2014-05-19 12:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

tiger
檢舉此回應
恩謝謝回應
迴圈 恩不錯的意見
可以再詳細一點嗎
小弟愚昧
不知如何解決
本篇文章回覆於2014-05-19 13:38
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

風箏
檢舉此回應
這個感覺應該是作業
所以只使用陣列與迴圈進行解

用口語化解釋,大概邏輯可以這樣寫
宣告AB兩陣列
A陣列用於存放名單
B陣列用於存放名單出次數
兩陣列之對應使用相同索引位置
如array A {小明,小花,阿正)
array B {1,2,3)
小明出現一次
小花兩次
阿正三次


用迴圈將陣列內的值取出來進行比對
取出的值置入於A陣列的位置
如果此key值已經存在此A陣列中
則於B陣列的相同索引位置進行+1的動作

最後列出A陣列的名單與B陣列的次數
並且取出B陣列中的最大值是A陣列的哪個人

本篇文章回覆於2014-05-20 09:48
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

tiger
檢舉此回應
哈哈 不是作業啦
我只是沒概念 謝謝告知
我想想喔 如果想出來再請您指教
本篇文章回覆於2014-05-20 09:55
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
作者回應

tiger
檢舉此回應
這是小弟找到重陣列中取出不重複的方法,但如何統計出現次數,請大大幫忙。
Dim s, vv, v, d
s="小明,小花,阿正,小山,小名,小鐘,阿正,中忠,小名,小花,小名,小明,阿正,小李,小花,小花,小明,阿正,阿忠,梨山,台中,小花"
vv = Split(s, ",")
Set d = Server.CreateObject("Scripting.Dictionary")
For Each v In vv
If Not d.Exists(v) Then
d.Add v, v
kk = kk & "," & v
End If
Next
response.write kk
本篇文章回覆於2014-05-21 14:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

tiger
檢舉此回應
這是小弟找到重陣列取出不重複的方法,但如何統計次數和取出最大值懇請大大幫忙。謝謝
Dim s, vv, v, d
s="小明,小花,阿正,小山,小名,小鐘,阿正,中忠,小名,小花,小名,小明,阿正,小李,小花,小花,小明,阿正,阿忠,梨山,台中,小花"
vv = Split(s, ",")
Set d = Server.CreateObject("Scripting.Dictionary")
For Each v In vv
If Not d.Exists(v) Then
d.Add v, v
kk = kk & "," & v
End If
Next
response.write kk
本篇文章回覆於2014-05-21 14:27
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
7樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
本篇文章回覆於2014-05-21 16:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
8樓
作者回應

tiger
檢舉此回應
老頑童大大,謝謝你熱情的解答,讓我又學會了一招,這個論壇真是太棒了
幫我們這些初學者能學到更多,最近想學asp.net不知道有沒有必要,因為
asp已經很好用了,各位大大可以給小弟一點意見嗎?
本篇文章回覆於2014-05-21 19:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
9樓
作者回應

tiger
檢舉此回應
那如果要印出每個人得票數和最小得票數要如何寫呀
本篇文章回覆於2014-05-21 20:39
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
10樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
每個人得票數就把dictionary堛爾禤あL出來就好
至於最小得票數就要看怎麼定義了,是有得票的最少票?還是0票的人也要算?
若是前者,那跟最多票大同小異,只是反過來而已
若是後者,那就必需先取得所有會員資料,這邊就不做討論
本篇文章回覆於2014-05-22 10:18
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
11樓
作者回應

tiger
檢舉此回應
謝謝老頑童的解惑
其實小弟最近寫一個投票程式,想把實際得票結果印出來
當我把您的程式帶到我的資料庫時,結果好像不太對
我有一個投票資料表 其中一個欄位是投票結果(vote_ans)
A投票結果是 小明,小花,阿正,小山,小名
B投票結果是 小明,小花,阿正
C投票結果是 小明,阿正,小李,小花
D投票結果是 小明,小李,小花,阿三
我的方法是
把所有投票結果加入陣列,再跑回圈取出最多和最少票數者
do while not rs.eof
s=s&rs("vote_ans")&","
rs.movenext
loop
當我把s陣列運用到老頑童的程式時得到的結果和實際結果並不相同
不知是不是我上面取出所有值加入陣列有問題嗎?
本篇文章回覆於2014-05-22 12:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
12樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
若你的投票結果,是由表單中勾選後直接存入資料庫
那人名與人名之間會由「逗號+一個空格」隔開,而不是只有一個逗號

而你用來串連的逗號s=s&rs("vote_ans")&","
以及用來Split()的逗號vv = Split(s, ",")後面都不包含空格
這會導致分割後的資料有些會多出一個空格,有些則沒有
所以統計時有空格的及沒空格的會被當成是不同的兩個人
統計出來的結果當然跟你想的會有出入

你先確認看看是不是上述原因所造成的問題
本篇文章回覆於2014-05-22 13:26
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
13樓
作者回應

tiger
檢舉此回應
原來如此,如果是這樣有甚麼方法解決呀
本篇文章回覆於2014-05-22 13:47
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
14樓
回應

老頑童
捐贈 VP 給 老頑童 檢舉此回應
第一種方法,把那兩行逗號後面也加一個空格就行了
第二種方法,把分割後的資料用Trim()去除多餘的空白再進行處理
本篇文章回覆於2014-05-22 14:16
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
15樓
作者回應

tiger
檢舉此回應
哈哈 原來這麼簡單 該打屁股還提問
但還是要謝謝老頑童 不吝指教 這是書中找不到的
本篇文章回覆於2014-05-22 14:23
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   

回覆
如要回應,請先登入.