evilertoaster Posted March 14, 2005 Share Posted March 14, 2005 (edited) hey, im trying to write a function that takes a long string of words and finds the most common x-length word in the string. so far ive made this (its got some debugging progress-bars on atm)- expandcollapse popup$aline = "the quixk brown brown foxie fox did the jumpy over laaaazzzzyyyy dog the quick brown" mcomw ($aline,4) func mcomw ($string,$len) progresson ("state","starting") $size=stringlen ($string)/$len $size = round ($size) + 4 dim $aray[$size][2] $start = 1 while 1 $sub=stringmid ($string,$start,$len) if @error = -1 then exitloop progressset ("state","current sub " & $sub) sleep (1000) $astart = 1 $flag = "notfound" clipput ($astart) do if $sub = $aray[$astart][1] then $flag = "found" progressset (0,"state","found " & $sub) sleep (3000) exitloop endif sleep (100) progressset (0,"state", $astart & " of " & $size) $astart = $astart + 1 until $astart + 2 = $size if $flag="found" then $aray[$astart][2] = $aray[$astart][2] + 1 progressset (0,"state", "array count " & $aray[$astart][2]) sleep (3000) endif if $flag = "notfound" then $astart = 1 progressset (0,"state", "starting not found") sleep (3000) while 1 if $aray[$astart][1] = "" then $aray[$astart][1]= $sub progressset (0,"state", "wrote " & $sub & " to array " & $aray[$astart][1]) sleep (3000) exitloop endif $astart = $astart + 1 wend endif $start = $start + 1 wend clipput ($aray[1][1] & " " & $array[1][2]) endfunc but it crashes becuase of some array error, also it says that some $sub is already presant when its not....if anyone has the time to accaulyl see what im doing and the kindess and briliance to help I'd sure appreciate it... thanks edit: alternitivly if there is already someone who did this can you tell me where? Edited March 14, 2005 by evilertoaster Link to comment Share on other sites More sharing options...
Lazycat Posted March 15, 2005 Share Posted March 15, 2005 Without deep diving into code, problem with dim $aray[$size][2] second dimention is only 2 in size, but in code you adressing third element: $aray[$astart][2] = $aray[$astart][2] + 1 As alternative, you can look into this: $aline = "the quixk brown brown foxie fox did the jumpy over laaaazzzzyyyy dog the quick brown" MsgBox (0, "title", MostCommonWord($aline, 5)) Func MostCommonWord($string, $len) Local $comWord = "", $comNum = 1, $num = 1 $asWord = StringSplit($string, " ") For $i = 1 to $asWord[0] If StringLen($asWord[$i]) <> $len Then ContinueLoop For $j = $i+1 To $asWord[0] If $asWord[$i] <> $asWord[$j] Then ContinueLoop $num = $num + 1 Next If $num > $comNum Then $comNum = $num $comWord = $asWord[$i] $num = 1 Endif Next Return($comWord) Endfunc Koda homepage ([s]Outdated Koda homepage[/s]) (Bug Tracker)My Autoit script page ([s]Outdated mirror[/s]) Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now