![]()
Non so più che pesci prendere con un esercizio di C dell'università,c'è qualcuno che mi può aiutare?
praticamente io ho una matrice di 10 righe per dieci colonne di char, che ho scaricato da file. Poi richiedo all'utente di inserire una parola da cercare nella griglia. Io la cerco e poi devo stampare tutte le diverse alternative: esempio
La griglia è la seguente:
afdghnisco
zqplimdove
scovscovrr
mcisyverrr
xdcoryrhyy
mvqvqyptyh
yoejbwxuqu
rrrrmjpuyt
rrrpyiscov
eryeryyrek
Inserire la parola da cercare: discovery
Soluzioni trovate:
......ISC.
......DO..
.......V..
......ER..
........Y.
..........
..........
..........
..........
..........
......ISC.
......DO..
.......V..
......E...
.....YR...
..........
..........
..........
..........
..........
......ISC.
......DO..
.......V..
......E...
......R...
.....Y....
..........
..........
..........
..........
..........
..........
..........
..IS......
.DCO......
...V......
Y.E.......
.R........
..........
..........
..........
..........
..........
..IS......
.DCO......
...V......
..E.......
...R......
....Y.....
..........
ecco, la prima parte è ok, poi la mia funzione fa cilecca... ecco il mio codice, vi prego, AIUTATEMIIIIIIIIII
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#define DIM 10
int k=0,righe=0,colonne=0,t=0;
typedef enum {FALSE,TRUE} bool;
void stampa(char lista[DIM][DIM]){
int m = 0,n = 0;
printf("\n\n");
while(m<DIM){
while(n<DIM){
printf("%c",lista[m][n]);
n++;
}
m++;
n=0;
printf("\n");
}
printf("\n\n\n");
}
void array_da_file(char nomeFile[],char griglia[DIM][DIM]){
FILE* fp;
int i=0,j=0;
char trash;
fp = fopen(nomeFile,"r");
while(!feof(fp)){
if(j>DIM-1)
{
i++;
j=0;
fscanf(fp,"%c", &trash);
}
else{
fscanf(fp,"%c", &griglia[i][j]);
j++;
}
fflush(stdout);
}
fclose(fp);
printf("\n\n");
}
void cerca_aux(char parola[100],int m,int lung,char griglia[DIM][DIM],int i,int j){
while(m < lung){ //printf ("\n Sono dentro il while...");
if((i!=0)&&(j!=0)&&(griglia[i-1][j-1] == parola[m])) {
m++; i--; j--;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((i!=0)&&(griglia[i-1][j] == parola[m])) {
m++; i--;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((j<DIM)&&(i!=0)&&(griglia[i-1][j+1] == parola[m])) {
m++;i--;j++;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((j<DIM)&&(griglia[i][j+1] == parola[m])) {
m++;j++;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((i<DIM)&&(j<DIM)&&(griglia[i+1][j+1] == parola[m])) {
m++;i++;j++;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((i<DIM)&&(griglia[i+1][j] == parola[m])) {
m++;i++;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((i<DIM)&&(j!=0)&&(griglia[i+1][j-1] == parola[m])) {
m++;i++;j--;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
if((j!=0)&&(griglia[i][j-1] == parola[m])) {
m++;j--;
cerca_aux(parola,m,lung,griglia,i,j);
//printf("%C",griglia[i][j]);
}
else //printf (".");
m=lung;
printf("%C",griglia[i][j]);
}
}
void cerca(char parola[100],char griglia[DIM][DIM],int k,int righe,int colonne){
int lung = strlen(parola);
for(righe; righe<DIM; righe++){
//printf ("\n");
for(colonne; colonne<DIM; colonne++){ //cicla sulla matrice
if(griglia[righe][colonne] == parola[k]){
k++;
cerca_aux(parola, k, lung, griglia, righe, colonne);
//printf("%C",griglia[righe][colonne]);
k = 0;
}
else printf("."); //stampo il puntino
}
colonne = 0;
printf("\n");
}
}
int main(int argc, char *argv[])
{
char griglia[DIM][DIM];
char search[100];
char nomeFile[15];
printf("\nInserisci il nome del file dal quale scaricare la griglia\n\n");
scanf("%s",&nomeFile);
array_da_file(nomeFile,griglia);
stampa(griglia);
printf("\nInserisci la parola da cercare nella griglia\n\n");
scanf("%s",&search);
cerca(search,griglia,0,0,0);
system("PAUSE");
return 0;
}