Gå til innhold

Trenger skikkelig sorterings-hjelp her! [løst]


Anbefalte innlegg

Ok.. jeg har tentamen i programering imorra! vi har lov til å ha med koder vi har laget i løpet av året.

Så skulle jeg forberede meg litt da, og tok en titt på sånn repetisjons-oppgave! Der hadde lærær'n lagt ut en oppgave med sortering, så jeg rota opp det jeg hadde gjort på kapittel 10. legger ut det jeg fant!

Jeg håper virkelig noen kan hjelpe meg med dette! for jeg skjønner det ikke! :(

 

Hilsen Sindre

10.1.zip

Endret av RuZleBIFf
Lenke til kommentar
Videoannonse
Annonse

Hei, jeg går i samme klasse som sindre her. Og trenger hjelp til det samme. Kan legge ut oppgaveteksten her:

 

"a) Lag et program i Visual Basic der brukeren kan legge inn 8 årstall (fødselsår). Programmet skal kunne sortere disse årstallene i stigende rekkefølge. Bruk indeksert variabel!

 

b) Utvid programmet slik at brukeren kan legge inn 8 navn med tilhørende fødselsår. Programmet skal kunne regne ut gjennomsnittlig alder på personene og sortere de etter når de er født."

 

Jeg har klart første del sånn nogelunde. Men sliter litt med hukomelsen så siste del blir ganske vanseklig. Hadde vært flott om dere kunne hjelpe oss litt!

Lenke til kommentar

Dette er koden sålangt. Er en smule copy-paste fra andre oppgaver med personlig vri. Merk at dette bare er første del av oppgaven.

Option Base 1
Dim iÅr(8) As Integer
Dim iTeller As Integer
Dim iSumår As Integer

Private Sub cmdregistrer_Click()
If (Val(Text1.Text) >= 1800 And Val(Text1.Text) <= 2005) Then
       iTeller = iTeller + 1
       iÅr(iTeller) = Val(Text1.Text)
       iSumår = iSumår + iÅr(iTeller)
       Text1.Text = ""
       Text1.SetFocus
       
Else
MsgBox "Du lurer ikke meg, du må nok taste et annet årstall"
End If
End Sub

Private Sub cmdsorter_Click()
Dim iAktivTall As Integer
Dim iNesteTall As Integer
Dim iMellomlager As Integer

iAktivTall = 1
iNesteTall = 2

While iAktivTall < (iTeller - 1)
   While iNesteTall <= iTeller ' hvis ineste tall er mindre en det aktive, må de bytte plass
       
       If iÅr(iAktivTall) > iÅr(iNesteTall) Then
       iMellomlager = iÅr(iAktivTall)
       iÅr(iAktivTall) = iÅr(iNesteTall)
       iÅr(iNesteTall) = iMellomlager
       End If
       
       iNesteTall = iNesteTall + 1
   Wend
   
iAktivTall = iAktivTall + 1
iNesteTall = iAktivTall + 1
Wend

End Sub

Private Sub cmdVis_Click()
   Dim byMax As Integer
   Dim byMin As Integer
   Dim iVisTeller As Integer
   
   byMax = 1800
   byMin = 2005
   
   For iVisTeller = 1 To iTeller
       If iÅr(iVisTeller) > byMax Then
       byMax = iÅr(iVisTeller)
       End If
       If iÅr(iVisTeller) < byMin Then
       byMin = iÅr(iVisTeller)
       End If
   Next
   
   Print ("Max :" & Str(byMax))
   Print ("Min :" & Str(byMin))
   Print ("Gjennomsnitt: " & Format((iSumår / iTeller), "##0.00"))
   
   For iVisTeller = 1 To iTeller
       Print (iÅr(iVisTeller))
   Next
End Sub

Lenke til kommentar

Jonas: jeg har ikke sett på B enda, men jeg må skuffe deg og si at A er totalt feil! :p

Du skal ha en tekstboks, og en knapp som heter "Registrer" eller noe!

iTall(8) er en indeksert variabel! (pga "(8)")

I oppgave A skal du da skrive inn ett årstall i tekstboksen og trykke på knappen! da legges årstallet til i iTall(0), og neste årstall i iTall(1).

Så må du ha en knapp som printer ut dette.

Da skal den sortere årstallene i stigende rekkefølge, og printe dette i Formen!

Skjønner du??

Jeg hadde blitt sjeleglad hvis noen kunne fikset 10.1 som jeg la ut i første posten! for den er ikke så veldig feil! bare litt! :p

Lenke til kommentar
Whine whine,

jeg sitter jo ikke å gjør leksene deres.

Dere kan i det minste prøve først, men ok, jeg kan prøve å fikse det du postet.

Ikke bli sinna da *kose på jonas*

Jeg er iallfall veldig takknemmelig for at du faktisk gadd å hjelpe oss. Tror jeg har forstått min egen metode nå. Din metode var sikkert litt mer "proff", men den var litt over mitt nivå. Har skjønt litt av den og den fikk meg til å lese litt om Lists.

 

Så nok engang tusen milioner takk for hjelpen!

Lenke til kommentar

Okey, her er det noe med en reg-knapp.

Metoden kalles bubble sort. (Google for mer info)

 

Nå sorterer man etter tall, men å sortere etter tekst krever nesten inger endringer.

Bare bytt ut Årstall i denne linjen med Navn:

If Årstall(counter2) > Årstall(counter2 + 1) Then

c.zip

Lenke til kommentar
  • 2 uker senere...

Vel.. da var tentamen over, og jeg fikk beste karakter i klassen! hæhæ :D

5+ hvis noen lurte! (føler jeg har lov til å skryte litt! :innocent: )

men jeg tar å legger ut den sorterings-biten jeg leverte inn! :)

jeg beklager veldig rotete if-testing, men det falt meg rett og slett ikke inn å gjøre det annerledes! hehe.. funker da! ;)

(sorterings-biten ligger øverst under vis-knappen!)

3b.zip

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...