[informatica] arrays visual basic
Moderators: ArcherBarry, Fuzzwood
-
- Berichten: 5
[informatica] arrays visual basic
"M",1958,"S"
"V",1958,"J"
(...)
"V",1937,"P"
"M",1936,"P"
In een tekstbestand bevinden zich, per record, het geslacht van een persoon, het geboortejaar van een persoon en een categorie (S=student, J=job, W=werkloos, P=pensioen).
Ik heb het tekstbestand in een array gestoken:
geslacht(index) as string
geboortejaar(index) as integer
categorie(index) as string
Ik wil het volgende resultaat in het tekstvak van een formulier verkrijgen:
-------- S J W P
< 1940 0 6 0 10
< 1950 0 2 0 0
< 1960 9 5 4 3
< 1970 4 7 3 0
--1980 1 1 0 0
Maak gebruik van een array om de resultaten op te tellen. De resultaten worden in een tekstvak (zonder de stippellijnen) getoond.
Mijn vraag is hoe tel ik de resultaten op in een array ?
Bedankt!!!
"V",1958,"J"
(...)
"V",1937,"P"
"M",1936,"P"
In een tekstbestand bevinden zich, per record, het geslacht van een persoon, het geboortejaar van een persoon en een categorie (S=student, J=job, W=werkloos, P=pensioen).
Ik heb het tekstbestand in een array gestoken:
geslacht(index) as string
geboortejaar(index) as integer
categorie(index) as string
Ik wil het volgende resultaat in het tekstvak van een formulier verkrijgen:
-------- S J W P
< 1940 0 6 0 10
< 1950 0 2 0 0
< 1960 9 5 4 3
< 1970 4 7 3 0
--1980 1 1 0 0
Maak gebruik van een array om de resultaten op te tellen. De resultaten worden in een tekstvak (zonder de stippellijnen) getoond.
Mijn vraag is hoe tel ik de resultaten op in een array ?
Bedankt!!!
- Moderator
- Berichten: 51.265
Re: [informatica] arrays visual basic
Dag Netwerker, welkom op het forum Huiswerk en Practica.
Jij wilt vlot hulp. Dat is alleen goed mogelijk als je daar zelf wat voor doet.
Naast de algemene regels van dit forum hebben we voor dit huiswerkforum een paar speciale regels en tips.
Die vind je in de huiswerkbijsluiter
In die huiswerkbijsluiter staat bijvoorbeeld:
[/color]
Jij wilt vlot hulp. Dat is alleen goed mogelijk als je daar zelf wat voor doet.
Naast de algemene regels van dit forum hebben we voor dit huiswerkforum een paar speciale regels en tips.
Die vind je in de huiswerkbijsluiter
In die huiswerkbijsluiter staat bijvoorbeeld:
Quote[td] [color="#808080"][b][u]VAKGEBIED-TAGS[/u][/b]
[i]Plaats het vakgebied waarop je vraag betrekking heeft tussen rechte haken in de titel.
bijv: [biologie] of [frans]. Zo blijft dit huiswerkforum overzichtelijk.[/i] [/color]
[/td]
Hebben we even voor je gedaan. Denk je er de volgende keer zélf aan??[/color]
ALS WIJ JE GEHOLPEN HEBBEN...
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270
help ons dan eiwitten vouwen, en help mee ziekten als kanker en zo te bestrijden in de vrije tijd van je chip...
http://www.wetenscha...showtopic=59270
- Berichten: 2.609
Re: [informatica] arrays visual basic
Ik snap niet wat je eigenlijk wil bereiken.
Wat ik je wel al kan meegeven is dat je je code wel wat 'mooier' kan maken.
Volgende declaraties werken in VB2008:
Dan kan je dingen doen als:
De enumeraties kunnen inderdaad ook als String, maar met een Structure werken is wel het minste wat je zou moeten doen.
Over enumeraties: http://visualbasic.about.com/od/usingvbnet/a/enum01.htm
Wat ik je wel al kan meegeven is dat je je code wel wat 'mooier' kan maken.
Volgende declaraties werken in VB2008:
Code: Selecteer alles
Enum GeslachtEn
Man
Vrouw
End Enum
Enum StatusEn
Student
Job
Werkloos
Pensioen
End Enum
Structure myPerson
Private geslacht As GeslachtEn
Private categorie As StatusEn
Private geboortejaar As Integer
End Structure
Dim arrPersonen(100) As myPerson
Code: Selecteer alles
With arrPersonen(1)
.geslacht = GeslachtEn.Man
.categorie = StatusEn.Student
.geboortejaar = 1990
End With
Over enumeraties: http://visualbasic.about.com/od/usingvbnet/a/enum01.htm
- Berichten: 6.905
Re: [informatica] arrays visual basic
Ik zou een 2d array maken met verticaal de jaartallen en horizontaal de mogelijkheden. Dan doorloop je de gegevens uit je bestand en tel/zet dan gegevens in die 2d array (uiteraard met integers zodat tellen mogelijk is)
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
-
- Berichten: 5
Re: [informatica] arrays visual basic
Mijn vraag is hoe tel ik de resultaten op in een array ? Hoe moet ik deze array opstellen ?Ik snap niet wat je eigenlijk wil bereiken.
geboortejaar(index)
categorie(index)
vb
for i=0 to 100
for j=0 to 50
next
next
het resultaat dat ik wil bereiken staat in het tekstvak (zonder stippellijnen) van een formulier, het is een tabel met de som van de categorieen per periode:
---------------S------J------W-------P
< 1940-------0------6------0-------10
< 1950-------0------2------0--------0
< 1960-------9------5------4--------3
< 1970-------4------7------3--------0
1980----------1------1------0--------0
het bestand moet geopend en gelezen worden met een OpenFileDialog (geen probleem), waar ik probleem mee heb is via een array de 20 verschillende sommen maken die je in deze tabel ziet.
-
- Berichten: 5
Re: [informatica] arrays visual basic
laten we ervan uit gaan dat er 100 records zijn in dat tekstbestandjeIk zou een 2d array maken met verticaal de jaartallen en horizontaal de mogelijkheden. Dan doorloop je de gegevens uit je bestand en tel/zet dan gegevens in die 2d array (uiteraard met integers zodat tellen mogelijk is)
geslacht(99),geboortejaar(99),categorie(99)
geslacht(99) heb ik vanaf nu niet meer nodig
blijft enkel geboortejaar(99) en categorie(99) over
nu moet ik een tabel krijgen met vertikaal de categorieen en horizontaal de periodes (<1940,<1950,<1960,<1970,1980-) waarbij de verschillende categorieen op de eerste rij staan en de perioden op de eerste kolom staan en array(0,0) leeg is en in de rest van de tabel staan de sommen ingevuld
hoe moet ik concreet beginnen, hoeveel tellers moet ik gebruiken, hoeveel variabelen, moet ik lus in een lus gebruiken of verschillende lussen achter elkaar, wat moet ik juist als eerste doen, enz
- Berichten: 2.609
Re: [informatica] arrays visual basic
Ik zie nog steeds niet wat je precies wil optellen, maar misschien wordt het voor jou duidelijker met deze uitleg.
Stel je hebt een array Waarden(100) As Integer
Je wil die allemaal optellen:
Je maakt een variabele Resultaat As Integer en doet het volgende:
Als je bijvoorbeeld enkel de waarden van mensen van categorie Student wil optellen moet je iets in deze stijl doen:
Ervan uitgaande dat de elementen met gelijke index in beide arrays overeenkomen (Daarom moet je eigenlijk met een structure werken.)
Stel je hebt een array Waarden(100) As Integer
Je wil die allemaal optellen:
Je maakt een variabele Resultaat As Integer en doet het volgende:
Code: Selecteer alles
Resultaat = 0
For i = 1 To 100
Resultaat = Resultaat + Waarden(i)
Next i
Code: Selecteer alles
Resultaat = 0
For i = 1 To 100
If categorie(i) = "S" Then
Resultaat = Resultaat + Waarden(i)
End If
Next i
- Berichten: 6.905
Re: [informatica] arrays visual basic
Dim tabel(,) As Integer
Je zorgt dat deze tabel 4 kolommen heeft en evenveel rijen als verticale categorieën. Nu laat je een los lopen op ongeveer deze manier
Je zorgt dat deze tabel 4 kolommen heeft en evenveel rijen als verticale categorieën. Nu laat je een los lopen op ongeveer deze manier
Code: Selecteer alles
For i=0 to 99
hierin kies je, afhankelijk van categorie(i) het juiste kolomnummer
Hetzelfde voor geboortejaar(i)
Tel dan 1 bij in de bekomen cel
Next i
Het vel van de beer kunnen verkopen vraagt moeite tenzij deze dood voor je neervalt. Die kans is echter klein dus moeten we zelf moeite doen.
-
- Berichten: 5
Re: [informatica] arrays visual basic
het verbaast me dat je het niet zietIk zie nog steeds niet wat je precies wil optellen
hier is het volledige tekstbestand
"M",1958,"S"
"V",1958,"J"
"M",1958,"J"
"V",1958,"S"
"V",1958,"W"
"M",1958,"S"
"M",1958,"W"
"V",1958,"P"
"V",1958,"S"
"V",1938,"J"
"M",1938,"J"
"M",1939,"J"
"M",1939,"P"
"M",1937,"P"
"V",1937,"P"
"M",1936,"P"
"V",1937,"P"
"V",1948,"J"
"M",1968,"S"
"V",1968,"J"
"V",1969,"J"
"V",1960,"J"
"M",1962,"W"
"M",1963,"S"
"V",1964,"W"
"V",1965,"W"
"M",1958,"S"
"M",1958,"S"
"V",1958,"J"
"M",1958,"J"
"V",1958,"S"
"V",1958,"W"
"M",1958,"S"
"M",1958,"W"
"V",1958,"P"
"V",1958,"S"
"V",1938,"J"
"M",1938,"J"
"M",1939,"J"
"M",1939,"P"
"M",1937,"P"
"V",1937,"P"
"M",1936,"P"
"V",1937,"P"
"V",1948,"J"
"M",1978,"S"
"V",1968,"J"
"V",1969,"J"
"V",1963,"J"
"M",1964,"S"
"M",1965,"S"
"V",1974,"J"
"V",1965,"J"
"M",1958,"J"
dit moet ik krijgen als resultaat (zonder stippellijnen):
---------------S------J------W-------P
< 1940-------0------6------0-------10
< 1950-------0------2------0--------0
< 1960-------9------5------4--------3
< 1970-------4------7------3--------0
1980----------1------1------0--------0
tabel(0,0) is leeg daarna volgen de verschillende categorieen op de eerste rij
alle personen die geboren zijn voor 1940 staan op de tweede rij
alle personen die geboren zijn voor 1950 staan op de derde rij
alle personen die geboren zijn voor 1960 staan op de vierde rij
alle personen die geboren zijn voor 1970 staan op de vijfde rij
alle personen die geboren zijn vanaf 1980 staan op de zesde rij
de periodes staan op de eerste kolom
Neem nu de vierde rij:
-----------S----W----J----P
<1960----9----5----4----3
de sommen zijn 9, 5 , 4 en 3
dat betekent dat van de personen die voor 1960 zijn geboren er 9 student zijn, er 5 werkloos zijn, er 4 een job hebben en 3 zijn met pensioen.
- Berichten: 2.609
Re: [informatica] arrays visual basic
Ok ik zie het nu, dan moet je zoiets doen:
Voor element (i,j) dus: rij i, kolom j (alle2 beginnende vanaf 1)
Zoiets zou volgens mij moeten werken. Het is niet de meest efficiënte manier, maar volgens mij wel de makkelijkste.
Voor die laatste rij (vanaf 1980), moet je nog iets apart schrijven, maar dat is gelijkaardig.
Voor element (i,j) dus: rij i, kolom j (alle2 beginnende vanaf 1)
Code: Selecteer alles
resultaat = 0
For teller = 1 To max_in_array
If arrPersonen(teller).jaar < 1930+i*10 Then
If arrPersonen(teller).categorie = Functie_die_categorie_geeft_vanuit_nummer(j) Then
resultaat = resultaat + 1
End If
End If
Next teller
Voor die laatste rij (vanaf 1980), moet je nog iets apart schrijven, maar dat is gelijkaardig.
-
- Berichten: 5
Re: [informatica] arrays visual basic
bedankt ik zal het proberenXenion schreef:Ok ik zie het nu, dan moet je zoiets doen:
Voor element (i,j) dus: rij i, kolom j (alle2 beginnende vanaf 1)
Zoiets zou volgens mij moeten werken. Het is niet de meest efficiënte manier, maar volgens mij wel de makkelijkste.Code: Selecteer alles
resultaat = 0 For teller = 1 To max_in_array If arrPersonen(teller).jaar < 1930+i*10 Then If arrPersonen(teller).categorie = Functie_die_categorie_geeft_vanuit_nummer(j) Then resultaat = resultaat + 1 End If End If Next teller
Voor die laatste rij (vanaf 1980), moet je nog iets apart schrijven, maar dat is gelijkaardig.