Llicència
Pots copiar i redistribuir aquest material seguint la llicència Attribution-NonCommercial-ShareAlike 4.0 International CC BY-NC-SA 4.0, indicant-ne autors originals, l'origen (aquesta web), sense fins comercials i mantenint-ne aquesta la llicència
Autors:
Exercicis arrays
- Usa el mateix projecte que l'usat als exercicis
- Crea un package cat.itb.elteuusuari(*).dam.m03.uf1.arrays.
- La classe de cada exercici ha de ser el nom de l'exercici
(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat
Sumari
Arrays
DayOfWeek
Donat un enter, printa el dia de la setmana amb text (dilluns, dimarts, dimecres), tenint en compte que dilluns és el 0.
- input: 6
- output: diumenge
AddValuesToArray
Inicialitza un array de floats de tamany 50, amb el valor 0.0f a tots els elements.
Després asigna els els valors següents a les posicions indicades:
- primera: 31.0f
- segona: 56.0f
- vintena: 12.0f
- última: 79.0f
Sortida
[31.0, 56.0, 0.0, 0.0, 0.0, 0.0, 0.0, 12.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 79.0]
PushButtonPadlockSimulator
Volem fer un simulador d'un candau com el de la foto:
La nostra versió, taḿbé tindrà 8 botons, però el primer serà el 0. Al inici tots els botons estaran sense apretar.
L'usuari introduirà enters indicant quin botó ha d'apretar (o desapretar)
Quan introdueixi el -1, és que ja ha acabat i hem d'imprimir l'estat del candau
- input:
1 2 3 4 4 4 4 3 5 -1
- output:
[false, true, true, false, false, true, false, false]
BoxesOpenedCounter
Un banc té tot de caixes de seguretat, enumerades del 0 al 10.
Volem registar quan els usuaris obren una caixa de seguretat, i al final del dia, fer-ne un recompte.
L'usuari introduirà enters del 0 al 10 quan s'obri la caixa indicada.
Quan introduiexi l'enter -1, és que s'ha acabat el dia. Printa per pantalla el nombre de cops que s'ha obert.
- input:
5 4 9 0 0 5 5 5 3 5 -1
- output:
[2, 0, 0, 1, 1, 5, 0, 0, 0, 1, 0, 0]
MinOf10Values
L'usuari entra 10 enters. Crea un array amb aquest valors.
Imprimeix per pantalla el valor més petit introduit.
IsThereAMultipleOf7
Donat el següent vector, imprimeix true si algún dels números és divisible entre 7 o false sinó.
int[] values = {4,8,9,40,54,84,40,6,84,1,1,68,84,68,4,840,684,25,40,98,54,687,31,4894,468,46,84687,894,40,846,1681,618,161,846,84687,6,848}
InverseOrder
L'usuari entra 10 enters. Imprimeix-los en l'odre invers al que els ha entrat.
ArraySortedValues
Printa per pantalla ordenats si la llista de N valors introduits per l'usuari estan ordenats.
L'usuari primer entrarà el número d'enters a introudir i després els diferents enters.
- input
5 1 25 25 81 90 5 1 25 24 81 90
- output
ordenats desordenats
ArrayReader
Crea una classe ArrayReader i defineix la funció següent, que llegeix un array d'enter de l'usuari. L'usuari primer entrarà el número d'enters a introudir i després els diferents enters.
Nota: a l'exercici ArraySortedValues ja has fet aquesta funció.
/**
* Reads an int of arrays from user input.
* The user first introduces the number (N).
* Later it introduces the integers one by one.
* @return int array of values introduced of size N
*/
public static int[] scannerReadIntArray(Scanner scanner)
Usa aquesta funció quan la necessitis.
Per fer-la servir, l'has de cridar de la següent manera:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
...
int[] values = ArrayReader.scannerReadIntArray(scanner);
ArrayMaxValue
L'usuari introduirà 1 array d'enters, com s'indica al mètode ArrayReader.
Un cop llegits tots, printa per pantalla el valor més gran.
CapICuaValues
Printa per pantalla cap i cua si la llista de N valors introduits per l'usuari són cap i cua (llegits en ordre invers és la mateixa llista).
- input
4 10 5 5 10
- output
cap i cua
ArraySameValues
L'usuari introduirà 2 llistes de valors, com s'indica al mètode ArrayReader.
Printa per pantalla són iguals si ha introduit la mateixa llista, o no són iguals si són diferents
- input
2 5 10 2 5 10
- output
són iguals
ArraySumValues
L'usuari introduix una llista de valors tal i com s'indica al mètode ArrayReader.
Imprimeix per pantalla la suma d'aquests valors.
- input
3 5 10 12
- output
27
IvaPrices
En una botiga volem convertir tot de preus sense a IVA al preu amb IVA. Per afegir l'IVA a un preu hem de sumar-hi el 21% del seu valor.
L'usuari introduirà el preu de 10 artícles. Imprimeix per pantalla el preu amb l'IVA afegit amb el següent format:
- input:
8 4 45 2 48 12 48 55 15 1
- output:
8.0 IVA = 9.68
4.0 IVA = 4.84
45.0 IVA = 54.45
2.0 IVA = 2.42
48.0 IVA = 58.08
12.0 IVA = 14.52
48.0 IVA = 58.08
55.0 IVA = 66.55
15.0 IVA = 18.15
1.0 IVA = 1.21
CovidGrowRate
El departament de salut ens ha demanat que calculem la taxa de infecció que està tenint la Covid en la nostre regió sanitaria. Donat un nombre de casos en una setmana, si la següent tenim un nombre de casos , podem calcular la taxa d'infecció amb la formula
L'usuari introduirà un llistat de casos detectats cada setmana (usant el format del ArrayReader). Imprimeix la taxa d'infecció detectada cada setmana.
input:
10 5 7 9 21 45 100 260 240 230 201
output:
1.4 1.2857142857142858 2.3333333333333335 2.142857142857143 2.2222222222222223 2.6 0.9230769230769231 0.9583333333333334 0.8739130434782608
BicicleDistance
Donada una velocitat d'una bicicleta en metres per segon, indica els metre que haurà recorregut quan hagi passat 1,2,3,4,5,6,7,8,9 i 10 segons.
- input:
2.5
output:
2.5 5.0 7.5 10.0 12.5 15.0 17.5 20.0 22.5 25.0
ValueNearAvg
L'usuari introduix una llista de valors tal i com s'indica al mètode ArrayReader.
Imprimeix per pantalla el valor que està més proper a la mitjana dels valors de l'array (calcula la mitjana dels valors primer i cerca el més proper després).
input: 4 1 3 9 20
output: 9
Matrius
SimpleBattleshipResult
Donada la següent configuració del joc Enfonsar la flota, indica si a la posició x, y hi ha aigua o un vaixell (tocat)
Configuració
On x són baixells i els 0 aigua, casella superior esquerra és la 0,0 i la superior dreta la 0,6
x x 0 0 0 0 x
0 0 x 0 0 0 x
0 0 0 0 0 0 x
0 x x x 0 0 x
0 0 0 0 x 0 0
0 0 0 0 x 0 0
x 0 0 0 0 0 0
Exemples
input: 1 1
output: aigua
input: 4 1
output: tocat
MatrixElementSum
Donada la següent matriu
int[][] matrix = {{2,5,1,6},{23,52,14,36},{23,75,81,64}}
Imrimeix la suma de tots els seus valors.
MatrixBoxesOpenedCounter
Un banc té tot de caixes de seguretat en una graella, enumerades per fila i columna del 0 al 3.
Volem registar quan els usuaris obren una caixa de seguretat, i al final del dia, fer-ne un recompte.
- L'usuari introduirà parells d'entrers del 0 al 3 quan s'obri la caixa indicada.
- Quan introduiexi l'enter -1, és que s'ha acabat el dia. Printa per pantalla el nombre de cops que s'ha obert.
input:
1 1 1 3 3 3 1 1 3 3 3 0 0 3 -1
output:
[[0, 0, 0, 1], [0, 2, 0, 1], [0, 0, 0, 0], [1, 0, 0, 2]]
MatrixIsThereADiv13
Donada la següent matriu
int[][] matrix = {{2,5,1,6},{23,52,14,36},{23,75,81,62}}
Imprimeix true si algún dels números és divisible entre 13, false altrement.
HighestMountainOnMap
Usant les imatges d'un satel·lit hem pogut fer raster o (mapa de bits)[https://ca.wikipedia.org/wiki/Mapa_de_bits] que ens indica l'alçada d'un punt concret d'un mapa. Hem obtingut la següent informació:
double[][] map ={{1.5,1.6,1.8,1.7,1.6},{1.5,2.6,2.8,2.7,1.6},{1.5,4.6,4.4,4.9,1.6},{2.5,1.6,3.8,7.7,3.6},{1.5,2.6,3.8,2.7,1.6}};
Printa per pantalla l'alçada del punt més alt i en quines cordenades es troba usant el següent format:
x, y: 1.5 metres
Substituint x i y, per les cordenades i 1.5 metres per l'alçada.
HighestMountainScaleChange
El govern britànic ens ha demanat que també vol accedir a les dades de l'exercici anterior i que les necessitaria en peus i no metres.
Per convertir un metre a peus pots has de multiplicar els metres per 3.2808.
Fes la conversió i imprimeix la matriu per pantalla.
MatrixReader
Dins la classe ArrayReader i defineix la funció següent, que llegeix un array d'enters de l'usuari.
L'usuari primer entrarà el número de files i columnes i després els diferents enters.
Nota: semblant a ArrayReader
/**
* Reads an int matrix from user input.
* The user first introduces the size of the matrix(NxM).
* Then, introduces the integers one by one.
* @return int[][] matrix of values introduced of size NxM
*/
public static int[][] scannerReadIntMatrix(Scanner scanner)
Usa aquesta funció quan la necessitis.
Per fer-la servir, l'has de cridar de la següent manera:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
...
ArrayReader.scannerReadIntMatrix(scanner);
Format d'entrada d'una matriu d'exemple:
3 4
1 2 3 4
2 1 2 1
3 2 1 5
MatrixSum
Implementa un programa que demani dos matrius a l'usuari i imprimeixi la suma de les dues.
- input
3 4
1 2 3 4
2 1 2 1
3 2 1 5
3 4
1 2 3 4
4 3 2 1
2 2 2 2
- output
2 4 6 8
6 4 4 2
5 4 3 7
Avançats
SortArray
Implementa un programa que demani l'array a l'usuari i ordene els nombres de menor a major.
- input:
4 2 -1 6 5
- output:
-1 2 5 6
MatrixSimetric
Donada una matriu quadrada donada per l'usuari, el programa imprimeix true si la matriu és simètrica, false en cas contrari.
- input
3 3
1 2 3
2 1 2
3 2 1
- output
true