Per la gestione dei dati e dell'input ti suggerisco di trattarli come char, non int. Una volta che hai letto la riga in input ti basta verificare che non ci siano caratteri estranei (è sufficiente anche una banale espressione regolare) e poi ottenere l'array dei char.
postoEsatto() concettualmente è ok. postoErrato() no, è sbagliata perché può trovare un numero uguale nella stessa posizione. Innanzitutto devi escludere i casi in cui i == j ma non basta!!! Devi fare la cosa in maniera molto più attenta e accurata. Prendiamo due numeri:
1303
2335
Anche ammesso di escludere quando i=1/j=1 (i 3 nella seconda posizione), i tuoi cicli annidati farebbero trovare 3 cifre in posto sbagliato invece di 1 sola!!!!!
Troveresti un match con i=1/j=2, con i=3/j=1 e con i=3/j=2. Solo l'ultimo match dovrebbe contare.
Per il resto ... beh, ovviamente devi scrivere ancora un po' di codice. Ti consiglio magari di "incapsulare" la gestione/controllo del codice segreto in una classe a sé stante.

Rispondi quotando