Avatar billede pernillemb Nybegynder
30. maj 2002 - 13:15 Der er 12 kommentarer og
2 løsninger

Problemer med at skrive kode i VBA

Jeg har nogle data, f.eks.

nr        Rækkefølge
1  x1 y1      a
2  x2 y2      b
3  x3 y3      c
4  x4 y4      d
5  x5 y5      e
6  x6 y6      f

hvor rækkefølge er en bestemt rækkefølge jeg har fundet disse punkter skal komme i. Jeg vil dog gerne bevare den oprindelige rækkefølge, derfor er det skrevet i en separat kolonne.

Nu vil jeg gerne have skevet en kode der ser nogenlunde således ud:

A = tilfældigt tal (a-f)
Do
  B = tilfældigt tal (a-f)
Loop until B > A
C = sqr((XA - XB+1)^2 + (YA - YB+1)^2)
D = sqr((XB - XA+1)^2 + (YB - YA+1)^2)

Så skal den nye rækkefølge regnes ud:
Eks.
Hvis A = a og B = e
Før Nu
a  a (= A)
b  e (= B)
c  d
d  c
e  b (= A + 1)
f  f (= B + 1)
dvs at efter A så skal den "tælle" fra B og baglens til A+1 hvorefter den skal fortsætte fra B+1 og fremefter som det var før.

Jeg håber det er nogenlunde forståeligt.
Håber på hurtigt svar.

Pernille
Avatar billede pernillemb Nybegynder
30. maj 2002 - 13:50 #1
Er der slet ingen, der kan komme med et bud på, hvordan jeg kommer videre??????  Please!
Avatar billede martin_moth Mester
30. maj 2002 - 13:55 #2
Jeg overvejede at forsøge - men gik i stå, da jeg ikke forstår hvad du vil. Sikkert fordi jeg ikke læser det godt nok. Men hvad er XA, XB... for nogle størrelser? (Bemærk - kommentar, ikke svar;-)
Avatar billede pernillemb Nybegynder
30. maj 2002 - 13:58 #3
Hvis A = 1, så er vil xA = x1 og xA+1 = x2 osv.

Du må meget gerne kigge på det. Jeg bliver nødt til at smutte i 2-3 timer, hvis du vil kigge på det imens??? Så vil jeg blive MEGET glad, da det er til en opgave der skal afleveres i morgen!
Pernille
Avatar billede pernillemb Nybegynder
30. maj 2002 - 16:36 #4
Så er jeg tilbage...
Håber der er nogle, der har haft lyst til at kigge på mit problem... ;-)
Avatar billede martin_moth Mester
30. maj 2002 - 16:41 #5
Alle de X, Y, A, B ... forvirrer mig. Kan du ikke mere generelt fortælle hvad du vil - noget med at smide nogle tal i et array eller? Jeg må indrømme at jeg er for doven til at prøve at gennemskue hvad du mener (beklager :o). Men kan du fortælle, at du har et eller flere arrays som du vil gøre noget bestemt med, eller på enden måde formulere opgaven mere generelt (måske endda gengive den opgavetekst du har fået?), kan jeg måske hjælpe lidt mere (måske - holder "fri i aften, og den skal jo afleveres i morgen..)

Og bare nysgerrig - "opgave" - tager du et kursus i VBA til Excel eller (går ud fra at vi snakker VBA i Excel ;o)
Avatar billede martin_moth Mester
30. maj 2002 - 16:51 #6
Mon ikke dit spørgsmål har noget med http://www.eksperten.dk/spm/218178 at gøre - det havde jeg ikke set før nu...
Avatar billede pernillemb Nybegynder
30. maj 2002 - 16:54 #7
Jo, det er VBA i Excel, vi snakker om!
Og jo, det har også meget med det pågældende spørgsmål at gøre.

Det er en opgave i forbindelse med mit studie (Cand.Merc.) hvor vi skal kode nogle "nearest neighbor-" samt "2-opt-" heuristikker ud fra nogle datasæt.  Da jeg aldrig rigtigt har leget meget med VBA (eller VB for den sags skyld) er det lidt svært for mig at kode.  Jeg kan sagtens fortælle dig (i ord) hvordan og hvorledes det hele skal hænge sammen, men så snart VBA skal kodes så går det galt.

Jeg vil meget gerne sende dig min datafil samt en oversigt over, hvordan det hele hænger sammen (altså i ord), hvis du vil kigge på det.

Jeg ville blive enormt glad, hvis der var en eller anden der kunne hjælpe mig ud af den lille krise, jeg sidder i lige nu!?!

Pernille
Avatar billede martin_moth Mester
30. maj 2002 - 17:08 #8
Jeg er ret sikker på at det er ret simpelt at løse dit problem - hvis man ellers kan forstå det. Havde tjacob eller en af de andre ikke allerede sendt noget der virkede til dig? Men selvfølgeligt er det svært for dig, hvis du ikke så godt kender VB. Og for mig, når jeg ikke forstår hvad du vil...

Du har fanget mig på et uheldigt tidspunkt, for jeg har ikke mere tid i dag. Og under alle omstændigheder bruger jeg sjældent alt for mange halve timer på andres problemer, med mindre det er noget jeg selv kan lære noget af. Sååå - med mindre det kan vente, så får du nok ikke 13 i morgen (med mindre andre kommer til - der er jo mange venlige kloge hoveder herinde ;o)

Hvis du går helt i panik, så send en email i aften på martin_moth@yahoo.com, så kan jeg MÅSKE kikke på et - jeg lover ingenting... ;o) Held og lykke.
Avatar billede pernillemb Nybegynder
30. maj 2002 - 17:15 #9
Ok. Men alligevel tak for "opmærksomheden" og fordi du prøvede.
Avatar billede tjacob Juniormester
30. maj 2002 - 19:09 #10
Hvis nu f.eks. A = c og B = e  hvad så?

c  <-A
e  <-B
d  <-nedad fra B til A
f  <-rækken fortsætter fra B til slutbogstav (f)
a  <-og begynder forfra igen
b  <-sidste er bogstavet før A

Er det korrekt?

/tjacob
Avatar billede pernillemb Nybegynder
30. maj 2002 - 22:51 #11
Hvis A=c og B=e så skal rækkefølgen se således ud:

a
b
c (=A)
e (=B)
d (=A+1)
f (=B+1)

Håber det er mere forståeligt nu.
Avatar billede tjacob Juniormester
31. maj 2002 - 10:36 #12
Nu er det sikkert for sent, men her er en løsning ;-)

Du indlæser den oprindelige rækkefølge i et array (arrOrg).
Med koden indlæses den nye rækkefølge i arrNew. Derefter
skriver du arrNew til regnearket. Dette eksempel har 10 elementer, men
det kan du jo bare rette.

    Dim ArrOrg(1 To 10), arrNew(1 To 10)
    Dim i, Rnd1, Rnd2, c

    'her skal du indlæse værdierne til arrOrg()

    Randomize
    Rnd1 = Int(9 * Rnd + 1)            'Rnd1 går fra 1 til 9
    Rnd2 = Int((10 - Rnd1) * Rnd + Rnd1 + 1)    'Rnd2 går fra Rnd1 til 10

    For i = 1 To 10            'først kopieres hele arrayet
        arrNew(i) = ArrOrg(i)
    Next i
    c = 0
    For i = Rnd1 + 1 To Rnd2    'her indlæses stumpen i omvendt rækkefølge
        arrNew(i) = ArrOrg(Rnd2 - c)
        c = c + 1
    Next i

    'her skrives arrNew() til regnearket

/tjacob
Avatar billede pernillemb Nybegynder
31. maj 2002 - 16:49 #13
Ja, som du selv skriver er det for sent...nu har jeg afleveret opgaven, selvom den ikke blev særlig god! :-( Surt show! Nå, men jeg synes alligevel du skal have lidt point for dit svar og som tak for din hjælp.
Avatar billede tipsen Nybegynder
06. november 2002 - 16:17 #14
Pernille: Når du, både indenfor planlægning og finansiering, skal implementere algoritmer som er stærkt afhængige af tilfældige tal må du *aldrig* bruge de rand() funktioner som er indbygget i programmeringssprogene!!!

Kvaliteten af de tilfældige tal der genereres af disse funktioner er *meget* dårlig, så hvis du skal bruge noget med tilfældige tal i fremtiden (måske til dit speciale!) vil jeg anbefale dig at kigge på hjemmesiden for Numerical Recipes: http://www.library.cornell.edu/nr/bookcpdf.html - under kapitel 7 står der noget om at generere tilfældige tal - der er også kodeeksempler i C.

Mvh

TIpsen

NB: Både Tor, Ole og Niels-Christian ved mere om dette ;-)
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