Lösningsförslag till tentamen

Relevanta dokument
Institutionen för TENTAMEN CTH HT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Föreläsning 3. Iteration while-satsen

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Föreläsning 3-4 Innehåll

Lösningsförslag till tentamen

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering

Institutionen för TENTAMEN CTH VT-17 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Lösningsförslag till tentamen

Lösningsförslag till tentamen

Iteration while-satsen

Föreläsning 7. for-satsen Fält

Objekt-orientering. Java är ett objekt-orienterat programmeringsspråk

Lösningsförslag till tentamen

Föreläsning 14. Filhantering

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Lösningsförslag: Instuderingsfrågor, del A

JAVAUTVECKLING LEKTION 7

Föreläsning 3. Iteration. while-satsen for-satsen do-satsen

OOP Objekt-orienterad programmering

Iteration. Föreläsning 3. TDA540 - Objektorienterad Programmering

4 13 / %.; 8 </" '': " / //&' " " ' * TelefonKostnad +,-%&. #!" $% " &' . > / ' 5 /' * 13/ &' static Math 1+" &'/ % 12 "" static "' * 1 /") %& &

Exempel på listor (klassen ArrayList). Ett exempel med fält. Avbildning är en speciell typ av lista HashMap.

Tentamen, EDAA20/EDA501 Programmering

Tentamen. Lösningsförslag

Del A (obligatorisk för alla)

Tentamen OOP

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

Objektorienterad programmering

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Institutionen för TENTAMEN CTH VT-14 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Föreläsning 8. Klassen String Mer om fält Klassen ArrayList

Föreläsnings 9 - Exceptions, I/O

Föreläsning 3-4 Innehåll. Diskutera. Metod. Programexempel med metod

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

DAT043 Objektorienterad Programmering

PROGRAMMERING-Java TENTAMINA

TENTAMEN OOP

OOP Objekt-orienterad programmering

Lösningsförslag, tentamen FYTA11 Javaprogrammering

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Uppgift: Algoritm för att beräkna kontrollsiffran i ett personnummer givet de 9 första siffrorna. Torrsimning av algoritm för personnummer

Testning och felhantering

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning REPETITION & EXTENTA

Mer om klasser och objekt

Lösningsförslag till tentamen i EDA011, lördagen den 16 december 2006

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Lösningsförslag till tentamen i EDA011/EDA017 Programmeringsteknik för F, E, I, π och N 25 maj 2009

Föreläsning 5-6 Innehåll

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Del A (obligatorisk för alla)

OOP Objekt-orienterad programmering

TENTAMEN OOP

Datastrukturer. Föreläsning Innehåll. Program med vektor Exempel. Deklarera vektorer

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA143. Tentamen för TDA143 PROGRAMMERADE SYSTEM DAG: TID: 8:30 13:30

Tentamen, EDAA20/EDA501 Programmering

Föreläsning 9-10 Innehåll

Saker du ska kunna Föreläsning 13 & 14

Institutionen för TENTAMEN CTH VT-15 Datavetenskap TDA540. Tentamen för TDA540 Objektorienterad programmering

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Lösningsförslag övning 2.

JAVAUTVECKLING LEKTION 4

Sammanfattning och repetition utgående från typiska tentamensuppgifter

Hur ser ett Java-program ut?

Att skriva till och läsa från terminalfönstret

Outline. For. I istället för att följa det normala ordningen, man ändra den. I i Java får man inte göra hopp hur som helst

Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

JAVAUTVECKLING LEKTION 11

Föreläsning 3. Stack

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Malmö högskola 2008/2009 CTS

Tänk på följande: Det finns en referensbok (Java) hos tentavakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Tentamen, EDAA20/EDA501 Programmering

Tentamen, EDA501 Programmering M L TM W K V

Klassen String Mer om fält Något om inläsning

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Föreläsning 7-8 Innehåll

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Lösningsförslag till tentamen i EDA011 Programmeringsteknik för F, E, I, π och N

System.out.println("Jaså du har "+ antalhusdjur+ " husdjur"); if ( antalhusdjur > 5 ) System.out.println("Oj det var många);

Föreläsning 3. Föreläsning 3. Iteration. while-satsen for-satsen do-satsen. while-satsen. do-satsen. Datatypen double

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Transkript:

Uppgift 1 Lösningsförslag till tentamen 140828 a) public class MyMax { public static void main(string[] args) { //5 ändra String till String[] System.out.println("Maximum is: " + maximum(5, 7)); //2 ändra "," till "+" System.out.println("Maximum is: " + maximum(7, 5)); //2 ändra "," till "+" System.out.println("Maximum is: " + maximum(3, 4, 9)); //2 ändra "," till "+" System.out.println("Maximum is: " + maximum(3, 9, 4)); //2 ändra "," till "+" System.out.println("Maximum is: " + maximum(9, 4, 3)); //2 ändra "," till "+" //constructor // Returns the maximun value of the parameters x, y and z public static int maximum (int x, int y, int z) { //3 måste vara en statisk metod, lägg till static int max = x; if (y > max) //6 ta bort ";" max = y; if (z > max) max = z; return max; //maximum // Returns the maximun value of the parameters x and y public static int maximum (int x, int y) { if (x > y) return x; return y; //maximum //MyMax //1 varje parameter måste anges med en typ //4 y måste returneras om inte x är störst b) När metoden grow anropas uppdateras inte instansvariabeln area! Felet kan korrigeras antingen genom att förändra metoden grow: public void grow() { sidelength = 2 * sidelength; area = sidelength*sidelength; //grow Man kan dock diskutera om instansvariabeln area överhuvudtaget skall finnas i klassen. En (bättre) alternativ lösning är därför public class Square { private int sidelength; public Square(int initiallength) { sidelength = initiallength; //constructor public int getarea() { return sidelength * sidelength; //getarea public void grow() { sidelength = 2 * sidelength; //grow //Square

c) Felet är att likhetsoperatorn == inte kan användas, eftersom likhetsoperatorn == ger true om och endast om operanderna avser samma objekt! För att få det önskade resultatet skall objekten jämföras med equals-metoden. public static boolean proceed() { Scanner scannerobject = new Scanner(System.in); while (true) { System.out.println("Answer yes to continue, and no to stop."); String answer = scannerobject.next(); if (answer.equals("yes") answer.equals("y")) return true; if (answer.equals("no") answer.equals("n")) return false; else System.out.println("Your answer should be yes or no!"); //proceed

Uppgift 2 Med användning av dialogrutor: import javax.swing.*; import java.util.*; public class Heron { public static void main (String[] arg) { while (true) { String indata = JOptionPane.showInputDialog("Ange längden på triangelns tre sidorna:"); if (indata == null) break; Scanner sc = new Scanner(indata); double a = sc.nextdouble(); double b = sc.nextdouble(); double c = sc.nextdouble(); if (a >= (b+c) b >= (a+c) c >= (a+b) ) { JOptionPane.showMessageDialog(null, "DETTA ÄR INGEN TRIANGEL!"); else { double yta = heron(a, b, c); JOptionPane.showMessageDialog(null, String.format("Ytan av triangeln är %.3f", yta)); public static double heron(double a, double b, double c) { double p = (a+b+c) / 2.0; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); //heron //Heron Med användning av System.in och System.out: import java.util.*; public class Heron { public static void main (String[] arg) { while (true) { System.out.print("Ange längden på triangelns tre sidorna: "); Scanner sc = new Scanner(System.in); if (!sc.hasnext()) break; double a = sc.nextdouble(); double b = sc.nextdouble(); double c = sc.nextdouble(); if (a >= (b+c) b >= (a+c) c >= (a+b)) { System.out.println("DETTA ÄR INGEN TRIANGEL!"); else { double yta = heron(a, b, c); System.out.println(String.format("Ytan av triangeln är %.3f", yta)); //main public static double heron(double a, double b, double c) { double p = (a+b+c) / 2.0; return Math.sqrt(p*(p-a)*(p-b)*(p-c)); //heron //Heron

Uppgift 3 public static int[] append(int[] vekta, int[] vektb) { if (vekta == null && vektb == null) throw new IllegalArgumentException(); if (vekta == null) { int[] res = new int[vektb.length]; for (int i = 0; i < vektb.length; i = i + 1) { res[i] = vektb[i]; else if (vektb == null) { int[] res = new int[vekta.length]; for (int i = 0; i < vekta.length; i = i + 1) { res[i] = vekta[i]; else { int[] res = new int[vekta.length + vektb.length]; int index = 0; for (int i = 0; i < vekta.length; i = i + 1) { res[index] = vekta[i]; for (int i = 0; i < vektb.length; i = i + 1) { res[index] = vektb[i]; //append Alternativ lösning: public static int[] append(int[] vekta, int[] vektb) { if (vekta == null && vektb == null) throw new IllegalArgumentException(); if (vekta == null) { vekta = new int[0]; else if (vektb == null) { vektb = new int[0]; int[] res = new int[vekta.length + vektb.length]; int index = 0; for (int i = 0; i < vekta.length; i = i + 1) { res[index] = vekta[i]; for (int i = 0; i < vektb.length; i = i + 1) { res[index] = vektb[i]; //append

Uppgift 4 public static int[][][] sepiafilter(int[][][] sample) { int[][][] newsample = new int[sample.length][sample[0].length][3]; for (int x = 0; x < newsample.length; x = x + 1) { for (int y = 0; y < newsample[x].length; y = y + 1) { newsample[x][y][0] = (int) luminans(sample[x][y]); newsample[x][y][1] = (int) (0.6 * luminans(sample[x][y])); newsample[x][y][2] = (int) (0.4 * luminans(sample[x][y])); return newsample; //sepiafilter public static double luminans(int[] c) { return 0.299*c[0] + 0.587*c[1] + 0.114*c[2]; //luminans

Uppgift 5 a) b) c) d) import java.util.random; public class MexicoDice { private final Random random = new Random(); public int roll() { int r1 = random.nextint(6) + 1; int r2 = random.nextint(6) + 1; int result; if (r1 >= r2) { result = 10 * r1 + r2; else { result = 10 * r2 + r1; return result; //roll //MexicoDice public Mexico(List<String> playernames) { MexicoDice dice = new MexicoDice(); for (String name : playernames) { players.add(new Player(name, MexicoOptions.STARTING_FEE, dice)); //constructor public boolean finished() { int count = 0; if (p.hasmoney()) { count++; return count == 1; //finished public void pottowinner() { if (p.hasmoney()) { p.add(pot); pot = 0; break; //pottowinner

e) public Player lowestgrade() { final int MAX = 100000; List<Integer> scores = new ArrayList<>(); if (p.getscore() == 0 p.getscore() == MEXICO) { scores.add(max); else if (p.getscore() / 10 == p.getscore() % 10) { int i = p.getscore(); scores.add(100 * i + 10 * i + i); else { scores.add(p.getscore()); int minindex = 0; for (int i = 0; i < scores.size(); i++) { if (scores.get(i) < scores.get(minindex)) { minindex = i; return players.get(minindex); //lowestgrade Alternativ lösning: public Player lowestgrade() { final int MAX = 100000; int minvalue = MAX; Player looser = null; int value; if (p.getscore() == 0 p.getscore() == MEXICO) { value = MAX; else if (p.getscore() / 10 == p.getscore() % 10) { value = 10 * p.getscore(); else { value = p.getscore(); if (value < minvalue) { minvalue = value; looser = p; return looser; //lowestgrade f) Player p = mexico.lowestgrade(); System.out.println(p.getName() + " must put in pot"); p.withdraw(mexicooptions.payoff) ; mexico.addtopot(mexicooptions.payoff );