mboost-dp1
At Tælle
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hejsa nørder,
Jeg kan ikke rigtig finde ud af hvordan man klare denne opgave.
Jeg har en kommasepareret fil med en masse tal i. Det eneste jeg skal finde ud af, er hvilket tal der er flest af.
F.eks:
817;9;516;11;817;408;9;817
så bliver resultatet 817
Håber at i forstår hvad jeg mener.
Jeg kan ikke rigtig finde ud af hvordan man klare denne opgave.
Jeg har en kommasepareret fil med en masse tal i. Det eneste jeg skal finde ud af, er hvilket tal der er flest af.
F.eks:
817;9;516;11;817;408;9;817
så bliver resultatet 817
Håber at i forstår hvad jeg mener.
#4
s = "817;9;516;11;817;408;9;817"
Set all = CreateObject("Scripting.Dictionary")
For Each n in Split(s,";")
If all.Exists(n) Then
all.Item(n) = all.Item(n) + 1
Else
all.Add n,1
End If
Next
maxn = ""
maxval = 0
For Each n in all.Keys
If all.Item(n) > maxval Then
maxn = n
maxval = all.Item(n)
End If
Next
WScript.Echo maxn & " occurs " & maxval & " times"
Set all = Nothing
arne_v (9) skrev:... elendig til Ada ...
En lille reklame: SPARK-sproget der er bygget på Ada (det kan compiles med en standard Ada-compiler), er bestemt værd at kigge nærmere på, hvis man er til eksotiske sprog. Det er bygget op omkring "functional safety"-principper og er derfor udbredt indenfor kritiske applicationer. Det er faktisk lidt synd, at der ikke er flere sprog, der har en "SPARK"-udgave. (Og nej, MISRA-C kan ikke sammenlignes med SPARK.)
Med god erfaring i programmering kan man også ret nemt løse opgaven i andre sprog.XorpiZ (7) skrev:Findes der nogle programmeringssprog du IKKE mestrer?
Haskell string split, for en start:
split :: Char -> String -> [String]
split delimiter input
| [] == rest = [token]
| otherwise = token : split delimiter (tail rest)
where (token,rest) = span (/=delimiter) input
Brug:
*Main> split ';' "817;9;516;11;817;408;9;817"
["817","9","516","11","817","408","9","817"]
Og på overstående kan man så bruge indbyggede haskell functions
Så fuld kode bliver noget i stil med:
Så fuld kode bliver noget i stil med:
import List
split :: Char -> String -> [String]
split delimiter input
| [] == rest = [token]
| otherwise = token : split delimiter (tail rest)
where (token,rest) = span (/=delimiter) input
*Main> maximum (group (split ';' "1;2;3;4;5;5"))
["5","5"]
illishar (12) skrev:En lille reklame: SPARK-sproget der er bygget på Ada (det kan compiles med en standard Ada-compiler), er bestemt værd at kigge nærmere på, hvis man er til eksotiske sprog.
Jeg kender det godt af omtale.
Hvis man arbejder med kritisk software, så er det en meget relevant mulighed.
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.