Re: Programma linguaggio C

Messaggioda gaetano0 » 19/08/2017, 16:35

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
gaetano0
Junior Member
Junior Member
 
Messaggio: 33 di 122
Iscritto il: 07/01/2017, 20:00

Re: Programma linguaggio C

Messaggioda Super Squirrel » 19/08/2017, 18:40

Io farei nel seguente modo:

- scorrendo la matrice (per esempio per righe), trovare un carattere che coincide con l'iniziale della parola;
- considerando gli indici del suddetto elemento e la lunghezza della parola, capire se la parola potrebbe essere contenuta nella matrice a partire dall'elemento considerato in una data direzione e in un dato verso;
- in caso di risposta affermativa controllare se la parola è effettivamente contenuta attraverso l'utilizzo di un ciclo for.

Magari inizia ad impostare qualcosa ricercando solo in orizzantale (da sinistra verso destra) e in verticale (dall'alto verso il basso). Fatto questo si può poi ragionare sugli altri casi.
Chi dorme in democrazia, si sveglia in dittatura.
Super Squirrel
Senior Member
Senior Member
 
Messaggio: 138 di 1486
Iscritto il: 16/05/2013, 22:05

Re: Programma linguaggio C

Messaggioda vict85 » 22/08/2017, 16:13

Se lo scopo è fare un programma che risolva il gioco "trova la parola" allora dovresti tenere conto che la parola potrebbe esserci anche "rovesciata".
vict85
Moderatore
Moderatore
 
Messaggio: 9128 di 19253
Iscritto il: 16/01/2008, 00:13
Località: Berlin

Precedente

Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite