|
Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
De mogelijkheid bestaat een array te creëren met als elementen andere arrays. Je kan hier spreken over een "jagged array" ( of een array van arrays ). Deze komen van pas wanneer je een collectie van arrays ( dus van andere collecties ) wil beheren.
Om dit te verwezenlijken heb je het datatype Array nodig. Je declareert de arrayvariabele met elementen van het datatype Array. Visual Basic Broncode Module Example
Sub Main()
Dim names() As String = {"Brussels", "Antwerp", "Ghent"}
Dim zipCodes() As Integer = {1000, 2000, 0}
Dim cities(1) As Array
cities(0) = names
cities(1) = zipCodes
Console.WriteLine(names(1))
Console.WriteLine(cities(0)(1))
cities(1)(2) = 9000
Console.WriteLine(zipCodes(2))
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Visual Basic Output Antwerp
Antwerp
9000 Opgelet : een arrayvariabele bevat steeds een verwijzing naar een array, dus een array van arrays bevat niet die arrays zelf, maar bevat er verwijzingen naartoe.
Een verwijzing ( referentie ) naar een array kan je bekomen door gewoon de arrayvariabele-identifier te gebruiken ( zoals in regels (1) en (2) ). Of in het geval van een array van arrays bekom je dergelijke referentie van een array door het gerelateerde element aan te spreken. Zo komt het dat cities of cities(0) bijvoorbeeld naar hetzelfde ( naar dezelfde array ) verwijzen.
Meervoudige indexverwijzingen ( zoals in regels (4) en (5) ) kunnen verwarrend zijn, maar moet je gewoon stapsgewijs ontleden om ze te begrijpen. Als cities en cities(0) naar hetzelfde verwijzen bijvoorbeeld, dan is cities(0)(1) of names(1) dus ook een verwijzing naar hetzelfde element uit de cities array. Regels (3) en (4) geven immers hetzelfde resultaat. 7.12.1. OefeningOpgave :
Maak een programma naar onderstaand voorbeeld ( zie programma-verloop ) gebruik makende van drie tabellen : - één tabel voor de studenten namen ( één dimensional String array ) - één tabel voor de studenten punten ( meer dimensionale Integer array ) - één tabel voor de studenten ( array van arrays, verwijzend naar bovenstaande arrays )
Eens de drie tabellen zijn aangemaakt, mag je in het programma enkel nog gebruik maken van de laatste tabel ( array van arrays ).
Stockeer ook de gemiddeldes in de studenten punten tabel. Visual Basic Output Student Count ? 2
Topic Count ? 2
Name Student 1 ? John
John Score Topic 1 ? 4
John Score Topic 2 ? 6
Name Student 2 ? Paul
Paul Score Topic 1 ? 6
Paul Score Topic 2 ? 8
Name : John
Score Topic 1 : 4
Score Topic 2 : 6
Average Score : 5
Name : Paul
Score Topic 1 : 6
Score Topic 2 : 8
Average Score : 7 Oplossing : Visual Basic Broncode Module ExerciseSolution
Sub Main()
Console.Write("Student Count ? ")
Dim studentCount As Integer = Console.ReadLine()
Console.Write("Topic Count ? ")
Dim topicCount As Integer = Console.ReadLine()
Console.WriteLine()
Dim studentUpperbound As Integer = studentCount - 1
Dim names(studentUpperbound) As String
Dim topicUpperbound As Integer = topicCount
Dim scores(studentUpperbound, topicUpperbound) As Double
Dim students(1) As Array
Const namesIndex As Integer = 0, scoresIndex As Integer = 1
students(namesIndex) = names
students(scoresIndex) = scores
Dim studentIndex, topicIndex As Integer
For studentIndex = 0 To studentUpperbound
Console.Write("Name Student " & (studentIndex + 1) & " ? ")
students(namesIndex)(studentIndex) = Console.ReadLine()
For topicIndex = 0 To topicUpperbound - 1
Console.Write(students(namesIndex)(studentIndex) & _
" Score Topic " & (topicIndex + 1) & " ? ")
students(scoresIndex)(studentIndex, topicIndex) = _
Console.ReadLine()
Next
Console.WriteLine()
Next
For studentIndex = 0 To studentUpperbound
For topicIndex = 0 To topicUpperbound - 1
students(scoresIndex)(studentIndex, topicUpperbound) += _
students(scoresIndex)(studentIndex, topicIndex)
Next
students(scoresIndex)(studentIndex, topicUpperbound) /= _
topicUpperbound
Next
Console.WriteLine()
For studentIndex = 0 To studentUpperbound
Console.WriteLine("Name : " & students(namesIndex)(studentIndex))
For topicIndex = 0 To topicUpperbound - 1
Console.WriteLine("Score Topic " & (topicIndex + 1) & " : " & _
students(scoresIndex)(studentIndex, topicIndex))
Next
Console.WriteLine("Average Score : " & _
students(scoresIndex)(studentIndex, topicUpperbound))
Console.WriteLine()
Next
Console.ReadLine()
End Sub
End ModuleDownload Visual Basic Broncode Bekijk deze Broncode in Visual C#
Dit artikel is gepubliceerd op woensdag 28 april 2010 op vbvoorbeelden, bezoek de website voor een recente versie van dit artikel of andere artikels.
Visual Basic 2008 & 2010 Boeken
Berichten
|