Exercicis de Funcions estàtiques i data classes

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

Sumari

  1. RightTriangleSize
    1. Input
    2. Output
  2. Lamp
    1. Exemple
  3. CampSiteOrganizer
    1. Exemple
  4. BasicRobot
    1. Exemple
  5. ThreeInARow
    1. Exemple
  6. SquashCounter
    1. Input
    2. Output
      1. Bibliografia
  7. Exercicis de repàs
    1. LibraryBooksApp
      1. Input
      2. Output
    2. LibrarySectionsApp
      1. Input
      2. Output

RightTriangleSize

Volem fer un programa que ens digui l'àrea i el perímetre d'una llista de triangles rectangles

Nota: No pots imprimir els triangles fins a que s'hagin llegit tots.

Input

2
2.0 4.0
3.5 5.4

Output

Un triangle de 2.0 x 4.0 té 4.0 d'àrea i XX de perímetre.
Un triangle de 3.5 x 5.4 té 9.45 d'àrea i XX de perímetre.

Lamp

Implementa un programa que simuli una làmpara, amb les accions:

Després de cada acció mostra si la làmpara està encesa.

Exemple

Les línies que comencen per > són el què ha escrit l'usuari

> TURN OFF
false
> TURN ON
true
> TURN OFF
false
> TOGGLE
true
> TOGGLE
false
> END

CampSiteOrganizer

Volem fer un petit programa per gestionar un càmping. Volem tenir controlat quantes parcel·les tenim plenes i quanta gent tenim.

Quan s'ocupi una parcel·la l'usuari introduirà el número de persones i el nom de la reserva

ENTRA 2 Maria

Quan es buidi una parcel·la l'usuari introduirà el nom de la reserva

MARXA Maria

Per tancar el programa l'usuari introduirà el nom END

Cada cop que marxi algú, imprimeix el número total de persones que hi ha, i el número de parcel·les plenes.

Exemple

Les línies que comencen per > són les que ha escrit l'usuari

> ENTRA 2 Maria
parcel·les: 1
persones: 2
> ENTRA 5 Mar
parcel·les: 2
persones: 7
> MARXA Maria
parcel·les: 1
persones: 5
> END

BasicRobot

Fes un programa que permeti moure un robot en un pla 2D.
El robot ha de guardar la seva posició (X, Y) i la velocitat actual. Per defecte, la posició serà (0, 0) i la velocitat és 1. La velocitat indica la distància que recorre el robot en cada acció.

El robot té les següents accions:

El programa acaba amb l'acció END.

Exemple

Les línies que comencen per > són el que ha escrit l'usuari

> POSICIO
La posició del robot és (0.0, 0.0)
> DALT
> DALT
> ESQUERRA
> POSICIO
La posició del robot és (-1.0, 2.0)
> ACCELERAR
> VELOCITAT
La velocitat del robot és 1.5
> DALT
> POSICIO
La posició del robot és (-1.0, 3.5)
> END

ThreeInARow

Fes un programa que permeti a dos jugador jugar al tres en ratlla.
Es juga amb un taulell de 3x3. Cada jugador col·loca una peça al taulell alternativament. Guanya qui és capaç de col·locar-les formant una línia de 3, ja sigui vertical, horitzontal o diagonal.

El programa a desenvolupar haurà de mostrar el taulell per pantalla i demanar la tirada al primer jugador.
El jugador escriurà dos números, el primer correspon a les columnes i el segon a les files. S'anirà demanant el torn alternativament a
cada jugador fins que algun dels dos faci el tres en ratlla o bé fins que el taulell estigui ple.

Les fitxes d'un jugador les representarem amb una X i les de l'altre amb una O.

Al final es mostrarà un missatge dient el resultat de la partida: guanyen les X, guanyen les O o empat.

Exemple

Les línies que comencen per > són les que ha escrit l'usuari

> 0 0
X · ·
· · ·
· · ·
> 1 1
X · ·
· 0 ·
· · ·
> 0 1
X X ·
· 0 ·
· · ·
> 2 2
X X ·
· 0 ·
· · 0
> 0 3
X X X
· 0 ·
· · 0
guanyen les X

SquashCounter

Volem fer un marcador per un partit de squash.

Encara que hi ha diferents formes de puntuar, una de les més utilitzades pels jugadors amateurs és jugar al millor de cinc sets, és a dir, el jugador que abans guanyi tres sets guanya el partit i acaba el joc. Els sets es juguen a 9 punts:

Ens demanen esbrinar el marcador final de cada un dels sets d'un partit d'esquaix coneixent els guanyadors de tots els punts. És possible que el partit no acabi a causa de que el lloguer de la pista arriba a la seva fi. En aquest cas es presentarà el resultat parcial.

L'usuari primer introduirà el número de partits a introduïr.
De cada partit, escriurà qui guanya cada punt i finalitzarà amb una F.

Input

4
AAAAAAAAAF
BBBBBBBBBBF
AAAAAAAABBBBBBBBBBAABBBABBF
BF

Output

9-0
0-9
9-11 0-1
0-0
Bibliografia

Problema extret de Partido de squash d'Acepta el Reto.

Exercicis de repàs

LibraryBooksApp

Volem fer un petit programa per guardar la informació dels diferents llibres que té una biblioteca
Per introdurir el llibres, primer introduirà el número de llibres i la informació de cada llibre (títol, autor, número de pàgines).

Quan acabi volem que mostri la llista de llibres i el número total, el llibre més curt i el llibre més llarg (en cas d'empat el primer que hagi introduït).

Input

3
Lorem
Ot Pi
56
Ipsum
Mar Om
77
Dolor
Lin Om
42

Output

Llibres
------------
Lorem - Ot Pi - 56 pàgines
Ipsum - Mar Om - 77 pàgines
Dolor - Lin Om - 42 pàgines
------------
Total: 3 llibres
Llibre més curt: Dolor - Lin Om - 42 pàgines
Llibre més llarg: Ipsum - Mar Om - 77 pàgines

LibrarySectionsApp

Desde la mateixa biblioteca ens informen que volen tenir el llibres organitzats per seccions. Cada secció té una petita col·lecció de llibres

L'usuari primer introduirà el nombre de seccions.
Per cada secció en volen introduir el nom i els llibres (amb el mateix format que l'exercici anterior).

Un cop introduïts, volem imprimir, de cada secció el número de llibres, el llibre més curt i el llibre més llarg

Input

2
Cuina
3
Lorem
Ot Pi
56
Ipsum
Mar Om
77
Dolor
Lin Om
42
Informàtica
1
Java
Fin Max
66

Output

Cuina
------------
N. llibres: 3
Llibre més curt: Dolor - Lin Om - 42 pàgines
Llibre més llarg: Ipsum - Mar Om - 77 pàgines

Informàtica
------------
N. llibres: 1
Llibre més curt: Java - Fin Max - 66 pàgines
Llibre més llarg: Java - Fin Max - 66 pàgines