Lösningar till tentamen, del A 2018-04-06 // Uppgift 1 a Metoden cCopy returnerar en referens till samma array som den privata variabeln a pekar på. Detta gör att man utifrån har möjlighet att ändra i arrayen, trots att den deklareats som private. Metoden aCopy är felkonstruerad. Den borde skapa en kopia av arrayen och returnera en referens till denna istället. // Uppgift 1b static int[] frekvens(int[] svar, int min, int max) { int[] f = new int[max-min+1]; for (int i = 0; i < svar.length; i++) if (svar[i] >= min && svar[i] <= max) f[svar[i]-min]++; return f; } // Uppgift 2 import java.util.*; import javax.swing.*; import java.io.*; public class Statistik { // Deluppgift a static double median(double[] tal) { double a[] = (double[]) tal.clone(); // eller System.arraycopy Arrays.sort(a); int n = a.length; if ( n % 2 != 0) return a[(n-1)/2]; else return (a[n/2-1] + a[n/2]) / 2; } // Deluppgift b public static void main(String[] arg) throws FileNotFoundException { String filnamn = JOptionPane.showInputDialog("Filens namn? "); Scanner Sc = new Scanner(new File(filnamn)); double[] input = new double[100]; int n = 0; while( Sc.hasNextDouble()) { input[n++] = Sc.nextDouble(); } double data[] = new double[n]; System.arraycopy(input,0, data,0, n); JOptionPane.showMessageDialog(null, "Medianen är " + median(data)); } } // Uppgift 3 public class Complex { private static final double epsilon = 1e-15; private double re, im; public Complex() {} public Complex(Complex z) { this(z.re, z.im); } public Complex(double rr, double ii) { re = rr; im = ii; } public double getRe() { return re; } public double getIm() { return im; } public void add(Complex z) { re = re + z.re; im = im + z.im; } public void mult(Complex z) { re = re*z.re - im*z.im; im = re*z.im + im*z.re; } public boolean equals(Complex z) { return Math.abs(re-z.re)= 0) return re + "+" + im + "*i"; else return re + "" + im + "*i"; } }