/ Forside / Teknologi / Udvikling / ASP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
ASP
#NavnPoint
smorch 9259
Harlekin 1866
molokyle 1040
Steffanst.. 758
gandalf 657
smilly 564
gibson 560
cumano 530
MouseKeep.. 480
10  Random 410
Test af et array
Fra : Martin Yousif


Dato : 22-01-07 01:57

Hej med jer.

Er der nogen der har en idé til hvordan jeg kan teste om samme
ord fremgår mere end 1 gang i mit array???

På forhånd tak.
Hilsen Martin

PS. Ordene i arrayet kender jeg selvfølgelig ikke på forhånd, så
ville det jo være for nemt :)

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Martin Jensen (22-01-2007)
Kommentar
Fra : Martin Jensen


Dato : 22-01-07 02:35

> Er der nogen der har en idé til hvordan jeg kan teste om samme
> ord fremgår mere end 1 gang i mit array???

Du kan smide første ord i en streng, og genneløbe arrayet og
tjekke om der er nogle ord der magen til, derefter hopper du
videre til næste ord i arrayet, og tjekker endnu engang osv...

Noget i denne retning må kunne bruges...

for i = 0 to ubound(arr)
strtmp = arr[i]
for j = 0 to ubound(arr)
if strComp(arr[j], arr[i]) = 0 then
noget tællehalløj for at finde ud af om ordet optræder mere
end en gang
end if
next
next


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Leif Neland (22-01-2007)
Kommentar
Fra : Leif Neland


Dato : 22-01-07 07:05

Martin Jensen wrote:

En lille optimering:

> Du kan smide første ord i en streng, og genneløbe arrayet og
> tjekke om der er nogle ord der magen til, derefter hopper du
> videre til næste ord i arrayet, og tjekker endnu engang osv...
>
> Noget i denne retning må kunne bruges...
>
> for i = 0 to ubound(arr)
> strtmp = arr[i]
> for j = 0 to ubound(arr)

for j=i+1 to ubound(arr)
Hvis arr[3] <> arr[6] så er arr[6] <> arr[3]

> if strComp(arr[j], arr[i]) = 0 then
> noget tællehalløj for at finde ud af om ordet optræder mere
> end en gang
> end if
> next
> next

Leif



Martin Yousif (22-01-2007)
Kommentar
Fra : Martin Yousif


Dato : 22-01-07 09:59

Tak til både Leif og Martin for de hurtige svar.
Løsningen virker fint...

Hilsen Martin

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

john wengel (22-01-2007)
Kommentar
Fra : john wengel


Dato : 22-01-07 09:34

Martin Yousif wrote in dk.edb.internet.webdesign.serverside.asp:
> Hej med jer.
>
> Er der nogen der har en idé til hvordan jeg kan teste om samme
> ord fremgår mere end 1 gang i mit array???
>

Spejl arrayet mod sig selv ved hjælp af en nested for-next løkke.

dim s

for i =0 to ubound(array,2)

s=0

for j=0 to ubound(array,2)

if array(0,i)=array(0,j) then ' afhængig af hvor i array du har
ordene
s=s+1
end if

response.write "ens ord = "&s
response.write"<br>"
response.write array(0,i)
next

next

det giver selvølgelig mange ens svar.

Har du brug for en ægte optælling (f.ex. til en statistik)kan du
sætte de optalte ord ind i en database hvor du tager højde for at
de ikke findes i forvejen

mvh
jw



>
> --
> Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
> - Pædagogiske tutorials på dansk
> - Kom godt i gang med koderne
> KLIK HER! => http://www.html.dk/tutorials


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-07 09:57

john wengel skrev:

> for i =0 to ubound(array,2)
>
> s=0
>
> for j=0 to ubound(array,2)
>
> if array(0,i)=array(0,j) then ' afhængig af hvor i array du har


Du sammenligner samtlige pladser med samtlige pladser - det giver
dels len(array) falske positive og dels en mængde overflødige
sammenligninger.

De falske positive kommer hver gang i er lig j - fx i allerførste
sammenligning:

   if array(0,0) = array(0,0)

De ekstra sammenligninger kommer fordi du overser at det er
underordnet hvilken rækkefølge man sammenligner to pladser i. Hvis
ordet på position 3 er det samme som ordet på position 17, er det
naturligvis også sandt at ordet på position 17 er det samme som
ordet på position 3.

En noget hurtigere algoritme (her med et endimensionelt array):

' Gennemløb hele arrayet i den yderste løkke
For i = 0 to Ubound(objArray)
   
   ' Gennemløb pladserne til højre for i i den indre løkke
   For j = (i + 1) to Ubound(objArray)
       If objArray(i) = objArray(j) Then
           counter = counter + 1
           description = description & "Ordet """ & _
               objArray(i) & """ fundet på indexNr " & _
               i & " og " & j & ".<br>"
       End If
   Next 'j
Next 'i

NB: Array er (også) en funktion i vbscript - man kan derfor ikke
anvende det som variabelnavn.
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

john wengel (22-01-2007)
Kommentar
Fra : john wengel


Dato : 22-01-07 12:24

Jens GyldenkærneClausen wrote in
dk.edb.internet.webdesign.serverside.asp:
> john wengel skrev:
>
> > for i =0 to ubound(array,2)
> >
> > s=0
> >
> > for j=0 to ubound(array,2)
> >
> > if array(0,i)=array(0,j) then ' afhængig af hvor i array du har
>
>
> Du sammenligner samtlige pladser med samtlige pladser - det giver
> dels len(array) falske positive og dels en mængde overflødige
> sammenligninger.
>
> De falske positive kommer hver gang i er lig j - fx i allerførste
> sammenligning:
>
>    if array(0,0) = array(0,0)
>
> De ekstra sammenligninger kommer fordi du overser at det er
> underordnet hvilken rækkefølge man sammenligner to pladser i. Hvis
> ordet på position 3 er det samme som ordet på position 17, er det
> naturligvis også sandt at ordet på position 17 er det samme som
> ordet på position 3.
>
> En noget hurtigere algoritme (her med et endimensionelt array):
>
> ' Gennemløb hele arrayet i den yderste løkke
> For i = 0 to Ubound(objArray)
>    
>    ' Gennemløb pladserne til højre for i i den indre løkke
>    For j = (i + 1) to Ubound(objArray)
>        If objArray(i) = objArray(j) Then
>            counter = counter + 1
>            description = description & "Ordet """ & _
>                objArray(i) & """ fundet på indexNr " & _
>                i & " og " & j & ".<br>"
>        End If
>    Next 'j
> Next 'i
>

> NB: Array er (også) en funktion i vbscript - man kan derfor ikke
> anvende det som variabelnavn.

Indrømmer at din metode er pænere.(selvom det ikke passer mig)
Det var underforstået at brugeren selv skriver navnet på sit array
der hvor jeg skrev array.






> --
> Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
> eller Brønshøj, max 6000 pr. måned.
> Kontakt pr. mail - nospam(at)gyros.dk
> Jens Gyldenkærne Clausen


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

john wengel (22-01-2007)
Kommentar
Fra : john wengel


Dato : 22-01-07 16:45


> En noget hurtigere algoritme (her med et endimensionelt array):
>
> ' Gennemløb hele arrayet i den yderste løkke
> For i = 0 to Ubound(objArray)
>    
>    ' Gennemløb pladserne til højre for i i den indre løkke
>    For j = (i + 1) to Ubound(objArray)


Hvis Ubound(objArray) giver samme værdi i begge løkker vil man få et
problem med den inderste tæller, der så skal tælle baglæns på et
tidspunkt !!!! (når i antager værdien ubound(objarray)




>        > Bolig søges. Andel eller leje i Emdrup, Nordvest,
Nørrebro, Søborg
> eller Brønshøj, max 6000 pr. måned.
> Kontakt pr. mail - nospam(at)gyros.dk
> Jens Gyldenkærne Clausen


--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-07 19:43

john wengel skrev:

> Hvis Ubound(objArray) giver samme værdi i begge løkker

Det skulle den gerne.

> vil man få et problem med den inderste tæller, der så skal tælle
> baglæns på et tidspunkt !

Nej - der er intet problem.

   For j = 2 to 1

- giver ikke nogen fejl, man kommer bare ikke ind i løkken (hvad
man heller ikke skal når man er nået til sidste element).

--
Jens Gyldenkærne Clausen
»Diplomatiet består netop i, at de gamle kommatister kan få lov til
at tro, at de har vundet. Men i virkeligheden har de tabt.«
Ole Togeby i Information

Leif Neland (22-01-2007)
Kommentar
Fra : Leif Neland


Dato : 22-01-07 23:31

john wengel wrote:
>> En noget hurtigere algoritme (her med et endimensionelt array):
>>
>> ' Gennemløb hele arrayet i den yderste løkke
>> For i = 0 to Ubound(objArray)
>>
>> ' Gennemløb pladserne til højre for i i den indre løkke
>> For j = (i + 1) to Ubound(objArray)
>
>
> Hvis Ubound(objArray) giver samme værdi i begge løkker vil man få et
> problem med den inderste tæller, der så skal tælle baglæns på et
> tidspunkt !!!! (når i antager værdien ubound(objarray)
>
Ok, så
' Gennemløb hele arrayet i den yderste løkke
For i = 0 to (Ubound(objArray) - 1)

' Gennemløb pladserne til højre for i i den indre løkke
For j = (i + 1) to Ubound(objArray)

Leif



john wengel (23-01-2007)
Kommentar
Fra : john wengel


Dato : 23-01-07 10:19


> >
> > Hvis Ubound(objArray) giver samme værdi i begge løkker vil man få et
> > problem med den inderste tæller, der så skal tælle baglæns på et
> > tidspunkt !!!! (når i antager værdien ubound(objarray)

Leif Neland wrote in dk.edb.internet.webdesign.serverside.asp:> >
> Ok, så
> ' Gennemløb hele arrayet i den yderste løkke
> For i = 0 to (Ubound(objArray) - 1)
>
> ' Gennemløb pladserne til højre for i i den indre løkke
> For j = (i + 1) to Ubound(objArray)
>
> Leif
>
> Ja, det ser ud til at virke efter hensigten !
Tak for svaret.

Jeg har brugt det første forslag jeg kom med, til at tælle hvor mange
poster
der er af hver slags i et 2 dimentionelt array (derfor startede tælleren
samme sted)

Anede ikke lige hvordan jeg ellers skulle gøre !

MVH
JOHN





--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Jens Gyldenkærne Cla~ (22-01-2007)
Kommentar
Fra : Jens Gyldenkærne Cla~


Dato : 22-01-07 09:35

Martin Yousif skrev:

> Er der nogen der har en idé til hvordan jeg kan teste om samme
> ord fremgår mere end 1 gang i mit array???

Hvad skal du bruge det til?

Det kan være at et dictionary-objekt er mere velegnet end dit array
- <http://www.w3schools.com/asp/asp_ref_dictionary.asp>
--
Bolig søges. Andel eller leje i Emdrup, Nordvest, Nørrebro, Søborg
eller Brønshøj, max 6000 pr. måned.
Kontakt pr. mail - nospam(at)gyros.dk
Jens Gyldenkærne Clausen

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste