[informatica] arrays visual basic

Moderators: ArcherBarry, Fuzzwood

Reageer
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!!!

Gebruikersavatar
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:

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

Gebruikersavatar
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:

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
Dan kan je dingen doen als:

Code: Selecteer alles

		With arrPersonen(1)

.geslacht = GeslachtEn.Man

.categorie = StatusEn.Student

.geboortejaar = 1990

End With
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

Gebruikersavatar
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

Ik snap niet wat je eigenlijk wil bereiken.
Mijn vraag is hoe tel ik de resultaten op in een array ? Hoe moet ik deze array opstellen ?

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

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)
laten we ervan uit gaan dat er 100 records zijn in dat tekstbestandje

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

Gebruikersavatar
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:

Code: Selecteer alles

Resultaat = 0

For i = 1 To 100

Resultaat = Resultaat + Waarden(i)

Next i
Als je bijvoorbeeld enkel de waarden van mensen van categorie Student wil optellen moet je iets in deze stijl doen:

Code: Selecteer alles

Resultaat = 0

For i = 1 To 100

If categorie(i) = "S" Then

Resultaat = Resultaat + Waarden(i)

End If

Next i
Ervan uitgaande dat de elementen met gelijke index in beide arrays overeenkomen (Daarom moet je eigenlijk met een structure werken.)

Gebruikersavatar
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

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

Ik zie nog steeds niet wat je precies wil optellen
het verbaast me dat je het niet ziet

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.

Gebruikersavatar
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)

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
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.

Berichten: 5

Re: [informatica] arrays visual basic

Xenion schreef:Ok ik zie het nu, dan moet je zoiets doen:

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
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.
bedankt ik zal het proberen

Reageer