2016-09-03 2 views
-1

私はaspとvbで書くのが初めてで、ウェブフォームからデータを取得し、項目数を数え、アルファベット順に並べ替える必要がある。ASP/VB:配列の値を数えて並べる

私が記入し、それは少し、このようになります提出することができる複数のテキストボックスでWebフォームを持っています(それが唯一の視覚補助だ、スプレッドシートを言い訳)

enter image description here

私が作りました

myArray = array(town, medal, record, sport) 

私は各町が勝ったどのように多くの各メダルの総メダル、再の数をカウントし、順(アルファベットすべて)したいと思います。このような、それらの値を含む配列各町によって設定されたコード。

私のpsuedocodeはこれと少し似ていますが、うまくいけば私はロジックの点でちょっとしたことです。私が少し主張しているのは、どのステートメントが良いのか、そしてどこで、特に英数字で注文するのかを知ることです。

'this is the psuedocode for the total medals per town 
tally = 0 'Set tally to 0 
for myArray(town) 'For each town 
    for myArray(medal) 'For each medal 
     tally = tally + 1 'Add 1 to the total tally 
     response.write(myArray(town) "has" tally "medals" & "<br>") 
    next 
next 

'this is the pseudocode for the individual medals 
for myArray(town) 'For each town 
    for myArray(medal) 'For each medal 
     goldTally = 0 
     silverTally = 0 
     bronzeTally = 0 
     if medal = "G" 
      goldTally = goldTally + 1 
     elseif medal = "S" 
      silverTally = silverTally + 1 
     else medal = "B" 
      bronzeTally = bronzeTally + 1 
     response.write(myArray(town) "has:" goldTally "gold medals" &"<br>" 
             silverTally "silver medals" &"<br>" 
             bronzeTally "bronze medals" &"<br>" 
    next 
next    

感謝のヒープをいただければ幸いです。

答えて

2

カウント/グループ化/分類のためのVBScriptツールはDictionaryです。いくつかのユースケース:Set ops,word list,split file

単純配列は、ArrayListを使用してソートできます。 [Array vs Arraylist]、fancy sorting7

表形式のデータの場合は、切断された​​を使用してください。

インラインデモ:

Option Explicit 

' simple sample data 
Dim a : a = Split("b c a b b c a a b") 

' use a dictionary for counting/grouping 
Dim d : Set d = CreateObject("Scripting.Dictionary") 
Dim e 
For Each e In a 
    d(e) = d(e) + 1 
Next 
WScript.Echo Join(d.Keys) 
WScript.Echo Join(d.Items) 

' use an ArrayList for sorting simple arrays 
Dim l : Set l = CreateObject("System.Collections.ArrayList") 
For Each e in a 
    l.Add e 
Next 
l.Sort 
WScript.Echo Join(l.ToArray()) 

' use a disconnected recordset for tabular data 
Const adVarChar = 200 
Const adInteger = 2 
Const adClipString = 2 
Dim r : Set r = CreateObject("ADODB.Recordset") 
r.Fields.Append "k", adVarChar, 50 
r.Fields.Append "n", adInteger 
r.Open 
For Each e In d.Keys 
    r.AddNew 
    r.Fields("k").value = e 
    r.Fields("n").value = d(e) 
    r.Update 
Next 
r.MoveFirst 
Do Until r.EOF 
    WScript.Echo r.Fields("k").value, r.Fields("n").value 
    r.MoveNext 
Loop 
r.Sort = "k DESC" 
WScript.Echo r.GetString(adClipString, , ", ", "; ", "null") 

出力:BTW

cscript 39305170.vbs 
b c a 
4 2 3 
a a a b b b b c c 
a 3 
c, 2; b, 4; a, 3; 

:さえ擬似コード言語において、

for myArray(town) 'For each town 

response.write(myArray(town) "has:" goldTally "gold medals" ... 

は同時に動作しません。

関連する問題