L\'Esecutore
03-04-2009, 15:32
Devo realizzare il progetto spiegato dopo in C, non vi chiedo grossi aiuti, solo di aiutarmi a scegliere le strutture dati più adeguate. Non ci possono essere vincoli di dimensione, quindi le matrici vanno escluse. Devo tenere conto delle prestazioni quindi le scelte devono portarmi a evitare che le operazioni richieste abbiano costi eccessivi. Grazie mille, ogni aiuto è gradito
Le tessere del mosaico sono costituite da quadrati di lato 1. Due tessere sono definite adiacenti se i corrispondenti quadrati hanno un lato in comune. Un mosaico ` un insieme di tessere connesse almeno per un lato: cioè deve essere possibile percorrere l’intero mosaico muovendosi tra tessere adiacenti.
Il programma dovrà definire una struttura dati per l’oggetto mosaico e permettere le seguenti operazioni:
- nuovo()
Inizializza un nuovo mosaico con una sola tessera in posizione (0,0) (definite un opportuno sistema di riferimento), eventualmente cancellando il mosaico precedente.
- inserisci a caso()
Aggiunge al mosaico corrente un quadrato in una posizione scelta a caso tra le ammissibili (ossia con probabilità pari a 1 diviso il numero di posizioni ammissibili).
- inserisci(x, y)
Aggiunge al mosaico un quadrato in posizione (x, y) se la posizione è ammessa, altrimenti segnala un errore.
- perimetro()
Restituisce il perimetro del mosaico corrente (ossia il numero di lati liberi da quadrati)
- ordine()
Restituisce l’ordine del mosaico, ossia la lunghezza del lato del più piccolo quadrato che può contenere il mosaico.
- costruisci(n)
Costruisce un mosaico formato da n quadrati invocando n volte l’operazione inserisci a caso().
(Mantenete una struttura dati apposita per le posizioni ammissibili, vi servirà per facilitare l’estrazione casuale di una posizione ammissibile nell’operazione inserisci a caso(). )
Le tessere del mosaico sono costituite da quadrati di lato 1. Due tessere sono definite adiacenti se i corrispondenti quadrati hanno un lato in comune. Un mosaico ` un insieme di tessere connesse almeno per un lato: cioè deve essere possibile percorrere l’intero mosaico muovendosi tra tessere adiacenti.
Il programma dovrà definire una struttura dati per l’oggetto mosaico e permettere le seguenti operazioni:
- nuovo()
Inizializza un nuovo mosaico con una sola tessera in posizione (0,0) (definite un opportuno sistema di riferimento), eventualmente cancellando il mosaico precedente.
- inserisci a caso()
Aggiunge al mosaico corrente un quadrato in una posizione scelta a caso tra le ammissibili (ossia con probabilità pari a 1 diviso il numero di posizioni ammissibili).
- inserisci(x, y)
Aggiunge al mosaico un quadrato in posizione (x, y) se la posizione è ammessa, altrimenti segnala un errore.
- perimetro()
Restituisce il perimetro del mosaico corrente (ossia il numero di lati liberi da quadrati)
- ordine()
Restituisce l’ordine del mosaico, ossia la lunghezza del lato del più piccolo quadrato che può contenere il mosaico.
- costruisci(n)
Costruisce un mosaico formato da n quadrati invocando n volte l’operazione inserisci a caso().
(Mantenete una struttura dati apposita per le posizioni ammissibili, vi servirà per facilitare l’estrazione casuale di una posizione ammissibile nell’operazione inserisci a caso(). )