apatriarca ha scritto:Mi sembra abbastanza chiaro che @gaetano0 non ha ancora abbastanza dimestichezza con le matrici o con i cicli for da svolgere l'esercizio senza suggerimenti più chiari. Suppongo che con matrice bidimensionale di caratteri tu intenda qualcosa dichiarato come segue:
- Codice:
char matrice[N][N];
La struttura generale del programma sarà qualcosa come segue:
1. Inizializzazione matrice (non ho idea se sia costante o se va inserita dall'utente o altro)
2. Lettura della parola dall'utente
3. Ricerca della parola in orizzontale su ogni riga. Dovrai fare insomma un ciclo per ogni riga e cercare la parola in quella riga con due cicli for annidati. Se trovi la parola allora puoi comunicare all'utente che si trova in orizzontale e uscire dal programma.
4. Ricerca della parola in verticale su ogni colonna. Devi insomma fare un ciclo per ogni colonna e cercare la parola in quella colonna con due cicli annidati. Se trovi la parola allora puoi comunicare all'utente che si trova in verticale e uscire dal programma.
5. Ricerca della parola in diagonale. In questo caso è un po' più complicato ma comunque simile ai precedenti. Una volta risolti i punti 3 e 4 possiamo passare a questo punto.
Per i punti 3 e 4 è sufficiente osservare che una riga è costituita dagli elementi della matrice con il primo indice fissato e una colonna è costituita dagli elementi della matrice con il secondo indice fissato. Se \(i\) rappresenta il primo indice e \(j\) il secondo avremo quindi qualcosa come segue:
- Codice:
// Orizzontale
for (i = 0; i < N; ++i) { /* ciclo per ogni riga */
/* ricerca della parola in matrice[i][*] dove l'asterisco indica l'indice che
andrà modificato nel ciclo interno che ho omesso */
}
// Verticale
for (j = 0; j < N; ++j) { /* ciclo per ogni colonna */
/* ricerca della parola in matrice[*][j] dove l'asterisco indica l'indice che
andrà modificato nel ciclo interno che ho omesso */
}
il problema non sono l'uso dei cicli,ma come cercare una parola in un array