Continuo a non capirci nulla: tra matrici di interi, che non vengono usate da nessuna parte (vedi, nel tuo esempio "mat"), contenitori (che non si sa cosa siano, da dove vengano, a cosa servano, ecc), variabili sconosciute (vedi l'array "nome", che non si sa di che tipo sia, cosa contenga, ecc) è davvero difficile cercare di capire cosa vuoi ottenere. Quando dicevo di fare "un esempio", intendevo proprio "un esempio" materiale... magari descritto a parole o descritto semplicemente per "valori stampati".

Ad ogni modo, se il tuo dubbio è "quando usare il for-each e quando usare un for con contatore?" la risposta è piuttosto facile:

1) Il foreach si usa quando si vuole semplicemente scorrere dall'inizio alla fine un elenco di valori per farci qualcosa (con questi valori) che sia indipendente dalla sua "posizione" nell'elenco. In pratica, quando la posizione di un valore nell'elenco non serve a nessuno.

2) In tutti gli altri casi, è meglio (per non dire, essenziale) usare un for "standard" con indice.

Da quell'intricato esempio che hai postato mi pare di capire che a te le "posizioni" dei valori all'interno dell'elenco interessano e sono "essenziali". Quindi, usa tranquillamente un for con indice (che mi par di capire tu sappia usare senza problemi). Ricorda che ogni costrutto del linguaggio è utile a risolvere una classe di problemi, ma non necessariamente "tutti" i problemi. Se per alcune classi di problemi un costrutto (come il for-each) è utile e ti fa risparmiare tempo e codice, per altre classi di problemi potrebbe rivelarsi solo un'inutile complicazione (e, di conseguenza, non andrebbe usato).


Spero di aver intuito (e chiarito) il tuo dubbio.


Ciao.