Avatar billede dcasso Nybegynder
05. januar 2002 - 16:43 Der er 11 kommentarer og
1 løsning

Kombinatorik

Hejsa

Jeg skal lave en funktion som kan kombinere op til 20 tal i den forstand at den skal lave samtlige kombinationer.

Eks. på funktionen ved indtastning af tre tal skal være:
Kaldfunktion 2, 4, 16
Resultat 2, 4, 16, 6, 18, 20, 22

Altså laver den internt
Kaldfunktion Tal1, Tal2, Tal3
Udskriv Tal1
Udskriv Tal2
Udskriv Tal3
Udskriv Tal1 + Tal2
Udskriv Tal1 + Tal3
Udskriv Tal2 + Tal3
Udskriv Tal1 + Tal2 + Tal3

Nogle der kender eller kan lave en metode hvorpå dette gøres automatisk, kompleksisteten opstår jo pga. den skal kunne klare op til 20 tal, løsningen skal helst være dynamisk da der muligvis bliver behov for at udvide til 25 - 30 tal.

Mvh
Dennis
Avatar billede koldstar Nybegynder
05. januar 2002 - 20:03 #1
string1 = \"1,2,3\" \'string1 skal bare hente sine oplysninger fra en form el. lign. ;o)

array1 = Split(string1,\",\")

for a = LBound(array1) to UBound(array1)
    response.write array1(a)
next

For i = LBound(array1) to UBound(array1)
    For j = (i+1) to UBound(array1)
        response.write array1(i) + array1(j) & \"\' \"
    next   
Next

\'jeg vil tro at det virker. jeg har bare ikke lige mulighed for at teste det
Avatar billede koldstar Nybegynder
05. januar 2002 - 20:09 #2
det med kommaerne skulle jo være sådan ;o)

array1 = Split(string1,\",\")

for a = LBound(array1) to UBound(array1)
    response.write array1(a)& \", \"
next

For i = LBound(array1) to UBound(array1)
    For j = (i+1) to UBound(array1)
        response.write array1(i) + array1(j) & \", \"
    next   
Next
Avatar billede dcasso Nybegynder
05. januar 2002 - 21:20 #3
Hej Koldstar

Det er da i hvert fald i den rigtige retning, problemet er bare at ved eksempelvis tallene 1, 2, og 4.
Giver den tilbage 1, 2, 4, 12, 14, 24. Men den giver ikke værdien hvis alle tre sættes sammen, altså 124.

Har du en ide til hvordan man får den til at fortsætte med interne loops i de niveauer der måtte optræde eks. ved 7 indtastede værdier vil også kombinationen af alle 7 komme frem?
Avatar billede koldstar Nybegynder
06. januar 2002 - 16:41 #4
det kan jeg godt se ;o)

du skriver i starten at den skal lægge tallene sammen. det jeg har lavet sætter dem jo sammen som strings altså 1+2 = 12 istedet for 3. det er selvfølgelig en fejl.
men nu skriver du jo at de lige pludselig skal sættes sammen som strenge.... ???

hvis det er det første problem stadigvæk burde det kunne løses ved at lave den anden response.write sætning om til :

response.write (int(array1(i)) + int(array1(j))) & \", \"
   
og hvis det ikke virker så:

a = int(array1(i))
b = int(array1(j))
c = a + b
response.write str(c) & \", \"

men vi skal nok lige blive enige om hvordan du vil have sat tallene sammen først.... som tal eller tegn ;o)
Avatar billede koldstar Nybegynder
06. januar 2002 - 16:45 #5
str hedder egentlig nok cstr istedet.
Avatar billede koldstar Nybegynder
06. januar 2002 - 16:49 #6
hov... selvom det er tal har du jo ret i at den stadig mangler at sætte 3 eller fler tal sammmen.

den skal jeg lige tænke lidt over


Avatar billede dcasso Nybegynder
06. januar 2002 - 17:02 #7
Det var sådan set at lægge tal sammen (men det var jo underordnet, da det nemt kunne rettes), men jeg har ikke kunne gennemskue det med at dan skal kunne læge 3 eller flere sammen.

Jeg mistænker dog at der skal laves noget rekusion som indeholder en løkke der kører næste niveau (altså det at lægge 3, 4 osv. sammen). Men det er bare et gæt.

Jeg er virkelig på dybt vand med dette problem
Avatar billede dcasso Nybegynder
07. januar 2002 - 22:45 #8
Hej koldstar

Jeg har valgt at afvise dit svar, men jeg håber da stærk du får en ide til hvordan det skal løses.
Avatar billede koldstar Nybegynder
08. januar 2002 - 15:39 #9
du har nok ret. Nu har jeg siddet og prøvet at få det lavet med rekursive kald. jeg kan bare ikke lige få det til at virke uden at det bliver ligeså besværligt som at lave 20 for løkker.....men jeg lytter lige med hvis der skulle komme en med et svar....
Avatar billede dcasso Nybegynder
08. januar 2002 - 19:06 #10
hvis du har nogle startideer (selvom de er komplicerede) vil jeg meget gerne se på dem, så kan jeg jo prøve at arbejde lidt videre.

Avatar billede tommy_carstensen Nybegynder
19. august 2004 - 21:03 #11
Husk at lukke dit spørgsmål!
Avatar billede dcasso Nybegynder
17. oktober 2004 - 21:46 #12
Må vist hellere få lukket spørgsmålet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester