Hensikten er ytterligere styrking av kunnskap om tabeller, løkker og funksjoner. Du skal utvide
tabellomformeren i oblig 5. Frist: 12/10.
- Bruker ser en knapp for "Finn sum" (btnSum) som kaller funksjonen Sum(r) med X som argument. Resultatet fra sum() skrives i msgbox.
- Bruker ser en knapp for "Finn snitt" (btnSnitt) som gjenbruker funksjonen Sum (se over) til utregning. Til sist skrives gjennomsnittet i msgbox.
- Bruker ser en knapp for "Finn høyeste" (btnHoyest) som kaller funksjonen finnHoyeste(r) med X som argument og skriver resultatet i msgbox.
- Bruker ser en knapp for "Finn Laveste" (btnLavest) som kaller funksjonen finnLaveste(u) med X som argument og skriver resultatet i msgbox.
- Bruker ser en gruppeboks (grpLeting). Inni denne er en knapp for "Leting" (btnLeting), samt tre bokser for leteMetode, hvorav en (og bare en) skal være avkrysset. Hvis btnLeting trykkes skal du med inputboks (og hentHeltall) be brukeren oppgi intTall som det skal letes etter. Deretter iverksettes leting med valgt metode (sjekk radUsortert, radSortert eller radBinaerLet, s. 474). Ved oppstart (Form.Load) SKAL den MEST effektive letemetoden avkrysses! Eventprosedyren for grpLeting skal kalle en av tre boolske funksjoner og vise resultatet ved å farge bakgrunnen i lstA rosa (hvis ingenting ble funnet) -- det er jo oktober -- eller hvit (hvis True)! Du skriver derfor:
- finnesUsortert(p,v) med X og intTall som argument -- denne antar at tabellen er usortert og må sjekke alle for å eventuelt avgjøre at tallet ikke finnes!
- finnesSortert(p,v) med X og intTall som argument -- denne antar at tabellen er sortert stigende, begynner i posisjon 0 (null), og kan avbryte letingen hvis den har lett for langt!
- finnesBinaerLet(p,v) med X og intTall som argument -- denne antar stigende sortert og leter binært (fjerner halvparten av leteområdet hver gang).
Alle tre funksjonene skal telle antall sammenligninger (intAntSammenlgn). Hver funksjon SKAL selv kalle prosedyren visLeteresultat(hvem, tabell, tall, posisjon, intAntSammenlgn) som f.eks. (med argumentene "finnesSortert", x, 37, 11020 og 421) sier "finnesSortert: Fant 37 i posisjon 11020 av 14000. 421 sammenligninger!". Hvis argumentet "posisjon" oppgis til -1 mener letefunksjonen at den IKKE fant noe. Det er visLeteresultat() som SELV finner ut hvor stor tabellen var, f.eks. at oppgitt tabell x() hadde 14000 element!
Hvis du vil:
- Bruker ser en knapp for "krymping" (btnKrymping) som ber brukeren oppgi heltallet intFaktor (inputboks og hentHeltall). Tallet sier hvor mye tabellen X skal krympes: Hvis 2 beholdes annethvert element, hvis 3 beholdes tredjehvert ... løkken starter med at element 0 (null) beholdes. De du beholder kan legges i en lokal hjelpetabell Y som er akkurat stor nok. Hvert element som beholdes kopieres da dit: Y(..) = X(..). Til sist fjerner du X og lar X settes til Y (s. 316).
- Legg til funksjoner som var valgfrie i oblig 5 (randomiser, lineariser, sorter).
Ingen kommentarer:
Legg inn en kommentar