View Full Version : Trovare parola dentro una matrice[c]
razzoman
02-07-2013, 23:59
Ciao a tutti, non riesco a risolvere questo programma neanche per sbaglio http://img.tapatalk.com/d/13/07/03/upy7upe8.jpg non so neanche che algoritmo che creare nada de nada, sono proprio in alto mare
rdilillo
03-07-2013, 12:34
Mi limito ad indirizzarti con la logica, se hai problemi con il codice ne discutiamo in futuro.
- Prendi la prima riga del file di testo
- conta le occorenze di quella riga (variabile N)
- conta le righe del file (variabile M)
- crea una matrice di caratteri M*N e riempila.
- Prendi la prima lettera della parola passata in input e cercala scorrendo la matrice colonna per colonna e riga per riga.
- ad ogni condizione verificata, se la lettera in posizione N+1 è = alla seconda lettera, continui con la terza e così via fino a verificare che la parola è presente, se la condizione non viene verificata, ripeti il tutto andando clockwise sotto (M+1,N); poi sinistra (M,N-1); poi sopra (M-1, N). Ricorda di gestire gli ArrayIndexOutOfBoundException.
Per qualsiasi problema chiedi pure
razzoman
03-07-2013, 20:26
Mi limito ad indirizzarti con la logica, se hai problemi con il codice ne discutiamo in futuro.
- Prendi la prima riga del file di testo
- conta le occorenze di quella riga (variabile N)
- conta le righe del file (variabile M)
- crea una matrice di caratteri M*N e riempila.
- Prendi la prima lettera della parola passata in input e cercala scorrendo la matrice colonna per colonna e riga per riga.
- ad ogni condizione verificata, se la lettera in posizione N+1 è = alla seconda lettera, continui con la terza e così via fino a verificare che la parola è presente, se la condizione non viene verificata, ripeti il tutto andando clockwise sotto (M+1,N); poi sinistra (M,N-1); poi sopra (M-1, N). Ricorda di gestire gli ArrayIndexOutOfBoundException.
Per qualsiasi problema chiedi pure
ti posto brevemente il codice della mia fetecchia (èancora in uno stato embrionale) #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define R 24
#define C 70
int main(int argc, char *argv[])
{
char v[C+1],col[R+1][C+1];
int i=0,j=0,u,p,q,lunghezzaparola;
FILE *f;
f=fopen(argv[1],"r");
while(fgets(v,C+1,f)!=NULL)
{
sscanf(v,"%c",&col[i][j]);
i++;
j++;
}
if((i>24)||(j>70))
{
printf("non valido");
}
else
for(u=0;u<i;u++)
{
if( strstr(col[u],argv[2])!=NULL)
{
printf("a righa e' %d\n "u,)
}
}
return 0;
}
sostanzialmente pensavo di trovarla per righe e poi fare la trasposta e trovarla per colonna,che ne pensi??solo una cosa però, come faccio a trovare la colonna di inizio e quella della fine??(cioè es "la parola inizia dalla colonna y e finisce in quella x)
rdilillo
04-07-2013, 11:24
puoi utilizzare il tag [Code] per rendere il tuo codice più leggibile perfavore?
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.