Archief - VB.net Array

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Wanted

Legacy Member
Examen Vb komt eraan dus ben ik wat aan't prutsen met oefeningen te maken.

Nu zit ik met een probleem om een array te vullen.
Het algoritme volgens mij:
- Je leest de geboortedatum in, bv 1980 uit een sequentieel bestand
- Daar trek je 1900 van af, dan kunnen uw aantal ingangen nog 111 zijn (vermits we nu in 2011 zijn)
- Dus van 0 tot 111 (dat is uw index van uw array) kunnen er geboortejaren voorlomen.
- In voorbeeld geval (1980) wordt dus gebJaar(80) += 1 en bij het doorlopen van de ganse lus of alle records worden stelselmatig de geboortejaren of indexen die voorkomen opgevuld en bijgeteld als ze al voorkomen.
- Het enige wat je dan nog moet doen is met een lus de array toevoegen aan je listbox : als er in een ingang een waarde zit voeg je toe aan de listbox, anders niet.

Ik kan best een array opvullen met een for next van 0 tot einde maar om random een element te vullen zit ik dus echt vast. Volgens de oefening zou ik de geboortejaren ook moeten tellen dus bv 1980 = 50 keer enz....

Code die ik heb:

'Declaratie variabelen
Dim gebjaar(111) As String
Dim element As Integer
Dim geboortejaar As Integer
Dim lijn As String
Dim index As Integer
Dim uitvoer As String = ""

'Bestand Openen deze keer zonder dialogvenster
Try
FileOpen(1, "C:\Users\Wanted\Desktop\GEGEVENS2011.TXT", OpenMode.Input)
FileOpen(2, "C:\Users\Wanted\Desktop\TELLING2011.TXT", OpenMode.Output)
Catch ex As Exception
MessageBox.Show("Bestand is niet gevonden!" & vbCrLf & "Zorg ervoor dat het bestand path juist is.", _
"Bestand niet gevonden!", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End Try


'Init-prog
lstUitvoer.Items.Add("Resultaten telling")
lstUitvoer.Items.Add("==================")
lstUitvoer.Items.Add(" ")
lstUitvoer.Items.Add("Jaar " & " Aantal")
lstUitvoer.Items.Add("----" & " ------")

Do While Not EOF(1)
lijn = LineInput(1)
geboortejaar = CType(lijn.Substring(43, 4), Integer)
gebjaar(element) = geboortejaar - 1900
Loop

For index = 0 To gebjaar.GetUpperBound(0)
lstUitvoer.Items.Add(gebjaar(geboortejaar))
Next

'Bestanden afsluiten
FileClose(1)
FileClose(2)


Iemand die mij een goede duuw kan geven in dit probleem?
Ben hier nu al een aantal dagen mee bezig. Hopelijk vraagt hij zo niets op het examen.

NeverwinterX

Legacy Member
Je geeft zelf al bijna de oplossing in je uitleg. Een duwtje. Je zegt zelf:
  • gebJaar(80) += 1
  • van 0 tot 111 (dat is uw index van uw array)

En toch doe je het fout in je code en gebruik je de verkeerde index en ken je de verkeerde waarde toe:
Code:
gebjaar(element) = geboortejaar - 1900

Wanted

Legacy Member
dat is het hem net ik kan het algoritme vlot bedenken, maar om de 1 of andere reden zie ik niet hoe ik dit moet programmeren. Best dom van mij, maar ik zie het dus niet.

Edit: opgelost, ik zag jouw duuw te laat :-)

Do While Not EOF(1)
lijn = LineInput(1)
geboortejaar = CType(lijn.Substring(43, 4), Integer)
index = geboortejaar - 1900
gebjaar(index) += 1
Loop

For index = 0 To gebjaar.GetUpperBound(0)
If gebjaar(index) > 0 Then
lijn = (index + 1900) & " " & gebjaar(index)
lstUitvoer.Items.Add(lijn)
End If
Next

dit zou het moeten zijn.
Bedankt voor de duuw. :-)
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan