L?sninger n?tte-oppg. uke 4, med mer: 14. - 20. sep (INF1000 - H?st 2011)
-
Ukens n?tt 1: (vanskelig!)
Lag et program som ber om 5 tall fra bruker, og deretter finner og skriver ut hvilke tall som er gjentatt blant disse. F.eks. hvis bruker tastet inn 6 6 3 6 3, s? skal programmet gi meldingen:Tall som er gjentatt: 6 3 Send l?sningen din til josek [at] ifi.uio.no, s? legger jeg den ut i l?sningsforslagene!
L?sningsforslag laget av Vegard Knutsen Lillevoll i gruppe 5: (en veldig god og oversiktlig l?sning, som lett kan utvides til flere enn 5 tall)
import java.util.*; class O9 { public static void main (String[] args) { // scan is used for reading five numbers from the // user into the string. Scanner scan = new Scanner(System.in); String input; // These arrays will hold the numbers: The first // one will hold all while the second one will // hold the repeated ones. The int is used to // keep track of how far into repeatedNumbers // we've gotten. int[] numbers = new int[5]; int[] repeatedNumbers = new int[5]; int p = 0; System.out.print("Skriv inn 5 tall: "); input = scan.nextLine(); // Parse the input to get the numbers String[] stringNumbers = input.split(" "); for (int i = 0; i < 5; i++) { try { numbers[i] = Integer.parseInt(stringNumbers[i]); } catch (NumberFormatException e) { System.out.println("Vennligst skriv inn tall pa formen: 1 2 3 4 5"); System.exit(1); } // Check if the number is already in the array. // If that is the case, it's been entered twice, QED. for (int j = 0; j < i; j++) { if (numbers[j] == numbers[i]) { // Make sure there are no duplicates in the repeatedNumbers array boolean duplicate = false; for (int k = 0; k < p; k++) { if (repeatedNumbers[k] == numbers[i]) { duplicate = true; break; } } if (!duplicate) { repeatedNumbers[p] = numbers[i]; p++; } } } } // If there are repeated numbers... if (p > 0) { // Print all the repeated numbers System.out.print("Tall som er gjentatt:"); for (int i = 0; i < p; i++) { System.out.print(" " + Integer.toString(repeatedNumbers[i])); } System.out.print("\n"); } else { System.out.println("Ingen gjentatte tall."); } } }
F?rste utgave av oppgave 5 med l?sningsforslag:
- Flerdimensjonal array:
To-dimensjonale arrayer brukes p? samme m?te som en-dimensjonale, men har to sett med klammer, og gjennomg?s best vha. to nestede for-l?kker:import easyIO.*; class Array2D { public static void main(String[] args) { int[][] b = new int[3][4]; for (int i = 0; i < 3; i++) { for (int j = 0; j < 4; j++) { b[i][j] = i * j; System.out.println(<Hva mangler her?>); } } } }
Arrayen kan illustreres slik: 0 1 2 3 0 1 X 2 KJ?REEKSEMPEL: > java Array2D b[0][0] = 0 b[0][1] = 0 b[0][2] = 0 b[0][3] = 0 b[1][0] = 0 b[1][1] = 1 b[1][2] = 2 b[1][3] = 3 b[2][0] = 0 b[2][1] = 2 b[2][2] = 4 b[2][3] = 6
(b) Hvor mange elementer er det plass til i arrayen b vist over?
(c) Hva er indeksene til elementet markert med "x" i figuren, og hvilken verdi f?r elementet utdelt i programmet?(a) System.out.println("b[" + i + "][" + j + "] = " + b[i][j]); (b) 12 elementer (dvs. 3 x 4) (c) b[1][2] == 2
Tibakemelding om denne nettsiden kan du skrive i bloggen eller sende p? mail til josek [a] ifi.uio.no