public class Exercise5 { public static void main(String[] args) { // test calls here } public static int minimumIndex(int[] a) { int m = 0; int n = a.length; for (int i = 1; i < n; i++) { if (a[i] < a[m]) m = i; } return m; } public static int minimumElement1(int[] a) { int p = minimumIndex(a); return a[p]; } public static int minimumElement2(int[] a) { int m = 0; int n = a.length; for (int i = 1; i < n; i++) { if (a[i] < m) m = a[i]; } return m; } public static int[] insert(int[] a, int[] b, int p) { int m = a.length; int n = b.length; int[] c = new int[m+n]; for (int i = 0; i < p; i++) c[i] = a[i]; for (int j = p; j < p+n; j++) c[j] = b[j-p]; for (int k = p+n; k < m+n; k++) b[k] = a[k]; return c; } public static int replace(char[] a, char x, char y) { int n = a.length; int result = -1; for (int i = n-1; i >= 0; i--) { if (a[i] == x) { a[i] = y; result = i; } } return result; } public static boolean subtract1(int[] a, int[] b) { int n = a.length; boolean trunc = false; for (int i = 0; i < n; i++) { if (a[i] > b[i]) a[i] = a[i]-b[i]; else trunc = true; } return trunc; } public static void subtract2(int[] a, int[] b) throws Truncated { int n = a.length; for (int i = 0; i < n; i++) { if (a[i] < b[i]) throw new Truncated(i); a[i] = a[i]-b[i]; } } public static class Truncated extends Exception { public final int pos; /*@ public normal_behavior @ requires true; @ assignable this.pos; @ ensures this.pos == pos; @*/ public Truncated(int pos) { this.pos = pos; } } }