Problema 1 (18 punti)
La catena commerciale POPPY riunisce N negozi, numerati da 1 a N, che vendono i prodotti di un medesimo catalogo.
Ogni negozio ha un gestore che può decidere il prezzo di vendita dei vari prodotti. Quindi un medesimo prodotto può essere trovato a prezzi diversi in diversi negozi.
Le informazioni sui prodotti sono gestite mediante un array di N puntatori:
##### # # +-------+ +-------+ +-------+ +-------+ +-------+ # # | PR1 | | PR2 | | PR3 | | PR4 | | PR5 | 1 # ----> | -+-->| -+-->| -+-->| -+-->| -+--> . . . # # | 23.67 | | 3.67 | | 10.00 | | 30.70 | | 2.33 | # # +-------+ +-------+ +-------+ +-------+ +-------+ ##### # # +-------+ +-------+ +-------+ +-------+ +-------+ 2 # ----> | PR1 | | PR2 | | PR3 | | PR4 | | PR5 | # # | -+-->| -+-->| -+-->| -+-->| -+--> . . . # # | 20.00 | | 4.00 | | 11.00 | | 29.99 | | 5.00 | # # +-------+ +-------+ +-------+ +-------+ +-------+ ##### # # +-------+ +-------+ +-------+ +-------+ +-------+ 3 # ----> | PR1 | | PR2 | | PR3 | | PR4 | | PR5 | # # | -+-->| -+-->| -+-->| -+-->| -+--> . . . # # | 25.00 | | 5.00 | | 8.00 | | 29.99 | | 4.99 | # # +-------+ +-------+ +-------+ +-------+ +-------+ #####
Ad esempio, considerando l'archivio in figura e il prodotto PR3, il massimo prezzo riscontrabile è più grande del minimo di un 37.5%. Quindi il risultato della funzione sarebbe 37.5. Analogamente, per il prodotto PR4 il risultato della funzione sarebbe 2.37.
Ad esempio, per l'array della figura precedente, la procedura costruirebbe una lista come la seguente.
+-------+ +-------+ +-------+ +-------+ +-------+ ---> | PR1 | | PR2 | | PR3 | | PR4 | | PR5 | | -+-->| -+-->| -+-->| -+-->| -+--> . . . | 25 | | 36.24 | | 37.5 | | 2.37 | | 114.59| +-------+ +-------+ +-------+ +-------+ +-------+
Problema 2 (4 punti)
Illustrare uno dei principali algoritmi di visita di grafi, mostrandone gli effetti su un grafo di esempio non banale (almeno 5 nodi e 7 archi).
Problema 3 (4 punti)
Descrivere tutte le modalità che si conoscono con le quali diverse unità di programma Pascal possono scambiarsi informazioni. Fornire almeno un esempio di uso di ciascuna modalità descritta.
Problema 4 (4 punti)
Scrivere una unità di programma Fortran che, data una matrice di interi , produca una seconda matrice in cui gli elementi della prima hanno subito uno scorrimento di un posto verso destra. (L'ultimo elemento di una riga diventa il primo della riga successiva. L'elemento di coordinate (N,M) nella prima, diventa quello di coordinate (1,1) nella seconda.)
Ad esempio, (con N=3 e M=4), ricevendo la matrice l'unità richiesta produce la matrice
Scrivere inoltre un esempio di programma principale contenente un'invocazione dell'unità progettata.