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

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

Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I)

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

INF Løsning på seminaropppgaver til uke 8

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

UNIVERSITETET I OSLO

Universitetet i Bergen Det matematisk-naturvitenskapelige fakultet Institutt for informatikk

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

INF100 Institutt for informatikk Universitetet i Bergen Øving 5

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

TOD063 Datastrukturer og algoritmer

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

INF 1000 Prøveeksamen. 23. november Ole Christian og Arne. Oppgave 1 (10 poeng) Er disse programsetningene lovlige i Java? Oppgave 2 (10 poeng)

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

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

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

UNIVERSITETET I OSLO

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Sortering med tråder - Quicksort

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag Test 2

INF Uke 10. Ukesoppgaver oktober 2012

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO

Løsningsforslag, inf101, våren 2001

Forelesning inf Java 5

Forelesning inf Java 5

INF1000 (Uke 14) Resten av eksamen H03 + del av V05

Løsningsforslag eksamen in105, våren 2000

UNIVERSITETET I OSLO

EKSAMEN I EMNET INF100/INF100-F Grunnkurs i programmering (Programmering 1) Fredag 16. desember 2005 Tid: 09:00 14:00

Løsningsforslag til eksamen i INF1000 våren 2006

Forelesning inf Java 4

Oppgave 1 - Kortsvarsoppgave. INF1000 eksamen V05. Oppgave 1 (c) Oppgave 1 (b) Svar: a = 9, b=10

i=0 Repetisjon: arrayer Forelesning inf Java 4 Repetisjon: nesting av løkker Repetisjon: nesting av løkker 0*0 0*2 0*3 0*1 0*4

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

INF1000 (Uke 4) Mer om forgreninger, While-løkker

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

Uke 8 Eksamenseksempler + Ilan Villanger om studiestrategier. 11. okt Siri Moe Jensen Inst. for informatikk, UiO

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Forkurs INF1010. Dag 1. Andreas Færøvig Olsen Tuva Kristine Thoresen

UNIVERSITETET I OSLO

TDT4100 Objektorientert programmering

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Repetisjon. Mer om forgrening While-løkker

Løsningsforslag INF desember 2007

INF1000 : Forelesning 5

IN1010 våren januar. Objektorientering i Java

LO191D/LC191D Videregående programmering

Gjennomgang prøveeksamen oppgave 1, 2, 4, 5, 7

UNIVERSITETET I OSLO

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

Eksamen Objektorientert Programmering 2013

INF1010. Grensesnittet Comparable<T>

UNIVERSITETET I OSLO

INF1010 våren januar. Objektorientering i Java

INF Notat om I/O i Java

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

OPPGAVE 5b og 8b Java Kode

Ta inn og ut av 2D-array. Java 6. Liste over ulike verdier i 2D-array. Det ferdige programmet. Vi skal lage et program som illustrerer hvordan man

Forelesningsquiz. Forelesning inf Java 5. Sett dere to (eller tre) sammen og besvar de fire spørsmålene på utdelt ark. Tid: 15 min.

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

INF2100. Oppgaver 23. og 24. september 2010

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

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

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

INF Uke 10. Løsningsforslag ukesoppgaver oktober 2012

Løse reelle problemer

UNIVERSITETET I OSLO

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

Forkurs INF1010. Dag 3. Andreas Færøvig Olsen Eivind Storm Aarnæs

UNIVERSITETET I OSLO

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Oppgave 1. INF1000 Uke 13. Oppgave 2. Oppgave 3. Er dette lovlige deklarasjoner (når de foretas inni en metode)? JA NEI

Objektorientert Programmering Ekstraordinær eksamen 2014

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

INF1000 Eksamen 2014 (modifisert)

UNIVERSITETET I OSLO

Gjennomgang av eksamen H99

/** *Kamp klassen inneholder kampfakte og hoveddelen av kampmotoren. young */

Oppgave01.java class Bongo { 2 public static void main(string[] args){ 3 int[][][]bongo = new int[2][3][4]; 4 5 // SVAR: 24 6 } 7 } 8

INF2100. Oppgaver 26. september til 1. oktober 2007

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

I dag INF1000 (Uke 4) Mer om forgreninger, While-løkker. Tre måter å lese fra terminal. Tre måter å lese fra terminal.

INF1000 Prøveeksamen Oppgave 7 og 9

Eksamen. Objektorientert Programmering IGR 1372

UNIVERSITETET I OSLO

INF1010 Sortering. Marit Nybakken 1. mars 2004

Inf 1000 høst 2005 Løsningsforslag ordinær eksamen

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Transkript:

Universitetet i Bergen Det matematisk naturvitenskapelige fakultet Institutt for informatikk Side 1 av 8 Eksamen i emnet INF100 Grunnkurs i programmering (Programmering I) Løsningsforslag Fredag 10. desember 2004 Tid: 9.00 14.00 Oppgave 1 (5 %) a) 1 b) 3 c) 2.75 d) true e) false Oppgave 2 (15 %) a) 42 b) X...X.X.X...X...X.X. X...X c) 2 d) 5 13 12 e) 2.5 3.0 3.0

INF100 Grunnkurs i programmering Side 2 av 8 Oppgave 3 (15 %) public class Ordtelling { public static void main(string[] args) { final int SLUTTANTALL = 7; String[] ordliste = new String[SLUTTANTALL]; int[] forekomster = new int[sluttantall]; int antallulike = 0; String ord; boolean funnet; System.out.println("Skriv inn ord inntil du har skrevet " + SLUTTANTALL + " forskjellige."); while (antallulike < SLUTTANTALL) { System.out.print("Tast inn et ord: "); ord = Terminal.lesString(); // Sjekk om ordet er skrevet inn tidligere funnet = false; for (int i = 0; i < antallulike; i++) { if (ord.equals(ordliste[i])) { if (forekomster[i] == 1) System.out.println("Skrevet 1 gang tidligere!"); else System.out.println("Skrevet " + forekomster[i] + " ganger tidligere!"); forekomster[i]++; funnet = true; break; if (!funnet) { ordliste[antallulike] = ord; forekomster[antallulike] = 1; antallulike++; System.out.println("Nytt ord nummer " + antallulike + "!"); System.out.println("Da har jeg " + SLUTTANTALL + " ord! Takk!");

INF100 Grunnkurs i programmering Side 3 av 8 Oppgave 4 (65 %) // Eksamen INF100 h2004 * Klasse som representerer resultater for et fotballag public class Lag { // Oppgave 4a Navn paa laget private String navn; Antall spilte kamper private int kamper; Totalt antall maal laget har scoret private int sumforlengsmaal; Totalt antall maal laget har sluppet inn private int sumbaklengsmaal; Antall poeng private int poeng; // Oppgave 4b Konstruktoer som oppretter et lag med 0 spilte kamper public Lag(String navn) { this.navn = navn; // Oppgave 4c Returnerer lagets navn public String hentnavn() { return navn; Returnerer antall maal laget har scoret public int hentantallforlengsmaal() { return sumforlengsmaal; Returnerer antall poeng public int hentpoeng() { return poeng; // Oppgave 4d Returnerer maalforskjellen public int hentmaalforskjell() { return sumforlengsmaal - sumbaklengsmaal; // Oppgave 4e

INF100 Grunnkurs i programmering Side 4 av 8 * Metode for aa oppdatere resultatene etter en kamp * @param vaaremaal antall scoringer av det aktuelle laget * @param deresmaal antall scoringer av motstanderne public void registrerkamp(int vaaremaal, int deresmaal) { kamper++; sumforlengsmaal += vaaremaal; sumbaklengsmaal += deresmaal; if (vaaremaal > deresmaal) poeng += 3; else if (vaaremaal == deresmaal) poeng += 1; // Oppgave 4f Skriver ut en rad i tabellen til terminalen public void skrivut() { System.out.println(navn + "\t" + kamper + "\t" + sumforlengsmaal + "-" + sumbaklengsmaal + "\t" + poeng); // Oppgave 4g * Sammenligner resultatene for to lag * @return +1 hvis aktuelt lag leder, -1 hvis annetlag leder, * 0 hvis de ligger helt likt public int compareto(lag annetlag) { // Sammenlign poeng foerst if (poeng > annetlag.poeng) return 1; else if (poeng < annetlag.poeng) return -1; // Lik poengsum: sammenlign maalforskjell if (hentmaalforskjell() > annetlag.hentmaalforskjell()) return 1; else if (hentmaalforskjell() < annetlag.hentmaalforskjell()) return -1; // Lik poengsum og maalforskjell: sammenlign antall maal if (sumforlengsmaal > annetlag.sumforlengsmaal)

INF100 Grunnkurs i programmering Side 5 av 8 return 1; else if (sumforlengsmaal < annetlag.sumforlengsmaal) return -1; else return 0; // helt likt! // Eksamen INF100 h2004 import java.io.*; * Klasse som representerer alle lagene med resultater i en fotballserie public class Serie { // Oppgave 4h Navn paa serien private String navn; Tabell over lagene private Lag[] tabell; // Oppgave 4i * Konstruktoer som oppretter en tabell med nye lag * @param navnene tabell med navn paa alle lagene public Serie(String serienavn, String[] lagnavn) { navn = serienavn; tabell = new Lag[lagnavn.length]; for (int i = 0; i < lagnavn.length; i++) tabell[i] = new Lag(lagnavn[i]); // Oppgave 4j * Finner et lag i tabellen med gitt navn * @return referanse til laget, eller null hvis det ikke ble funnet public Lag finnlag(string navn) { for (int i = 0; i < tabell.length; i++)

INF100 Grunnkurs i programmering Side 6 av 8 if (tabell[i].hentnavn().equals(navn)) return tabell[i]; return null; // Oppgave 4k * Registrerer et kampresultat * @param navn1 navn paa det foerste laget * @param navn2 navn paa det andre laget * @param maal1 antall maal scoret av lag1 * @param maal2 antall maal scoret av lag2 * @return true hvis registreringen gikk bra, false ved feil navn public boolean registrerkamp(string navn1, String navn2, int maal1, int maal2) { Lag lag1 = finnlag(navn1); Lag lag2 = finnlag(navn2); if (lag1 == null lag2 == null) return false; lag1.registrerkamp(maal1,maal2); lag2.registrerkamp(maal2,maal1); return true; // Oppgave 4l * Leser en tekstfil med kampresultater og registrerer alle * kamper mellom to lag i den aktuelle serien. * Filen inneholder en linje for hvert resultat paa formen: * lag1-lag2 antallmaal1-antallmaal2 * @param filnavn navn paa tekstfilen * @return antall registrerte kamper public int lesresultatfil(string filnavn) throws IOException { String post; int feltslutt1, feltslutt2, feltslutt3; String lag1, lag2; int maal1, maal2; int antallregistrert = 0; FileReader tekstfilleser = new FileReader(filnavn); BufferedReader tekstleser = new BufferedReader(tekstFilLeser); // Leser en og en linje til filen er slutt (test inne i loekken)

INF100 Grunnkurs i programmering Side 7 av 8 while (true) { post = tekstleser.readline(); if (post == null) // slutt paa filen? return antallregistrert; feltslutt1 = post.indexof( - ); feltslutt2 = post.indexof( ); feltslutt3 = post.indexof( -, feltslutt2 + 1); lag1 = post.substring(0, feltslutt1); lag2 = post.substring(feltslutt1 + 1, feltslutt2); maal1 = Integer.parseInt(post.substring(feltslutt2 + 1, feltslutt3)); maal2 = Integer.parseInt(post.substring(feltslutt3 + 1)); if (registrerkamp(lag1, lag2, maal1, maal2)) antallregistrert++; // Oppgave 4m Sorterer lagtabellen med beste lag foerst public void sortertabell() { for (int siste=tabell.length-1; siste>0; siste--) { for (int dette=0; dette<siste; dette++) { if (tabell[dette].compareto(tabell[dette+1]) < 0) { // (1) Lag temp = tabell[dette]; tabell[dette] = tabell[dette+1]; tabell[dette+1] = temp; // Oppgave 4n Skriver ut tabellen til terminalen public void skrivtabell() { sortertabell(); System.out.println(navn); System.out.println(); System.out.println(" \tkamper\tmaal\tpoeng"); for (int i = 0; i < tabell.length; i++) tabell[i].skrivut(); System.out.println(); // Oppgave 4o

INF100 Grunnkurs i programmering Side 8 av 8 * Gjennomfoerer opprykk/nedrykk mellom to serier. * Begge tabellene antas aa vaere sortert foer kallet. * @param over serien det skal rykkes opp til * @param nrfratoppen plasseringsnummeret som rykker opp i den aktuelle serien * @param nrfrabunnen plasseringsnummeret som rykker ned i serien over public void oppned(serie over, int nrfratoppen, int nrfrabunnen) { // Finn tabekkindeksene til de to lagene som skal byttes int toppindeks = nrfratoppen-1; // tabellindeks i this int bunnindeks = over.tabell.length - nrfrabunnen; // tabellindeks i serien over // Bytt om lagene System.out.println(tabell[toppindeks].hentNavn() + " rykker opp, " + over.tabell[bunnindeks].hentnavn() + " rykker ned."); Lag temp = over.tabell[bunnindeks]; over.tabell[bunnindeks] = this.tabell[toppindeks]; this.tabell[toppindeks] = temp; Eivind Coward Karl Holmås