Testi compiti scritti

Rispondi
Samuele123
Messaggi: 2
Iscritto il: 19/09/2022, 16:18

Allego la traccia dell'esame, primo appello del 25/05/22.
Il compito era su Javascript e typescript .

Esercizio 1.

Si definisca una classe Solido che rappresenti un generico solido. A partire dalla classe Solido, si costruisca una gerarchia di classi che contenga le classi Parallelepipedo, Cubo e Sfera, in modo da consentire la rappresentazione dei solidi corrispondenti.

La classi Parallelepipedo, Cubo e Sfera dovranno fornire:

un costruttore, che presi i dati necessari alla rappresentazione del solido, generi un istanza della classe che rappresenti il solido;
un metodo superficie, che restituisca la superficie totale del solido rappresentato;
un metodo volume, che restituisca il volume totale del solido rappresentato.
Per i dati necessari e le formule di superficie/volume, si faccia riferimento a quanto riportato sotto:

Parallelepipedo: necessari larghezza l, altezza h e profondità p; superficie calcolata come S = 2*(l+p)*h + 2*l*p; volume calcolato come V = l*p*h.
Cubo: necessario lato x; superficie calcolata come S = 6*x^2; volume calcolato come V = x^3.
Sfera: necessario raggio ; superficie calcolata come S = 12.56*r^2; volume calcolato come V = 4.19*r^3. (NB: Le costanti moltiplicative sono ottenute approssimando pi greco con 3.14, per semplicità).

Infine, si definisca una funzione sommaSuperficiParallelepipedi che, dato in input un array di solidi, calcoli la somma delle superfici di tutti i parallelepipedi in esso contenuti. Se non ci sono parallelepipedi, restituisce 0.

ATTENZIONE: Saranno considerate migliori le soluzioni che terranno conto del fatto che Cubo sia un caso speciale di Parallelepipedo, in cui l, h e p sono tutti uguali al lato x del Cubo.


Esercizio 2.

Si consideri una struttura dati ad albero binario, i cui nodi sono oggetti con quattro proprietà: sx e dx, che riferiscono rispettivamente al figlio sinistro e al figlio destro del nodo stesso; val e piccolo, due valori interi. Le proprietà sx e dx sono opzionali.

Si scriva in TS una funzione contaMin(T) che, dato un albero binario T come argomento, calcoli per ogni nodo t in T (inclusa la radice) il minimo dei val memorizzati nel sotto-albero di cui t è radice (t incluso). Questo minimo deve essere scritto in piccolo. La funzione restituisce il valore piccolo della radice di T.

Nota: Si assuma che il valore di piccolo in ogni nodo in T sia inizialmente infinito.

Esempio:
let Qd = {val: 2, piccolo: Infinity, sx: {val: 4, piccolo: Infinity, sx: {val: 6, piccolo: Infinity}, dx: {val: 6, piccolo: Infinity, dx:{val: 8, piccolo: Infinity}}}, dx: {val: 7, piccolo: Infinity, sx: {val: 8, piccolo: Infinity}}};

contaMin(Qd) -> 2

Qd -> {val: 2, piccolo: 2, sx: {val: 4, piccolo: 4, sx: {val: 6, piccolo: 6}, dx: {val: 6, piccolo: 6, dx:{val: 8, piccolo: 8}}}, dx: {val: 7, piccolo: 7, sx: {val: 8, piccolo: 8}}}


Esercizio 3.

Un gancio è una sequenza (array) di 3 numeri avente la prima e l'ultima cifra uguali, e la cifra centrale differente. Se la cifra centrale dell'array è più piccola rispetto alle altre due, abbiamo un gancio ascendente; altrimenti, un gancio discendente. Ad esempio:

[3, 7, 3]: discendente

[1, -1, 1]: ascendente

Si scriva una funzione gancio(a), con a un array di numeri, che restituisca un oggetto avente, nell'ordine, quattro proprietà: num, il cui valore è il numero di ganci totali presenti in a; asc, il cui valore è il numero di ganci ascendenti presenti in a; des, il numero di ganci discendenti presenti in a; gan, un array contenente tutte le sequenze che sono ganci, nell'ordine in cui compaiono in a

Esempio:

a: [3, 7, 3, 2, 1, 5, 1, 2, 2, -2, 2]

gancio(a) -> {num: 3, asc: 1, des: 2, gan: [[3, 7, 3], [1, 5, 1], [2, -2, 2]]}


Esercizio 4.

Definiamo il peso moltiplicativo di un intero positivo n, il numero di volte che bisogna sostituire n con il prodotto delle sue cifre fino a che n non diventa un intero a singola cifra.

Si scriva una funzione pesoMol(n), con n un intero positivo, che restituisce il peso moltiplicativo di n.

Esempio:

pesoMol(77) -> 4
// 7 x 7 = 49
// 4 x 9 = 36
// 3 x 6 = 18
// 1 x 8 = 8
Rispondi

Torna a “Laboratorio I”