/ 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
Telefonkæde
Fra : Jesper Stocholm


Dato : 24-10-01 11:17

Jeg har en telefonkæde, der er datamæssigt struktureret som et binært træ -
dvs. således at hver deltager skal ringe til max to andre deltagere:

ID Opkald fra
-------------
1 0
2 1
3 1
4 2
5 2
6 3
7 3
8 4
9 4
10 5
11 5

men hvordan får jeg udskrevet disse data, så det kommer til at fremstå som

1
2 3
4 5 6 7
7 8 10 11

eller formatteret:

1
2 3
4 5 6 7
7 8 10 11

?

Jeg har kigget lidt på logaritme-funktionen ... men jeg kan ikke få det til
at virke ...
--
Er du også irriteret over, at din lokale grønthandler ikke slår dine varer
ind på kasseapperatet - og dermed undrager sig moms ? Så bed om en bon.

- Jesper Stocholm - http://stocholm.dk

 
 
Thomas Rathcke (24-10-2001)
Kommentar
Fra : Thomas Rathcke


Dato : 24-10-01 22:42

"Jesper Stocholm" <spam@stocholm.dk> skrev i en meddelelse
news:Xns91447CE657206spamstocholmdk@192.38.208.81...
> Jeg har en telefonkæde, der er datamæssigt struktureret som et binært
træ -
> dvs. således at hver deltager skal ringe til max to andre deltagere:
<SNIP>
> men hvordan får jeg udskrevet disse data, så det kommer til at fremstå som
>
> 1
> 2 3
> 4 5 6 7
> 7 8 10 11

Så vidt jeg kan se (idet jeg retter din slåfejl, så tredje række starter med
ID=8) skal du beregne første ID i hver linje efter nedenstående formel.
Samtidig kan antallet af deltagere i hver række også beregnes efter samme
formel, hvilket du får brug for, hvis du vil formattere kæden op i kolonner
i en tabel

ID = 2 ^ (rækkenummer - 1) = antal deltagere i rækken


Du burde så v.hj. af et loop, der løber dit recordset igennem, og en
integreret tæller kunne udskrive din telefonkæde. Måske lidt a la følgende
(utestet):

<%
raekke = 0
do while not rs.eof
raekke = raekke + 1
startID = 2 ^ (række - 1)
' sidste deltager, der skal skrives i den aktuelle række, er den, der står
umiddelbart før den første i næste række
slutID = (2 ^ række) - 1

for taeller = startID to slutID
if rs.eof then
exit for
else response.write(rs(taeller) & "&nbsp;")
rs.movenext
end if
next
response.write("<BR>")
loop
%>

Jeg vil gerne høre, om det virker...

Med venlig hilsen
Thomas Rathcke



Thomas Rathcke (25-10-2001)
Kommentar
Fra : Thomas Rathcke


Dato : 25-10-01 02:30

Nu har jeg tænkt mig lidt om, og her er så hvordan man kan formattere
telefonnumrene op i kolonner i en tabel. Først skal man finde ud af, hvor
mange rækker og kolonner, tabellen skal have.

Antallet af rækker findes på baggrund af det højeste ID efter formlen
antal rækker = int( ln(højeste ID) / ln(2) + 1 )

Når man dermed ved, hvor mange rækker, man skal bruge, beregner man som i
mit tidligere indlæg hvor mange kolonner, tabellen skal bruge, hvilket
svarer til antallet af deltagere i telefonkædens sidste række med formlen
kolonner = antal deltagere i rækken = 2 ^ (antal rækker - 1)

Man kan nu formattere telefonkæden op i en html-tabel med flg. kode. Jeg
husker ikke lige, hvordan man finder det højeste ID i rs (i tredje linje),
men den kan du sikkert selv finde frem til. Resten virker efter hensigten:


<TABLE border=1>
<%
raekker = int( log(rs.???) / log(2) + 1 )
kolonner = 2 ^ (raekker - 1)

raekke = 0
do while not rs.eof
raekke = raekke + 1
startID = 2 ^ (raekke - 1)
slutID = (2 ^ raekke) - 1

response.write("<TR>")
for taeller = startID to slutID
if rs.eof then
exit for
else
aktuelBredde = kolonner / startID
response.write("<TD align=center colspan=" & aktuelBredde & ">")
response.write(rs("hvaddunuvilhave"))
response.write("</TD>")
rs.movenext
end if
next
response.write("</TR>")
loop
%>
</TABLE>


Med venlig hilsen
Thomas Rathcke



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

Månedens bedste
Årets bedste
Sidste års bedste