Ayuda en C (sopa de letras)
Publicado por Paulo (1 intervención) el 22/11/2009 21:31:39
Amigos:
Tengo que elaborar un programa que dado una sopa de letras y un diccionario con las palabras a buscar,
me genere la respuesta con las palabras del diccionario encontradas en la sopa, indicando la palabra y en que
ubicación la encontró...
ejemplo: que me encuentre la palabra CASA
QWYDGFDSA
ASDCASAGZ
NMCVDESFH
HTRHREWAS
CASA ubicado en posicion (2,4) sentido horizontal comenzando de izq a derecha
Ahora mi consulta es como crear el ciclo para que cuando me encuentre la primera letra, en este caso la C .....
busque la siguiente que es la A y asi que busque la S y termine con la letra final que es la A.
Solo tengo la duda, en como hacer la estructura del ciclo, para que cuando encuentre la primera letra de un diccionario de palabras leido, pueda
hacer la busqueda con la siguiente letra que debe buscar... SOLO necesito como crear ese ciclo.
mi codigo e idea es este:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
char Sopa[50][50];
char palabra1[16];
char palabra2[16];
char palabra3[16];
char palabra4[16];
char palabra5[16];
char palabra6[16];
char palabra7[16];
char palabra8[16];
char palabra9[16];
char palabra10[16];
char palabra11[16];
char palabra12[16];
char palabra13[16];
char palabra14[16];
char palabra15[16];
void leerArchivo()
{
int i,j;
char sopastring[54];
FILE *ArchivoS,*ArchivoD;
ArchivoS=fopen("sopa.txt","r");
ArchivoD=fopen("diccionario.txt","r");
if (ArchivoS==NULL || ArchivoD==NULL)
{
printf("\tERROR NO SE ENCUENTRAN LOS DATOS\n\tPRESIONE UNA TECLA PARA SALIR\n");
getch();
exit(0);
}
for(i=0;!feof(ArchivoS);i++)
{
fgets(sopastring,54,ArchivoS);
sopastring[strlen(sopastring)-1]='\0';
for(j=0;j<50;j++)
{
Sopa[i][j]=sopastring[j];
}
}
fclose(ArchivoS);
fgets(palabra1,16,ArchivoD);
palabra1[strlen(palabra1)-1]='\0';
fgets(palabra2,16,ArchivoD);
palabra2[strlen(palabra2)-1]='\0';
fgets(palabra3,16,ArchivoD);
palabra3[strlen(palabra3)-1]='\0';
fgets(palabra4,16,ArchivoD);
palabra4[strlen(palabra4)-1]='\0';
fgets(palabra5,16,ArchivoD);
palabra5[strlen(palabra5)-1]='\0';
fgets(palabra6,16,ArchivoD);
palabra6[strlen(palabra6)-1]='\0';
fgets(palabra7,16,ArchivoD);
palabra7[strlen(palabra7)-1]='\0';
fgets(palabra8,16,ArchivoD);
palabra8[strlen(palabra8)-1]='\0';
fgets(palabra9,16,ArchivoD);
palabra9[strlen(palabra9)-1]='\0';
fgets(palabra10,16,ArchivoD);
palabra10[strlen(palabra10)-1]='\0';
fgets(palabra11,16,ArchivoD);
palabra11[strlen(palabra11)-1]='\0';
fgets(palabra12,16,ArchivoD);
palabra12[strlen(palabra12)-1]='\0';
fgets(palabra13,16,ArchivoD);
palabra13[strlen(palabra13)-1]='\0';
fgets(palabra14,16,ArchivoD);
palabra14[strlen(palabra14)-1]='\0';
fgets(palabra15,16,ArchivoD);
palabra15[strlen(palabra15)-1]='\0';
fclose(ArchivoD);
}
void ImprimeSopa()
{
int i,j;
printf("\n\n\n");
printf(" ");
for(i=0;i<50;i++)
{
if(i<9)
{
printf("%i ",i+1);
}
else
{
printf("%i ",i+1);
}
}
printf("\n\n");
for(i=0;i<50;i++)
{
if(i<9)
{
printf(" %i ",i+1);
}
else
{
printf(" %i ",i+1);
}
for(j=0;j<50;j++)
{
printf("%c ",Sopa[i][j]);
}
printf("\n");
}
printf("\n\n\n");
for(i=0;i<15;i++)
{
switch(i)
{
case 0: printf(" %s\n",palabra1);
break;
case 1: printf(" %s\n",palabra2);
break;
case 2: printf(" %s\n",palabra3);
break;
case 3: printf(" %s\n",palabra4);
break;
case 4: printf(" %s\n",palabra5);
break;
case 5: printf(" %s\n",palabra6);
break;
case 6: printf(" %s\n",palabra7);
break;
case 7: printf(" %s\n",palabra8);
break;
case 8: printf(" %s\n",palabra9);
break;
case 9: printf(" %s\n",palabra10);
break;
case 10: printf(" %s\n",palabra11);
break;
case 11: printf(" %s\n",palabra12);
break;
case 12: printf(" %s\n",palabra13);
break;
case 13: printf(" %s\n",palabra14);
break;
case 14: printf(" %s\n",palabra15);
break;
}
}
getch();
}
Solo necesito crear la funcion para qe busque las palabras en los diferentes sentidos !
Tengo que elaborar un programa que dado una sopa de letras y un diccionario con las palabras a buscar,
me genere la respuesta con las palabras del diccionario encontradas en la sopa, indicando la palabra y en que
ubicación la encontró...
ejemplo: que me encuentre la palabra CASA
QWYDGFDSA
ASDCASAGZ
NMCVDESFH
HTRHREWAS
CASA ubicado en posicion (2,4) sentido horizontal comenzando de izq a derecha
Ahora mi consulta es como crear el ciclo para que cuando me encuentre la primera letra, en este caso la C .....
busque la siguiente que es la A y asi que busque la S y termine con la letra final que es la A.
Solo tengo la duda, en como hacer la estructura del ciclo, para que cuando encuentre la primera letra de un diccionario de palabras leido, pueda
hacer la busqueda con la siguiente letra que debe buscar... SOLO necesito como crear ese ciclo.
mi codigo e idea es este:
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
char Sopa[50][50];
char palabra1[16];
char palabra2[16];
char palabra3[16];
char palabra4[16];
char palabra5[16];
char palabra6[16];
char palabra7[16];
char palabra8[16];
char palabra9[16];
char palabra10[16];
char palabra11[16];
char palabra12[16];
char palabra13[16];
char palabra14[16];
char palabra15[16];
void leerArchivo()
{
int i,j;
char sopastring[54];
FILE *ArchivoS,*ArchivoD;
ArchivoS=fopen("sopa.txt","r");
ArchivoD=fopen("diccionario.txt","r");
if (ArchivoS==NULL || ArchivoD==NULL)
{
printf("\tERROR NO SE ENCUENTRAN LOS DATOS\n\tPRESIONE UNA TECLA PARA SALIR\n");
getch();
exit(0);
}
for(i=0;!feof(ArchivoS);i++)
{
fgets(sopastring,54,ArchivoS);
sopastring[strlen(sopastring)-1]='\0';
for(j=0;j<50;j++)
{
Sopa[i][j]=sopastring[j];
}
}
fclose(ArchivoS);
fgets(palabra1,16,ArchivoD);
palabra1[strlen(palabra1)-1]='\0';
fgets(palabra2,16,ArchivoD);
palabra2[strlen(palabra2)-1]='\0';
fgets(palabra3,16,ArchivoD);
palabra3[strlen(palabra3)-1]='\0';
fgets(palabra4,16,ArchivoD);
palabra4[strlen(palabra4)-1]='\0';
fgets(palabra5,16,ArchivoD);
palabra5[strlen(palabra5)-1]='\0';
fgets(palabra6,16,ArchivoD);
palabra6[strlen(palabra6)-1]='\0';
fgets(palabra7,16,ArchivoD);
palabra7[strlen(palabra7)-1]='\0';
fgets(palabra8,16,ArchivoD);
palabra8[strlen(palabra8)-1]='\0';
fgets(palabra9,16,ArchivoD);
palabra9[strlen(palabra9)-1]='\0';
fgets(palabra10,16,ArchivoD);
palabra10[strlen(palabra10)-1]='\0';
fgets(palabra11,16,ArchivoD);
palabra11[strlen(palabra11)-1]='\0';
fgets(palabra12,16,ArchivoD);
palabra12[strlen(palabra12)-1]='\0';
fgets(palabra13,16,ArchivoD);
palabra13[strlen(palabra13)-1]='\0';
fgets(palabra14,16,ArchivoD);
palabra14[strlen(palabra14)-1]='\0';
fgets(palabra15,16,ArchivoD);
palabra15[strlen(palabra15)-1]='\0';
fclose(ArchivoD);
}
void ImprimeSopa()
{
int i,j;
printf("\n\n\n");
printf(" ");
for(i=0;i<50;i++)
{
if(i<9)
{
printf("%i ",i+1);
}
else
{
printf("%i ",i+1);
}
}
printf("\n\n");
for(i=0;i<50;i++)
{
if(i<9)
{
printf(" %i ",i+1);
}
else
{
printf(" %i ",i+1);
}
for(j=0;j<50;j++)
{
printf("%c ",Sopa[i][j]);
}
printf("\n");
}
printf("\n\n\n");
for(i=0;i<15;i++)
{
switch(i)
{
case 0: printf(" %s\n",palabra1);
break;
case 1: printf(" %s\n",palabra2);
break;
case 2: printf(" %s\n",palabra3);
break;
case 3: printf(" %s\n",palabra4);
break;
case 4: printf(" %s\n",palabra5);
break;
case 5: printf(" %s\n",palabra6);
break;
case 6: printf(" %s\n",palabra7);
break;
case 7: printf(" %s\n",palabra8);
break;
case 8: printf(" %s\n",palabra9);
break;
case 9: printf(" %s\n",palabra10);
break;
case 10: printf(" %s\n",palabra11);
break;
case 11: printf(" %s\n",palabra12);
break;
case 12: printf(" %s\n",palabra13);
break;
case 13: printf(" %s\n",palabra14);
break;
case 14: printf(" %s\n",palabra15);
break;
}
}
getch();
}
Solo necesito crear la funcion para qe busque las palabras en los diferentes sentidos !
Valora esta pregunta


0