UNIVERSITETET I OSLO

Like dokumenter
Gjennomgang av eksamen V99

Litt om pakker og mest om data inn og ut

import java.io.*; import java.util.*; import javagently.text;

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1010 våren 2018 tirsdag 23. januar

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

INF 1010, vår 2005 Løsningsforslag uke 11

INF1010 våren 2019 Onsdag 30. januar. Mer om unntak i Java (med litt repetisjon av I/O først)

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

Eksamen i Internetteknologi Fagkode: ITE1526

Hittil har programmene kommunisert med omverden via tastatur og skjerm Ønskelig at data kan leve fra en kjøring til neste

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Endret litt som ukeoppgave i INF1010 våren 2004

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) og i emnet INF100-F Objektorientert programmering i Java I Løsningsforslag

INF1010 våren 2017 Onsdag 25. januar. Litt om unntak i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF1000-SIKT - Notat om I/O i Java

UNIVERSITETET I OSLO

Løsningsforslag Test 2

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

Faglærerne prøver å besøker eksamenslokalet mellom klokka 15 og 16 for å oppklare eventuelle uklarheter og feil i oppgaveteksten.

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

UNIVERSITETET I OSLO

GJØVIK INGENIØRHØGSKOLE

Å lese tall fra en fil, klassen Scanner

Dagens forelesning. Java 13. Rollefordeling (variant 1) Rollefordeling (variant 2) Design av større programmer : fordeling av roller.

Oblig 4 (av 4) INF1000, høsten 2012 Værdata, leveres innen 9. nov. kl

IN-OO1-EVU Dag 3. Stein Gjessing. Kapittel 4: I/O, if og unntak (exceptions) Kapittel 5: While, switch, mer I/O Kapittel 6: Mengder av objekter

UNIVERSITETET I OSLO

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

TOD063 Datastrukturer og algoritmer

IN Notat om I/O i Java

Eksamen. Objektorientert Programmering IGR 1372

UNIVERSITETET I OSLO

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

81,9(56,7(7(7,26/2 'HWPDWHPDWLVNQDWXUYLWHQVNDSHOLJHIDNXOWHW

UNIVERSITETET I OSLO

INF Notat om I/O i Java

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Repetisjon. INF gruppe 13

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Socket og ServerSocket

UNIVERSITETET I OSLO

Avdeling for ingeniørutdanning Institutt for teknologi

INF2100. Oppgaver 26. september til 1. oktober 2007

Leksjon 7. Filer og unntak

Objektorientert Programmering Ekstraordinær eksamen 2014

Bruk av class Scanner, FileWriter og Formatter som alternativ til EasyIO i INF1000.

Eksamen IN1010/INF1010 våren 2018

UNIVERSITETET I OSLO

HØGSKOLEN I SØR-TRØNDELAG

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Gard Inge Rosvold Institutt for Informatikk, 15.

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

KONTINUASJONSEKSAMEN

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

Algoritmer og datastrukturer Eksamen

INF1010 våren Arv og subklasser del 1 (pluss litt I/O og unntaksbehandling)

Algoritmer og datastrukturer Vedlegg A.4 Filbehandling på char-nivå

Syntaksanalyse. Skanner (repetisjon) Parsering top-down bottom-up LL(1)-parsering Recursive descent Forutsetninger. IN 211 Programmeringsspråk

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF Høst 2011)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

INF1000: Forelesning 11. Oppgave 2. Oppgave 1. Husk å melde deg på prøveeksamen i INF1000! Ole Christian Lingjærde 7.november 2006

Eksamen Objektorientert Programmering 2013

Oppgave 1. Oppgave 2. Oppgave 3. Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Videregående programmering 6

Obligatorisk oppgave 1 i INF 4130, høsten 2008

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

UNIVERSITETET I OSLO

Prøveeksamen i INF1000. Ole Christian og Arne. 23. november 2004

Stein Gjessing 11. nov IN-OO1-EVU Dag 3. Stein Gjessing

Transkript:

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : IN 105 Eksamensdag : Mandag 7. juni 1999 Tid for eksamen : 09.00-15.00 Oppgavesettet er på : 6 sider (inkludert vedlegg) Vedlegg : Klassen Text fra JavaGently Tillatte hjelpemidler : Alle trykte og skrevne Kontroller at oppgavesettet er komplett før du begynner å besvare det. Les gjennom hele settet før du begynner med besvarelsen. Denne oppgaven er ment å kunne løses både i Java (slik det har vært forelest våren 1999) og i Simula for studenter som har fulgt forelesningene tidligere semestre og foretrekker Simula. For de studenter som besvarer oppgaven i Simula, skal det skrives en prosedyre der oppgaven ber om en metode, og der oppgaveteksten snakker om klassen Text fra JavaGently, kan du bruke vanlig inn/ut-lesning og Utilities i Simula. Du kan selvsagt også nytte Settools. Andre forskjeller vil bli kommentert i teksten. På oppgave 2K står det Kan puffes og med det menes at du ikke får strykkarakter på det punktet hvis du ikke besvarer det. Denne oppgaven dreier seg om å lage to programmer for å effektivisere Holmenkollstafetten. I den utstrekning du kjenner til (detalj)opplysninger om Holmenkollstafetten og disse avviker fra det som gis i denne oppgaven, skal du bruke opplysningene som gis i oppgaven. De er tilstrekkelige til å løse eksamen. ---o 0 o --- Holmenkollstafetten er et gateløp på 15 etapper som løpes av lag i ulike løpsklasser (se fullstendig liste av løpsklasser i oppgave 1). Du skal nå lage to datasystemer for å hjelpe arrangørene til å få en tidsmessig dataløsning: I. Et system som kjøres av klubbene som melder på (ett eller flere) lag til løpet. Dette systemet skal du lage i oppgave 1) nedenfor. Dette systemet produserer en fil (uansett hvor mange lag som meldes på) som klubben sender inn til arrangøren. II. Et system som kjøres av arrangøren. Dette systemet skal (utfyllende opplysninger i hvert oppgavepunkt): a) Motta filer fra de klubbene, lese disse og bygge opp en passende datastruktur for hele løpet. b) Kunne rette to typer av opplysninger om lag som en klubb har påmeldt (trekke lag, endre deltagere på etapper på ett lag).

Eksamen i IN 105 7. juni 1999 Side 2 av 6 c) Tildele startnummer til de ulike påmeldte lagene (en liste over lagnavn med startnummer og starttidspunkt skal produseres). d) Ta inn løpsresultater for de ulike lagene og skrive ut liste over vinnere i hver klasse og resultatliste for hver klubb. Dette er opplagt ikke en fullstendig løsning for Holmenkollstafetten (håndtering av påmeldingsavgift, flere typer av løpsklasser og fullstendige, sorterte resultatlister mangler, men vi tenker oss at dette skal senere utvides til et ekte datasystem). Oppgave 1 (20 %) Du skal her lage et enkelt system som klubbene skal bruke til å melde på ett eller flere lag til stafetten. En klubb kan høyst melde på ett lag i hver løpsklasse. Filen programmet skal produsere har følgene format eksempel: Idrettslaget-Koll Aktiv herre B 1 Ole Olsen 09087733925 2 Per Jensen 12317556243 15 Peder Kvikk 07017253891 Aktiv kvinne elite 1 Guri Grei 01017624578 2 Siri Kvikk 12087545348 15 Turid Antonsen 05058082345 ZZZ Filen skal altså starte med en linje som er klubbens navn (anta at det er skrevet som ett ord som ovenfor. Hint: Husk at readstring() i Text leser bare neste ord fram til en blank eller linjeskift), Etter klubbnavnet kommer angivelse av løpsklasse (tillatte verdier: Aktiv herre elite, Aktiv herre B, Aktiv kvinne elite, Aktiv kvinne B, Bedrift herre, Bedrift kvinne, Bedrift blandet ) for første lag som påmeldes. Deretter kommer 15 nummererte linjer med løpere og løpernes 11-sifrete personnummer, en linje for hver etappe (du skal anta at det er bare ett fornavn og ett etternavn for hver løper). Dette gjentas for hvert lag som meldes på og det er ingen bestemt rekkefølge man må ha lagene i. Filen avsluttes med en string ZZZ på en egen linje. Oppgave 1 Lag et enklest mulig menydrevet hovedprogram og datastruktur som produserer denne filen (ikke legg inn muligheter for rettinger/endringer, men anta at hvis klubben vil endre sin påmelding eller taster feil, taster de bare inn alle opplysningene på nytt).

Eksamen i IN 105 7. juni 1999 Side 3 av 6 Oppgave 2 (80 %) I denne oppgaven skal du lage systemet som arrangøren skal bruke, og som er skissert på tidligere i dette oppgavesettet. Oppg. 2A Oppg. 2B Oppg. 2C Oppg. 2D Oppg. 2E Oppg. 2F Oppg. 2G Oppg. 2H Les nøye gjennom de øvrige spørsmålene i oppgave 2 og lag så en tegning av de klasser og viktigste datastrukturene du vil ha i systemet ditt. Beskriv også kort (noen få linjer) hva hver klasse skal representere og inneholde. Lag klassen Holmenkollen som inneholder main(). I denne klassen skal vi opprette nødvendig datastruktur, skrive ut en meny, motta valg fra brukeren, og så kalle relevante metoder i andre klasser. (Dere som løser oppgaven i Simula: Lag et hovedprogram som oppretter nødvendig datastruktur, skriver ut en meny, mottar valg fra brukeren, og så kaller relevante prosedyrer i systemets klasser.) Lag metoden lesfrafil (..), som mottar en fil fra en klubb (som beskrevet i oppg.1) og som oppdaterer datastrukturene dine med opplysningene på fila. Lag en metode sjekk(..) som går gjennom alle løpere på ett lag og sjekker at løperne på laget hverken løper flere etapper på dette laget eller deltar på andre lag i hele stafetten (Hint: Bruk personnummeret som er ulikt for alle løpere). Skriv ut passene opplysninger hvis du finner en slik løper. Lag en metode som er egnet til å brukes når en klubb vil endre sin påmelding. Nå skal du bare tenke oss at klubben ringer inn til arrangøren (inntil 2 uker før start) og enten vil trekke påmeldingen av et lag eller vil sette inn andre løper(e) på en eller flere etapper. Lag en tegning som viser tilstanden i datastrukturen før og etter at et lag blitt trukket. Du skal nå anta at påmeldinger og rettelser er avsluttet. Lag først en metode startnummer(..), som går gjennom datastrukturen og skriver ut navn til deltagerklubbene i hver løpsklasse, og som samtidig teller opp antall deltagerklubber i hver løpsklasse, samt gir disse nummer. Denne listen skrives ut. Du skal bare bruke en nummerserie (1,2,..) for hele løpet. Løpet skal starte kl. 12.00 med de aktive - dameklassene først (elite først, så B), deretter tilsvarende for herrer, og til sist bedriftsklassene for damer, herrer og blandet. Alle lag i en løpsklasse starter samtidig. Du skal nå skrive ut en liste for starttidspunkter for de ulike løpsklassene ut fra opptelling av antall lag i hver løpsklasse, og at det må være minimum 15 minutter mellom hver start, men at du også må legge til 15 min. for start av neste løpsklasse for hvert 100 lag som starter i forrige løpsklasse (dvs. hvis det er opp til 99 deltagere i Aktiv dame elite, starter neste klasse Aktiv dame B kl 12.15, men er det fra 100 til 200 deltager, starter Aktiv dame B kl. 12.30,.. osv). Lag en metode som brukes av en funksjonær ved registrering av sluttider etter hvert som lagene kommer i mål. Han finner tiden ved å se på en klokke. Det som skal registreres er lagets startnummer (som løperne har på seg og som følger den nummereringen du fant i pkt. 2F) og klokkeslettet for målpassering som tre tall: time, minutt og sekund.

Eksamen i IN 105 7. juni 1999 Side 4 av 6 Oppg. 2I Oppg. 2J Oppg. 2K Lag en metode som skriver ut vinnerlaget i hver løpsklasse Hint. Skriv først en metode som for et lag regner ut sluttiden, dvs. hvor lang tid laget har brukt fra starttidspunktet (som du regnet ut i 2G) til målpasseringsklokkeslettet (som er registrert i 2H). For hvert av klubbene lager du en rapport som viser hvilken plassering deres lag fikk. Plasseringen finner du ved å telle opp hvor mange av de andre lagene i samme løpsklasse som hadde bedre sluttid. Kan puffes. Definer først et filformat som lagrer resultatene for hele Holmenkollstafetten ett år, og en metode som skriver ut resultatene på fil på dette formatet. Skisser så hvordan du vil legge til i datastrukturen din slik at du kan lese inn resultatene fra flere tidligere år på dette formatet og skrive ut rapporter om hvor godt hvert lag fra en klubb har gjort det tidligere år (og i hvilke år det var) og tilsvarende opplysninger pr løper hvor mange ganger har hun/han deltatt tidligere, på hvilke lag og med hvilket resultat.

Eksamen i IN 105 7. juni 1999 Side 5 av 6 Vedlegg : package javagently; import java.io.*; import java.util.*; import java.text.*; public class Text { public Text () {; /* The All New Famous Text class by J M Bishop Aug 1996 * revised for Java 1.1 by Alwyn Moolman Aug 1997 * revised for efficiency by J M Bishop Dec 1997 * * Provides simple input from the keyboard and files. * Now also has simple output formatting methods * and file opening facilities. * * public static void prompt (String s) * public static int readint (BufferedReader in) * public static double readdouble (BufferedReader in) * public static String readstring (BufferedReader in) * public static char readchar (BufferedReader in) * public static String writeint (int number, int align) * public static String writedouble (double number, int align, int frac) * public static BufferedReader open (InputStream in) * public static BufferedReader open (String filename) * public static PrintWriter create (String filename) */ private static StringTokenizer T; private static String S; public static BufferedReader open (InputStream in) { return new BufferedReader(new InputStreamReader(in)); public static BufferedReader open (String filename) throws FileNotFoundException { return new BufferedReader (new FileReader (filename)); public static PrintWriter create (String filename) throws IOException { return new PrintWriter (new FileWriter (filename)); public static void prompt (String s) { System.out.print(s + " "); System.out.flush(); public static int readint (BufferedReader in) throws IOException { if (T==null) refresh(in); return Integer.parseInt(T.nextToken()); catch (NumberFormatException e2) { System.out.println("Error in number, try again.");

Eksamen i IN 105 7. juni 1999 Side 6 av 6 public static char readchar (BufferedReader in) throws IOException { if (T==null) refresh(in); return T.nextToken().trim().charAt(0); public static double readdouble (BufferedReader in) throws IOException { if (T==null) refresh(in); String item = T.nextToken(); return Double.valueOf(item.trim()).doubleValue(); catch (NumberFormatException e2) { System.out.println("Error in number, try again."); public static String readstring (BufferedReader in) throws IOException { if (T==null) return T.nextToken(); private static void refresh (BufferedReader in) throws IOException { S = in.readline (); if (S==null) throw new EOFException(); T = new StringTokenizer (S); // Write methods // ------------- private static DecimalFormat N = new DecimalFormat(); private static final String spaces = " "; public static String writedouble (double number, int align, int frac) { N.setGroupingUsed(false); N.setMaximumFractionDigits(frac); N.setMinimumFractionDigits(frac); String num = N.format(number); if (num.length() < align) num = spaces.substring(0,align-num.length()) + num; return num; public static String writeint (int number, int align) { N.setGroupingUsed(false); N.setMaximumFractionDigits(0); String num = N.format(number); if (num.length() < align) num = spaces.substring(0,align-num.length()) + num; return num;