Exercicis arrays

(*) elteuusuari correspon a la direcció de correu eltectrònic del centre, sense punts, fins a @itb.cat

Sumari

  1. Arrays
    1. DayOfWeek
    2. AddValuesToArray
      1. Sortida
    3. PushButtonPadlockSimulator
    4. BoxesOpenedCounter
    5. MinOf10Values
    6. IsThereAMultipleOf7
    7. InverseOrder
    8. ArraySortedValues
    9. ArrayReader
    10. ArrayMaxValue
    11. CapICuaValues
    12. ArraySameValues
    13. ArraySumValues
    14. IvaPrices
    15. CovidGrowRate
    16. BicicleDistance
    17. ValueNearAvg
  2. Matrius
    1. SimpleBattleshipResult
      1. Configuració
      2. Exemples
    2. MatrixElementSum
    3. MatrixBoxesOpenedCounter
    4. MatrixIsThereADiv13
    5. HighestMountainOnMap
    6. HighestMountainScaleChange
    7. MatrixReader
    8. MatrixSum
  3. Avançats
    1. SortArray
    2. MatrixSimetric
  4. Acepta el reto

Arrays

DayOfWeek

Donat un enter, printa el dia de la setmana amb text (dilluns, dimarts, dimecres), tenint en compte que dilluns és el 0.

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:

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:

padlock.jpeg

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

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.

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.

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).

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

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.

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:

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 casos1casos1 en una setmana, si la següent tenim un nombre de casos casos2casos2, podem calcular la taxa d'infecció amb la formula

infeccioˊ=casos2casos1infecció = \frac{casos2}{casos1}

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.

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.

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.

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
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.

4 2 -1 6 5
-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.

3 3
1 2 3
2 1 2
3 2 1
true

Acepta el reto