Salve sto facendo un esercizio di programmazione che riguarda le matrici. Il testo è il seguente:
"La mappa di un territorio viene schematizzata tramite una matrice di dimensioni M per N, all'interno della quale ogni elemento contiene un numero intero che rappresenta in metri l'altezza del terreno in quella zona. In un elemento di cui sono note le coordinate di riga e di colonna, è presente una sorgente d'acqua. Sapendo che l'acqua può scendere in tutte le direzioni (verticale, orizzontale, diagonale) verso punti con quota minore o uguale ma che non può risalire verso punti di quota superiore, fornire la mappa delle zone che verranno allagate(con un *) e non allagate(con un .) "
Ho pensato di gestire 2 matrici una con le altezze del terreno ed una con i caratteri ("*" e ".")
Inizializzazione tutto OK! la matrice di altezze è acquisita in maniera casuale con numeri da 0 a 9, e la matrice di caratteri la inizializzo con i punti('.')
il mio problema si presenta quando devo scorrere la matrice a partire dalla sorgente. Il primo "ciclo di allagamento" mi torna ma non so poi come aggiornare la sorgente. Come faccio a scorrere una matrice in maniera concentrica a partire dall'elemento centrale?
io ho pensato di fare una cosa del genere ma ovviamente dovrei ripeterlo per ogni elemento della matrice:
codice:matallaga[rs][cs]='*'; // matrice di caratteri da allagare, allago sorgente int i=0,k=0; int j=0,z=0; //"matrice" rappresenta la matrice di altezze // rs rappresenta la riga della sorgente // cs rappresenta la colonna della sorgente //vals rappresenta il valore della sorgente for(int x=0; x<N*M; x++) { // questo for è sbagliato i=rs-1; j=cs-1; for(k=i; k<=rs+1; k++) { for(z=j; z<=cs+1; z++) { if(matrice[k][z]<=vals) matallaga[k][z]='*'; // allaga elemento if(k==rs-1 && z==cs-1) { // nuova sorgente: riga, colonna e valore nrs=k; ncs=z; nvals=matrice[k][z]; } } } rs=nrs; // aggiorno la sorgente cs=ncs; vals=nvals; }
praticamente ogni elemento che si trova intorno alla sorgente diventa la sorgente stessa e così via fino a quando tutti gli elementi della matrice non sono stati confrontati con tutti quelli intorno.
ci sto diventando scemo avrei bisogno di un aiuto![]()

Rispondi quotando
