Registreer FAQ Ledenlijst Berichten van vandaag


Ga terug   Scholieren.com forum / School & Studie / Huiswerkvragen: Exacte vakken
Reageren
 
Topictools Zoek in deze topic
Oud 07-10-2007, 21:53
Gevederde
Gevederde is offline
Heeft er iemand hier verstand van programmeren met Visual Basic? Ik heb een matrix, waarbij ik de rijen met elkaar wil verwisselen waardoor de INDEXwaarde zo klein mogelijk wordt.

een willekeurig matrix als deze:
rij 1. 2 5 2 3 0 2
rij 2. 2 4 5 6 7 3
rij 3. 3 3 9 5 0 9
rij 4. 1 4 2 5 6 3
Ik kan in excel met visual basic een rij verwisselen met een andere rij. Nu wil ik alleen de vijf rijen in een zodanige volgorde zetten waardoor mijn INDEX formule de laagst mogelijke uitkomst geeft (het doet er even niet toe wat de INDEX formule is ) Dus kortom het kan zijn dat alle rijen verwisseld worden. Maar ik wil bv de uitkomst krijgen van de optimale positie van rij 1. En daarna apart nog een keer op dat moment (nadat rij 1 op die optimale positie is) de optimale positie van rij 2 bepalen etc. Het wordt dan uiteindelijk wss niet de optimale oplossing, maar iets dat er bij in de buurt komt (maar dat stond zo ook in mijn opdracht)

Hopelijk kan iemand mij hiermee helpen, en is het nog een beetje duidelijk
Alvast bedankt!
Met citaat reageren
Advertentie
Oud 08-10-2007, 21:32
ILUsion
Avatar van ILUsion
ILUsion is offline
Eigenlijk komt dit neer op de gekende sorteeralgoritmes; waarbij je dan gaat sorteren op die index-waarde. Het makkelijkste lijkt me een selection sort (voor een klein aantal maakt het meestal niet uit welk algoritme je gebruikt).

Op WikiPedia staat er meer uitleg, enkele heel simpele mogelijkheden zijn: http://en.wikipedia.org/wiki/Selection_sort en http://en.wikipedia.org/wiki/Insertion_sort

Waar de selection sort op neerkomt is eigenlijk het volgende (in Pascal-pseudocode)
Code:
FOR i := first TO last
  DO
    BEGIN
      min = index(i);
      FOR j := i + 1 TO last
        DO
           BEGIN 
             IF index(j) < min
               THEN
                 BEGIN
                   min:= index(j);
                   Swap(i,j);
                 END
           END;
    END;
Waarbij index() je functie is die je key berekent, en Swap(a,b) de rijen met nummer a en b omwisselt.

Afhankelijk van waarvoor het dient, is je werkwijze inderdaad misschien niet de meest optimale, lijkt me; maar het is voor heel wat werk optimaal genoeg Maar daarvoor is die index-formule dus onder andere wel van belang (net zoals je eigenlijke doel; al krijg je in informatica toch meestal geen al te moeilijke optimalisatieproblemen, als je backtracking gehad hebt, kan je dat ook altijd proberen).

Wat je ook altijd kan doen is, gewoon bij elke rij een extra kolom/rij maken en dan zal er in Excel wel een functie zitten die die rijen automatisch kan sorteren op die bepaalde index-kolom en daarna gooi je die kolom weer gewoon weg Dat gaat minder werk zijn (maar wel een beetje prutsen met die extra kolom).
__________________
vaknar staden långsamt och jag är full igen (Kent - Columbus)
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 04:02.