VB, POMOC!
Prikazujem rezultate 1 do 16 od 16

Tema: VB, POMOC!

  1. #1
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Question VB, POMOC!

    Pisem neki programcic u vb2005 pa sam zaglavio oko kombinacija! Naime, ako imam niz nekih brojeva od n elemenata, treba mi funkcija koja ce da izvrti sve moguce kombinacije k elemenata tog niza (n<k). Uvek imam problem posto neku kombinaciju izostavi!!!!
    Zahvaljujem unapred!!!



  2. #2
    Zainteresovan član
    Učlanjen
    18.07.2004.
    Poruke
    118
    Reputaciona moć
    50

    Podrazumevano Re: VB, POMOC!

    cek malo - VB2005?
    jel ti to mislis na Visual Basic, jer ako mislis, koliko ja znam takav ne postoji... jel mozda mislis na VB 5.0 ili tako nesto... ne znam...
    Hello my bebe,
    h, my sugar.
    **** you sweet.

  3. #3
    Neproveren član MasterYoda (avatar)
    Učlanjen
    18.08.2006.
    Pol
    muški
    Lokacija
    Very Far Away from Anywhere Else
    Poruke
    4.260
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Metod grube sile je postavljanje n ugnježdenih for petlji (sad će bojan da vrisne zbog trošenja resursa).
    Prva petlja ide od 1 do (k-n+1), druga od 2 do (k-n+2) ..., n-ta od n do (k-n+n) tj do k.
    [php]
    for i1 = 1 to (k-n+1)
    for i2 = 2 to (k-n+2)
    for i3 = 3 to (k-n+3)
    ....
    for in = n to k
    'niz brojeva i1, i2, i3,..., in predstavlja jednu kombinaciju
    'ovdje ide prikaz kombinacije na način koji ti odgovara
    next in
    ....
    next i3
    next i2
    next i1
    [/php]
    Poslednji put ažurirao/la MasterYoda : 14.05.2007. u 21:14

  4. #4
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: VB, POMOC!

    Pisem neki programcic u vb2005 pa sam zaglavio oko kombinacija! Naime, ako imam niz nekih brojeva od n elemenata, treba mi funkcija koja ce da izvrti sve moguce kombinacije k elemenata tog niza (n<k). Uvek imam problem posto neku kombinaciju izostavi!!!!
    [font=Verdana]Biće da ovde ima neke greške. Valjda imaš ukupno k elemenata i trebaju ti sve kombinacije n elemenata ili je (k < n).

    @MasterYoda
    Manje više resursi, ali problem s ovim rešenjem je što unapred mora da se zna broj elemenata kombinacije.
    [/font]

  5. #5
    Neproveren član MasterYoda (avatar)
    Učlanjen
    18.08.2006.
    Pol
    muški
    Lokacija
    Very Far Away from Anywhere Else
    Poruke
    4.260
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Ups, nisam ni primijetio ovu zamjenu simbola. U onim gornjim petljama treba zamijeniti simbole n i k.

    @bojan da, naravno. Samo, oni koji traže da im se nekako pomogne trebali bi barem pitanje postaviti precizno. Neće im niko ukrasti neku blistavu ideju pa da kriju detalje.

  6. #6
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Da, ok, zamenio sam n i k (k<n)!! Hvala!
    Visual basic 2005 postoji, kao i Visual studio 2005! Ne odgovaraju mi ugnježdene petlje jer ne znam koliko su n i k! Ja sam nesto uradio, prilazem, ali se postavlja pitanje sta ako su elementi niza isti??? Nece vratiti sve kombinacije! Naravno, nista ne krijem, i ja sam tu da bih nekome pomogao, ako treba!!!

    [PHP]Function sledKombinacija(ByVal n As Integer, ByRef k As Integer, ByVal komb() As Double, ByRef pomocniNiz() As Double) As Integer
    Dim l As Integer = k
    Dim x As Double
    Dim i, y As Integer


    Do While (l > 0 And komb(l) = pomocniNiz(n))
    l = l - 1
    n = n - 1
    Loop
    If (l < 1) Then
    Return 0
    End If

    x = komb(l)
    For i = 1 To n
    If pomocniNiz(i) = x Then
    y = i
    End If
    Next

    Do
    komb(l) = pomocniNiz(y + 1)
    y = y + 1
    l = l + 1
    Loop While l <= k
    Return 1

    End Function[/PHP]
    Poslednji put ažurirao/la pex35 : 15.05.2007. u 15:30

  7. #7
    Neproveren član MasterYoda (avatar)
    Učlanjen
    18.08.2006.
    Pol
    muški
    Lokacija
    Very Far Away from Anywhere Else
    Poruke
    4.260
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Ne vraća sve kombinacije? Izvini, ali koliko mogu vidjeti onako na brzinu, ovo parče koda koje si dao ne vraća ništa.

    I jedan savjet koji sam do sada dao mnogima: probaj izbjegavati malo slovo l u imenima. To je izvor čestih grešaka koje se teško otkrivaju.

  8. #8
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Probaj,
    ako je pomocniNiz niz sa od n elemenata, u nizu komb dobijam sve kombinacije od k elemenata, s tim da se pre toga niz komb napuni sa prvih k elemenata niza pomocniNiz!! Mozda zvuci malo komplikovano ali nije. I pomocu ove f-je u nizu komb dobijam sigurno sve kombinacije!!! Jedino dolazi do greske ako su elementi isti!! To sam resio tako sto sam sve iste elemente povecao za 0.00001 ali to nije lepo resenje pa sam zbog toga pitao da li neko zna neku bolju f-ju!
    Hvala za savet!!! :razz:

  9. #9
    Neproveren član MasterYoda (avatar)
    Učlanjen
    18.08.2006.
    Pol
    muški
    Lokacija
    Very Far Away from Anywhere Else
    Poruke
    4.260
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    A gdje si podacima napunio taj pomocniniz? Vidim deklaraciju niza, vidim da iz njega uzimaš elemente, ali ne vidim da si nešto u taj niz upisao.

  10. #10
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Citat Original postavio MasterYoda
    A gdje si podacima napunio taj pomocniniz? Vidim deklaraciju niza, vidim da iz njega uzimaš elemente, ali ne vidim da si nešto u taj niz upisao.
    OK, elementi niza se unose preko interfejsa, znaci, korisnik unosi koji sistem hoce (npr. 3/7) a zatim mu se otvara 7 text boxova gde unosi elemente (problem je jos i slozeniji, postoji vise sistema koji se kombinuju), ali to sam odradio. Ja pokupim ono sto je on uneo, u mom slucaju kvote (kladionicarski problem), smestim u pomocniNiz i racunam. Da bih izracunao ukupnu kvotu, moram imati kombinaciju svaka tri elementa od 7. Ostalo znas, jedini problem su iste kvote.
    Poslednji put ažurirao/la pex35 : 18.05.2007. u 13:43

  11. #11
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: VB, POMOC!

    [font=Verdana]Zašto su jednake kvote problem? Ako su svih 7 kvota jednake onda su sve kombinacije od 3 elementa jednake, bar što se tiče vrednosti kvota, ali su one s matematičke tačke gledišta različite jer prva kombinaciju čine prvi, drugi i treći element, drugu prvi drugi i četvrti i tako dalje.[/font]

  12. #12
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Pogledaj ovaj deo koda:

    x = komb(l)
    For i = 1 To n
    If pomocniNiz(i) = x Then
    y = i
    End If
    Next

    Ako su kvote iste, y ce da uzme vece i, pa tako preskace kombinaciju!

  13. #13
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: VB, POMOC!

    [font=Verdana]Nisam komentarisao kod, već problem. Da pojednostavim pitanje. Ako imaš sledeće elemente: (1, 1, 2, 3), da li su ti potrebne sve sledeće naveden kombinacije od dva elementa ili ne?

    (1, 1) (1, 2) (2, 3)
    (1, 2) (1, 3)
    (1, 3)

    Ovo je inače neuređeni izbor bez ponavljanja, bozirom da na osnovu postavke problema ureženi izbor nema smisla, a ni ponavljanje nije dozvoljeno.
    [/font]

  14. #14
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    Da, sve te kombinacije!

  15. #15
    Iskusan
    Učlanjen
    06.12.2004.
    Poruke
    5.596
    Reputaciona moć
    103

    Podrazumevano Re: VB, POMOC!

    [font=Verdana]Evo klase u Java programskom jeziku koja radi tačno to što ti treba.[/font]
    Kod:
    //--------------------------------------
    // Systematically generate combinations.
    //--------------------------------------
    
    import java.math.BigInteger;
    
    public class CombinationGenerator {
    
      private int[] a;
      private int n;
      private int r;
      private BigInteger numLeft;
      private BigInteger total;
    
      //------------
      // Constructor
      //------------
    
      public CombinationGenerator (int n, int r) {
        if (r > n) {
          throw new IllegalArgumentException ();
        }
        if (n < 1) {
          throw new IllegalArgumentException ();
        }
        this.n = n;
        this.r = r;
        a = new int[r];
        BigInteger nFact = getFactorial (n);
        BigInteger rFact = getFactorial (r);
        BigInteger nminusrFact = getFactorial (n - r);
        total = nFact.divide (rFact.multiply (nminusrFact));
        reset ();
      }
    
      //------
      // Reset
      //------
    
      public void reset () {
        for (int i = 0; i < a.length; i++) {
          a[i] = i;
        }
        numLeft = new BigInteger (total.toString ());
      }
    
      //------------------------------------------------
      // Return number of combinations not yet generated
      //------------------------------------------------
    
      public BigInteger getNumLeft () {
        return numLeft;
      }
    
      //-----------------------------
      // Are there more combinations?
      //-----------------------------
    
      public boolean hasMore () {
        return numLeft.compareTo (BigInteger.ZERO) == 1;
      }
    
      //------------------------------------
      // Return total number of combinations
      //------------------------------------
    
      public BigInteger getTotal () {
        return total;
      }
    
      //------------------
      // Compute factorial
      //------------------
    
      private static BigInteger getFactorial (int n) {
        BigInteger fact = BigInteger.ONE;
        for (int i = n; i > 1; i--) {
          fact = fact.multiply (new BigInteger (Integer.toString (i)));
        }
        return fact;
      }
    
      //--------------------------------------------------------
      // Generate next combination (algorithm from Rosen p. 286)
      //--------------------------------------------------------
    
      public int[] getNext () {
    
        if (numLeft.equals (total)) {
          numLeft = numLeft.subtract (BigInteger.ONE);
          return a;
        }
    
        int i = r - 1;
        while (a[i] == n - r + i) {
          i--;
        }
        a[i] = a[i] + 1;
        for (int j = i + 1; j < r; j++) {
          a[j] = a + j - i;
        }
    
        numLeft = numLeft.subtract (BigInteger.ONE);
        return a;
    
      }
    }
    [font=Verdana]
    Ne bi trebalo da imaš neki problem da algoritam dat u metodi getNext[/font][font=Verdana] napišeš u VB-u.[/font]

  16. #16
    Početnik
    Učlanjen
    14.05.2007.
    Pol
    muški
    Poruke
    44
    Reputaciona moć
    0

    Podrazumevano Re: VB, POMOC!

    OK, hvala na pomoci i trudu. Radio sam malo u JAVI pa nece biti nikakav problem.

Slične teme

  1. POMOC! Potrebne slike igracha Crwene Zvezde .POMOC
    Autor Interista u forumu Fudbal
    Odgovora: 4
    Poslednja poruka: 20.03.2007., 16:40
  2. !! POMOC !! Dodatna antena za mobilni telefon !! POMOC !!
    Autor ludak1985 u forumu Mobilna telefonija
    Odgovora: 7
    Poslednja poruka: 27.08.2005., 00:10
  3. pomoc pomoc yahoo mail i krstarica pricaonica
    Autor copex u forumu Sigurnost i zaštita
    Odgovora: 1
    Poslednja poruka: 10.11.2004., 23:46

Pravila za slanje poruka

  • Ne možete kreirati novu temu
  • Ne možete poslati odgovor
  • Ne možete dodati priloge
  • Ne možete prepraviti svoju poruku
  •