Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

Tabeller – Arrays Lage frekvenstabell Norske Bokstaver

Liknende presentasjoner


Presentasjon om: "Tabeller – Arrays Lage frekvenstabell Norske Bokstaver"— Utskrift av presentasjonen:

1 Tabeller – Arrays Lage frekvenstabell Norske Bokstaver

2 Tabeller – en samling variabler
Eksempel: Dim tabellÅr(3) As Integer Deklarerer en tabell Innhold etter deklarasjon 1 2 3 Index, dvs. plassnummer i tabellen tabellÅr(0) = 2005 tabellÅr(1) = 2006 tabellÅr(2) = 2007 tabellÅr(3) = 2008 Bruker tabellen, tildeler verdier 2005 2006 2007 2008 Innhold etter tildeling 1 2 3

3 Tabell med tellinger av biler
Eksempel: Dim tabellMedTellinger(51) As Integer ... 1 2 3 51 sr = IO.File.OpenText("c:\antallBiler.txt") Do While (sr.peek() <> -1) tabellMedTellinger(nr) = sr.ReadLine nr = nr + 1 Loop 13 45 120 105 ... 2 1 2 3 51

4 Fra forrige gang: Les fra fil til tabell i Form_Load(), bruk verdiene i btnFinnMinste_Click()
Public Class frmTabellTest Dim tabellMedTellinger(51) As Integer ’plass til 52 Private Sub frmTabellTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sr As IO.StreamReader Dim nr As Integer sr = IO.File.OpenText("c:\antallBiler.txt") Do While (sr.peek() <> -1) tabellMedTellinger(nr) = sr.ReadLine lstTellinger.Items.Add(tabellMedTellinger(nr)) nr = nr + 1 Loop sr.Close() End Sub Private Sub btnFinnMinste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFinnMinste.Click Dim i As Integer = 0 Dim minste As Integer = 1000 For i = 0 To 51 lstTellinger.Items.Add(i & ": " & tabellMedTellinger(i)) If (tabellMedTellinger(i) < minste) Then minste = tabellMedTellinger(i) End If Next MsgBox("Minste Verdi er: " & minste) End Class

5 Størrelse på tabeller Når vi skriver programmet deklarerer vi tabellene vi har bruk for Dim antalltellinger(51) As Integer Tabellen har 52 plasser siden vi vet at filen med tellinger har 52 linjer. Men ofte vet vi ikke hvor stor tabell en bruker av programmet trenger. Vi kan da gjøre deklarasjonen uten å angi størrelse: Dim antalltellinger() As Integer Senere når vi har lest filen vet vi hvor mange plasser som trengs: ReDim tabellMedTellinger(antallElement)

6 Finne tabellstørrelse mens programmet kjører
Format: ReDim arrayName(m) Deklarasjon: Dim tabellMedTellinger() As Integer Størrelse angis: ReDim tabellMedTellinger(antElement) Vi brukte at tabellstørrelsen var kjent når vi skrev en løkke: For i = 0 To 51 lstTellinger.Items.Add(i & ": " & tabellMedTellinger(i)) If (tabellMedTellinger(i) < minste) Then minste = tabellMedTellinger(i) End If Next Metoden GetUpperBound() gir størrelsen på tabellen: For i = 0 To tabellMedTellinger.GetUpperBound(0) ...

7 Endre og finn tabellstørrelse mens programmet kjører
Skriv om eksemplet foran til å bruke: ReDim tabell(dim) Merk: Må ha to gjennomganger av filen i Form_Load tabell.GetUpperBound(0)

8 Public Class frmTabellTest
Dim tabellMedTellinger() As Integer 'plass til 52 Private Sub frmTabellTest_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim sr As IO.StreamReader Dim nr As Integer sr = IO.File.OpenText("c:\antallBiler.txt") Do While (sr.Peek() <> -1) sr.ReadLine() nr = nr + 1 Loop sr.Close() ReDim tabellMedTellinger(nr) nr = 0 tabellMedTellinger(nr) = sr.ReadLine lstTellinger.Items.Add(tabellMedTellinger(nr)) End Sub Private Sub btnFinnMinste_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFinnMinste.Click Dim i As Integer = 0 Dim sum, antall As Integer, minste As Integer = 1000 Dim snitt As Double sum = 0 antall = 0 For i = 0 To tabellMedTellinger.GetUpperBound(0) lstTellinger.Items.Add(i & ": " & tabellMedTellinger(i)) If (tabellMedTellinger(i) < minste) Then minste = tabellMedTellinger(i) End If sum += tabellMedTellinger(i) antall += 1 Next snitt = sum / antall MsgBox("Minste: " & minste & " sum: " & sum & " antall: " & antall & " snitt: " & snitt) End Class

9 Modifiser koden som finner plassen til minste slik at den finner plassen til største tall
Dim i As Integer = 0 Dim minste as Integer = 1000 Dim tabellMedTellinger(51) As Integer ‘plass til 52 Dim plassenTilMinste As Integer For i = 0 To 51 lstTellinger.Items.Add(i & ": " & tabellMedTellinger(i)) If (tabellMedTellinger(i) < minste) Then minste = tabellMedTellinger(i) plassenTilMinste = i End If Next MsgBox(“Minste Verdi er: “ & minste & “ Nummer: ” & plassenTilMinste)

10 Kode som finner på hvilken plass i tabellen største tall er
Dim i As Integer = 0 Dim storste As Integer = 0 Dim plassenTilStorste As Integer = 0 Dim tabellMedTellinger(51) As Integer ‘plass til 52 For i = 0 To 51 lstTellinger.Items.Add(i & ": " & tabellMedTellinger(i)) If (tabellMedTellinger(i) > storste) Then storste = tabellMedTellinger(i) plassenTilStorste = i End If Next MsgBox(“Storste verdi er: “ & storste & “ Nummer: ” & plassenTilStorste)

11 Oppgave: Beregne gjennomsnitt
Modifiser koden foran slik at den beregner gjennomsnitt

12 Bokstaver og konvertering (side 315)
Gjør om til STORE bokstaver: setning = (TextBox1.Text).ToUpper Til et tall mellom 0 og 25 (uten æ, ø, å): index = Asc(bokstav) – 65 Til en ASCII-verdi: bokstav = Chr(i + 65)

13 Frekvenstabell for bokstaver (side 315) Dim bokstavTellinger(25) 'kun Engelske
Dim index As Integer Dim setning, bokstav As String Dim bokstavTellinger(25) As Integer setning = (txtSetning.Text).ToUpper For letterNum As Integer = 1 To setning.Length bokstav = setning.Substring(letterNum - 1, 1) If (bokstav >= "A") And (bokstav <= "Z") Then index = Asc(bokstav) - 65 bokstavTellinger(index) += 1 End If Next lstTellinger.Items.Clear() For i As Integer = 0 To 25 bokstav = Chr(i + 65) If bokstavTellinger(i) > 0 Then lstTellinger.Items.Add(bokstav & " " & bokstavTellinger(i)) End Sub

14 Problemer med Æ, Ø og Å Prøv: MsgBox("Æ: " & Asc("Æ")) ’ gir 198
Dette gir for høyt tall for index: index = Asc(bokstav) – 65 bokstavTeller(index) += 1 Æ, Ø og Å må behandles separat.

15 Private Sub btnFrekvenstab_Click(ByVal sender As System
Private Sub btnFrekvenstab_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnFrekvenstab.Click Dim index As Integer Dim setning, bokstav As String Dim bokstavTeller(28) As Integer ’ det er totalt 29 bokstaver inkl æ, ø og å setning = (txtSetning.Text).ToUpper For letterNum As Integer = 1 To setning.Length bokstav = setning.Substring(letterNum - 1, 1) If (bokstav >= "A") And (bokstav <= "Z") Then index = Asc(bokstav) - 65 ' ASCII value of A is 65 bokstavTeller(index) += 1 ElseIf (bokstav = "Æ") Then bokstavTeller(26) += 1 ElseIf (bokstav = "Ø") Then bokstavTeller(27) += 1 ElseIf (bokstav = "Å") Then bokstavTeller(28) += 1 End If Next lstFrekvensTabell.Items.Clear() For i As Integer = 0 To 25 bokstav = Chr(i + 65) If bokstavTeller(i) > 0 Then lstFrekvensTabell.Items.Add(bokstav & " " & bokstavTeller(i)) If bokstavTeller(26) > 0 Then lstFrekvensTabell.Items.Add("Æ " & bokstavTeller(26)) If bokstavTeller(27) > 0 Then lstFrekvensTabell.Items.Add("Ø " & bokstavTeller(27)) If bokstavTeller(28) > 0 Then lstFrekvensTabell.Items.Add("Å " & bokstavTeller(28)) End Sub

16 Frekvenstabell Lag en frekvenstabell som viser hvor mange tellinger det er i intervallene: Mindre enn 5 tellinger Mellom 5 og 10 tellinger Mellom 10 og 15 tellinger Mellom 15 og 20 tellinger Over 20 tellinger

17 Prinsipp for kode Dim FrekvensTabell(5) As Integer
If (tabellMedTellinger(i) < 5) Then FrekvensTabell(1) = FrekvensTabell(1) + 1 ElseIf (tabellMedTellinger(i) >= 5) or (tabellMedTellinger(i) < 10) Then FrekvensTabell(2) = FrekvensTabell(2) + 1 ’osv for alle intervallene End If

18 stasjon-og-antallBiler.txt Kleive 13 Nordbyen 45 Bjørset 12 Kvam 34
Fuglset 89 Sentrum 96

19 Eksempel: stasjonsnavn og tellinger
5 tellestasjoner teller antall biler som passerer på en time På filen stasjon-og-antallBiler.txt er det lagret stasjonsnavn og tellinger for hver stasjon Du skal: beregne gjennomsnittlig antall biler for alle stasjonene finne minste antall tellinger på en stasjon hvilken stasjon det er. finne største antall tellinger på en stasjon hvilken stasjon det er. Lage en frekvenstabell som viser hvor mange ...

20 Dim sr As IO.StreamReader
sr = IO.File.OpenText(“stasjon-og-antallBiler.txt”) Do While (sr.peek() <> -1) stasjon = sr.ReadLine antallBilerPrStasjon = sr.ReadLine sum = sum + antallBilerPrStasjon antallStasjoner = antallStasjoner + 1 Loop gjennomsnitt = sum / antallStasjoner

21 Oppgaver Finne minste og største antall tellinger og hvilke nummer dette var. Dessuten skal du lage en frekvenstabell som viser hvor mange tellinger det er i ulike intervall Mindre enn 20 tellinger Mellom 20 og 40 tellinger Mellom 40 og 60 tellinger Mellom 60 og 80 tellinger Over 80 tellinger

22 Finne minste Dim minste As Integer = 1000
sr = IO.File.OpenText("c:\stasjon-og-antallBiler.txt") Do While sr.Peek() <> -1 stasjon = sr.ReadLine antallBilerPrStasjon = sr.ReadLine If antallBilerPrStasjon < minste Then minste = antallBilerPrStasjon End If Loop sr.Close() MsgBox(”Minste verdi er: ” & minste)

23 antallBiler.txt 13 45 120 105 89 56 67 96 34 12 23 74 134 98 6 32 2 43 27 28 17 8 9 3 5 38 1


Laste ned ppt "Tabeller – Arrays Lage frekvenstabell Norske Bokstaver"

Liknende presentasjoner


Annonser fra Google