Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Esercizio di programmazione in c
Forum - C/C++ - Esercizio di programmazione in c

Avatar
FeFeZ (Normal User)
Newbie


Messaggi: 7
Iscritto: 14/06/2017

Segnala al moderatore
Postato alle 15:10
Mercoledì, 14/06/2017
Ciao a tutti, non riesco a capire come svolgere l'esercizio di programmazione che ho messo in allegato.
Dopo avere letto i due file e averli scritti su due matrici, quale metodo dovrei usare per scrivere i rettangoli nella mappa? Non mi viene in mente nulla di corretto, potreste darmi una mano?
Grazie!

Si scriva un programma per l’allocazione di rettangoli all’interno di una mappa quadrata. La mappa viene descritta tramite un file di testo specificato come primo argomento da riga di comando, in cui ogni carattere rappresenta una posizione nella mappa. La mappa ha una dimensione massima DMAX, specificata tramite direttiva #define.

Il carattere ‘O’ rappresenta una posizione libera, il carattere ‘X’ una posizione occupata. Il programma deve leggere un secondo file passato come secondo argomento da riga di commando che contiene per ogni riga le dimensioni di un rettangolo da inserire:
<DIM1> <DIM2>
dove DIM1 e DIM2 sono due numeri interi minori di DMAX. Il file ha dimensione non nota a priori.

Il programma deve leggere da file le posizioni dei rettangoli e allocarli uno alla volta nelle posizioni della mappa in cui ci sia uno spazio libero sufficientemente grande da contenerli in una delle due possibili direzioni, orizzontale o verticale. L’allocazione successiva deve tenere conto dello spazio occupato da quella precedente. Una posizione allocata viene indicate con un carattere ‘R’ sulla mappa.

Il programma deve stampare per ogni rettangolo se è riuscito ad allocarlo oppure se non ha trovato spazio nella mappa.
Al termine dell’esecuzione il programma deve stampare a video la nuova mappa.

Esempio mappa.txt
XXXXXXXXXO
XOOOXXXXXX
XOOOXXXXXX
XXXXXXOOOO
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX


Esempio rettangoli.txt
1 1
2 1
2 3
4 1

Esempio esecuzione:

#>fit.exe mappa.txt rettangoli.txt
1 1 allocato
2 1 allocato
2 3 non allocato
4 1 allocato

XXXXXXXXXR
XROOXXXXXX
XROOXXXXXX
XXXXXXRRRR
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX


Ultima modifica effettuata da FeFeZ il 14/06/2017 alle 15:15
PM Quote
Avatar
nessuno (Normal User)
Guru^2


Messaggi: 5471
Iscritto: 03/01/2010

Segnala al moderatore
Postato alle 16:19
Mercoledì, 14/06/2017
Dovrai cercare in tutta la mappa, esaminando riga per riga, prima se esiste uno spazio tale da consentire l'inserimento del numero di caselle lette in DIM1. Se non lo trovi passi alla riga successiva. Altrimenti esamini lo spazio delle colonne DIM2 ...


Ricorda che nessuno è obbligato a risponderti e che nessuno è perfetto ...
PM Quote