Avatar billede kovalt Nybegynder
01. september 2003 - 13:10 Der er 5 kommentarer og
2 løsninger

fremstille samtlige kombinationer

Hej alle sammen

  Jeg har en tekststreng som eksempelvis kunne være 4-3 eller 5-3.

Ud fra dette skal jeg ha fremstillet samtlige kombinationer med 3 ud af 4 eller 3 ud af 5. Eks.

3 ud af 4

1,2,3
1,2,4
1,3,4
2,3,4

3 ud af 5

1,2,3
1,2,4
1,2,5
1,3,4
1,3,5
1,4,5
2,3,4
2,3,5
2,4,5
3,4,5

om ovenstående bliver smidt i et array eller om det bliver udskrvet i form af en text-streng er underordnet. Det er vigtigt at funktionen ikke er begrænset til de to overforstående eksempler, idet input-strengen i princippet skal kunne antage en uendelig stor talkombination.
/kovalt
Avatar billede nmh Nybegynder
01. september 2003 - 16:21 #1
Her er et Visual Basic program, der gør det du ønsker.
Jeg laver det om lidt om til et VBscript-program.
Se i øvrigt her:
http://www.eksperten.dk/spm/374314

'Dette VB-program lister alle kombinationer,
'der består af p tegn valgt blandt n tegn.
'Tegnene er her ABCDEFG...
'Kombinationerne gemmes i tekststrengen R adskilt af komma.

Option Explicit
Dim n As Byte, p As Byte, R As String
Const Tegn = "ABCDEFGHIJKLMNO"
Sub Komb(ByVal pos As Byte, ByVal sum As Byte, med As Boolean, ByVal s As String)
  If med Then
    s = s & Mid(Tegn, pos, 1): sum = sum + 1
  End If
  If sum < p And pos < n Then
    Komb pos + 1, sum, False, s
    Komb pos + 1, sum, True, s
  End If
  If sum = p Then R = R & s & " , "
End Sub


Private Sub Form_Load()
  n = 5: p = 3
  Komb 1, 0, False, ""
  Komb 1, 0, True, ""
  MsgBox R
End Sub
Avatar billede nmh Nybegynder
01. september 2003 - 16:35 #2
Her er så et VBscript-program der gør det samme. Jeg har valgt bogstaver i stedet for tal. Vi skal jo have nogle tegn at vise frem, og der er jo kun 10 taltegn.

Option Explicit
Dim n, p, R
Const Tegn = "ABCDEFGHIJKLMNO"
Sub Komb(ByVal pos, ByVal sum, med, ByVal s)
  If med Then
    s = s & Mid(Tegn, pos, 1): sum = sum + 1
  End If
  If sum < p And pos < n Then
    Komb pos + 1, sum, False, s
    Komb pos + 1, sum, True, s
  End If
  If sum = p Then R = R & s & " , "
End Sub


Private Sub Form_Load()
  n = 5: p = 3
  Komb 1, 0, False, ""
  Komb 1, 0, True, ""
  MsgBox R
End Sub
Avatar billede nielle Nybegynder
02. september 2003 - 18:19 #3
<%
TekstStreng = "5-3"

Pos = InStr(TekstStreng, "-")
StoersteVaerdi = Left(TekstStreng, Pos-1)  ' Værdien 3
Antal = Right(TekstStreng, Len(TekstStreng)-Pos)  ' Værdien 5

Response.Write(Antal & " ud af " & StoersteVaerdi & "<br>")

call Kombinationer(Antal, 1, StoersteVaerdi-Antal+1, "")

sub Kombinationer(LokalAntal, LokalLavesteVaerdi, LokalStoersteVaerdi, LokalResultat)
  for Vaerdi = LokalLavesteVaerdi to LokalStoersteVaerdi
    NytLokalResultat = LokalResultat & " " & Vaerdi
    if LokalAntal > 1 then
      call Kombinationer(LokalAntal-1, Vaerdi+1, LokalStoersteVaerdi+1, NytLokalResultat)
    else
      Response.Write(NytLokalResultat & "<br>")
    end if
  next
end sub
%>
Avatar billede nmh Nybegynder
02. september 2003 - 19:52 #4
Jeg ser jeg glemte at lave det sidste fra Visual Basic om. Her er det med en lille ændring:

Option Explicit
Dim n, p, R
Const Tegn = "ABCDEFGHIJKLMNO"
Sub Komb(ByVal pos, ByVal sum, ByVal med, ByVal s)
  If med Then
    s = s & Mid(Tegn, pos, 1): sum = sum + 1
  End If
  If sum < p And pos < n Then
    Komb pos + 1, sum, False, s
    Komb pos + 1, sum, True, s
  End If
  If sum = p Then R = R & s & " , "
End Sub


  'Kombinationer hvor p tegn skal udtages fra n tegn
  'Kombinationerne bliver gemt i tekststrengen R adskilt
  'af komma alså ABC, ADC,...
  n = 5: p = 3
  Komb 1, 0, False, ""
  Komb 1, 0, True, ""
  'Nu ligger resultatet i R. KAn udskrives med MsgBox R, hvis
  'du kører det som et VBscript. Eller med
  'Response.write(R) fra en asp-side.
Avatar billede nmh Nybegynder
15. september 2003 - 14:49 #5
Hvordan går det med projektet?
Avatar billede kovalt Nybegynder
08. oktober 2003 - 09:41 #6
Jeg har endnu ikke haft tid til at få kigget på det... men jeres svar ligner noget jeg kan bruge... jeg deler points.

Tak for hjælpen
Avatar billede nmh Nybegynder
08. oktober 2003 - 10:54 #7
selv tak, det var så lidt. Takker for point.
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