Laboration 12, Arrayer



Relevanta dokument
Metodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer

Föreläsning 4: for, while, do-while

3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten Föreläsning 3

DD2310. Javaprogrammering för Pythonprogrammerare. Johan Boye

Funktioner. Programmering. Egendefinierade funktioner i Java. En Java-funktions anatomi. hh.se/db2004. Statiska metoder. Funktioner. resultatvärde.

Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel

Att svara på en remiss

Heltal(int) Programmeringsteknik 54

NATIONELLT KURSPROV I MATEMATIK KURS A HÖSTEN Del II

Vikt och volym. Kapitel 4 Vikt och volym

An enrichment and extension programme for primary-aged children

Föreläsning 5 Mer om funktioner, villkor

Nedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:

Skapa din egen kanal på Youtube

7 GRUNDERNA I PROGRAMMERING

Med denna aktivitet försöker jag

Bridge. på 10 minuter

PROV. 10 Uppräknade datatyper

Hur många registreringsskyltar finns det som inte innehåller samma tecken mer än en

Klara målen i 3:an - undervisa i matematik!

Akademin för utbildning, kultur och kommunikation MMA132 Numeriska Metoder Avdelningen för tillämpad matematik Datum: 17 januari 2013

Ekonomiavdelningen Åtgärda en faktura

Snabbguide: Användning av filsamling / resources i Mondo

En bok kan förändra livet. En bokcirkel kan förändra världen. Samtalsmodell för bokcirkel

NATIONELLT KURSPROV I MATEMATIK KURS A HÖSTEN Del I

Näsgård Mobile TID Manual senast ändrad Näsgård Mobile TID. Inloggning

4 tips för fler affärer

TITEL. Johannes Hedberggymnasiet. Laborantens namn: Medlaboranters namn: Klass: Skola: Påbörjad: Inlämnad:

Träningsprogram för att bli av med tvångssyndrom

Transkript:

Laboration 12, Arrayer Avsikten med denna laboration är att du ska träna på att använda arrayer. Skapa paketet laboration12 i ditt laborationsprojekt innan du fortsätter på denna laboration. Uppgift 1 public void baklänges(int[] tal) vilken skriver ut talen i en array med heltal baklänges. Talen separeras med komma-tecken och ett mellanslag. Om du testkör metoden med koden: Uppgift1 upp1 = new Uppgift1(); int[] fält1 = {1,2,3; int[] fält2 = {1000,100,10,1; System.out.print("Fält 1 baklänges: "); upp1.baklänges(fält1); System.out.print("Fält 2 baklänges: "); upp1.baklänges(fält2); så ska du få resultatet till höger. Uppgift 2 public int finns(int tal, int[] arraymedtal) vilken kontrollerar om tal finns i arrayen arraymedtal. Om tal finns i arrayen så returneras positionen för tal i arrayen (första förekomsten om flera gånger) och annars returneras -1. Testprogram Uppgift2 upp2 = new Uppgift2(); int[] array = {1,2,3,9,5,9; int position; position = upp2.finns(7,array); System.out.println("Position för 7: "+position); position = upp2.finns(9,array); System.out.println("Position för 9: "+position); Körresultat Position för 7: -1 Position för 9: 3 DA129A, Programmering 1 1

Uppgift 3 Skriv ett program vilket deklarerar en array som rymmer 10 heltal låter användaren mata in tio heltal vilka lagras i arrayen. Inmatningen ska ske med inmatningdialog, t.ex. genom Input.readInt(String). skriver ut heltalen i den ordning de matades in skriver vart annat tal framlänges skriver ut samtliga tal baklänges Programmet ska innehålla metoderna: skrivtal(int[] array) skrivvartannat(int[] array) Dessutom bör din lösning använda metoden baklänges, vilken du skrev i uppgift 1. Körresultat vid inmatning av talen: 12 5 8 2 3 3 3 11 221 7: Följande tal matades in: 12, 5, 8, 2, 3, 3, 3, 11, 221, 7 Vartannat tal: 12, 8, 3, 3, 221 Talen baklänges: 7, 221, 11, 3, 3, 3, 2, 8, 5, 12 Uppgift 4 public double[] baklänges(double[] array) vilken tar en array som input och som returnerar en array med samma element men med elementen i omvänd ordning. Testprogram Utskrifter Uppgift4 upp4 = new Uppgift4(); double[] array = {3.2, 4.7, -13.1, 14, 17.25; double[] kopia = upp4.baklänges(array); for(int i=0; i<array.length; i++) System.out.print(array[i]+" "); 3.2 4.7-13.1 14.0 17.25 for(int i=0; i<kopia.length; i++) System.out.print(kopia[i]+" "); 17.25 14.0-13.1 4.7 3.2 Tänkbar algoritm för baklänges-metoden 1. Skapa en array med samma kapacitet som input-fältet 2. Kopiera elementen från input-arrayen till den nya arrayen. Men gör det så att elementen byter plats, ungefär med tilldelningen (i är loop-variabel) nyarray[i] = array[array.length-i-1]; 3. Returnera referensen till den nya arrayen. DA129A, Programmering 1 2

Uppgift 5 public double[] intervall(double[] array, double min, double max) vilken tar en array och ett intervall (min-max) som input och som returnerar en ny array som innehåller de element i input-arrayen som är i intervallet (min <= element <= max). Tänkbar algoritm för intervall-metoden 1. Räkna antalet element i input-arrayen som är i intervallet 2. Skapa en ny array med korrekt kapacitet 3. Kopiera över elementen i intervallet, från input-arrayen, till den nya arrayen 4. Returnera referensen till den nya arrayen. Skriv dessutom ett program som testar din lösning. Uppgift 6 public int[] udda(int[] array) vilken ska returnera en array som innehåller alla udda element i en input-array. Om input-arrayen är {4, 3, 79, 55, 56, 34, 11, 17 så ska retur-arrayen vara {3, 79, 55, 11, 17 Extrauppgift Skriv ett program som simulerar 100000 kast med tre tärningar och som skriver ut resultatet av kasten i tabellform. Vid varje kast så ska tärningarnas siffersumma lagras. Detta sker med fördel i en array: int[] siffersumma = new int[19]; där vardera facket summerar antalet förekomster av en speciell siffersumma. Den minsta möjliga siffersumman är 3 och den största är 18. Exempel: Om tärningarna visar 8 prickar tillsammans så ska siffersumma[8] ökas med ett. Om tärningarna visar 18 prickar tillsammans så ska siffersumma[18] ökas med ett. Om du testar din metod bör den ge ett resultat liknande figuren till höger. DA129A, Programmering 1 3

Förslag till lösningar Uppgift 1 public void baklänges(int[] tal) { for(int i=tal.length-1; i>=0; i--) { System.out.print(tal[i]); if(i>0) { System.out.print(", "); Uppgift 2 public int finns(int tal, int[] arraymedtal) { for(int i=0; i<arraymedtal.length; i++) { if(tal == arraymedtal[i]) { return i; return -1; Uppgift 3 public class Uppgift3 { public void inmatning(int[] array) { array[i] = extra.input.readint("ange tal " + (i+1)); public void skrivtal(int[] array) { System.out.print("Följande tal matades in: "); System.out.print(array[i]); if(i<array.length-1) System.out.print(", "); public void skrivvartannat(int[] array) { System.out.print("Vartannat tal: "); for(int i=0; i<array.length; i+=2) { System.out.print(array[i]); if(i<array.length-2) System.out.print(", "); public void program() { Uppgift1 upp1 = new Uppgift1(); int[] heltal = new int[10]; inmatning(heltal); skrivtal(heltal); skrivvartannat(heltal); System.out.print("Talen baklänges: "); upp1.baklänges(heltal); public static void main(string[] args) { Uppgift3 upp3 = new Uppgift3(); upp3.program(); DA129A, Programmering 1 4

Uppgift 4 public double[] baklänges(double[] array) { double[] nyarray = new double[array.length]; nyarray[i] = array[array.length-i-1]; return nyarray; Uppgift 5 public double[] intervall(double[] array, double min, double max) { int antal = 0, index=0; double[] nyarray; if((array[i]>=min) && (array[i]<=max)) antal++; nyarray = new double[antal]; if((array[i]>=min) && (array[i]<=max)) { nyarray[index] = array[i]; index++; return nyarray; Uppgift 6 public int[] udda(int[] array) { int antal=0, index=0; int[] nyarray; if(array[i] % 2 == 1) antal++; nyarray = new int[antal]; if(array[i] % 2 == 1) { nyarray[index] = array[i]; index++; return nyarray; DA129A, Programmering 1 5

Extrauppgift package laboration12; import extra.*; public class Extrauppgift { public int tärningskast() { return (int)(math.random()*6)+1; public void kasta(int[] resultat, int antalkast) { int tärning1, tärning2, tärning3; for(int i=0; i<antalkast; i++) { tärning1 = tärningskast(); tärning2 = tärningskast(); tärning3 = tärningskast(); resultat[tärning1+tärning2+tärning3]++; public void skrivresultat(int[] resultat) { System.out.println("Summa Antal"); for(int i=3; i<resultat.length; i++) { System.out.println(Output.format(i,5)+Output.format(resultat[i],8)); public void program() { int[] siffersumma = new int[19]; kasta(siffersumma, 100000); skrivresultat(siffersumma); public static void main(string[] args) { Extrauppgift e = new Extrauppgift(); e.program(); DA129A, Programmering 1 6