Ver Mensaje Individual
  #20 (permalink)  
Antiguo 20/11/2015, 07:13
aguml
 
Fecha de Ingreso: febrero-2015
Mensajes: 404
Antigüedad: 9 años, 3 meses
Puntos: 3
Respuesta: problema con juego de palabras

Y tercera y ultima parte:
Código C:
Ver original
  1. //-----------------------------------------------------------------------------
  2.  
  3. //Busca las palabras de length caracteres en la lista de palabras y las guarda en
  4. //la estructura indicada
  5. int SearchNextWords(char *word,int length,ListaPalabras *Lista)
  6. {
  7.    char cadena[SIZE],salida[SIZE];
  8.    char nameFile[13]={0};
  9.    char aux;
  10.    int a,i,contador,retval;
  11.    FILE *archivo;
  12.  
  13.    sprintf(nameFile,"%i_Letras.txt",length+1);
  14.    archivo=fopen(nameFile,"r");
  15.  
  16.    if(archivo != NULL){
  17.       if(Lista->nEncontradas !=0){
  18.          free(Lista->Palabras);
  19.          Lista->Palabras=NULL;
  20.          Lista->nEncontradas=0;
  21.       }
  22.       do{
  23.          retval=fread(cadena,SIZE,1,archivo);
  24.          strcpy(salida,cadena);
  25.          contador=length;
  26.          for(a=0;a<length;a++){
  27.             for(i=0;i<=contador;i++){
  28.                if(word[a]==cadena[i])
  29.                {
  30.                   aux=cadena[i];
  31.                   cadena[i]=cadena[contador];
  32.                   cadena[contador]=aux;
  33.                   contador--;
  34.                   break;
  35.                }
  36.             }
  37.          }
  38.          if(contador==0){
  39.             Lista->nEncontradas++;
  40.             Lista->Palabras = realloc(Lista->Palabras,Lista->nEncontradas*sizeof(Palabra));
  41.             strcpy(Lista->Palabras[Lista->nEncontradas-1].Palabra,salida);
  42.             Lista->Palabras[Lista->nEncontradas-1].PosCaracterExtra=(int)strchr(Lista->Palabras[Lista->nEncontradas-1].Palabra,cadena[0])-(int)Lista->Palabras[Lista->nEncontradas-1].Palabra;
  43.          }
  44.       }while(!feof(archivo));
  45.       retval=Lista->nEncontradas;
  46.       fclose(archivo);
  47.    }else{
  48.       retval=-1;
  49.    }
  50.    return retval;
  51. }
  52. //-----------------------------------------------------------------------------
  53.  
  54. //Elije una palabra al azar del archivo elegido
  55. int SearchFirstWord(char *nameFile,char *word)
  56. {
  57.    int retval,nPalabras,posPalabra;
  58.    FILE *archivo;
  59.    char palabra[SIZE];
  60.  
  61.    archivo=fopen(nameFile,"r");
  62.    if(archivo != NULL){
  63.       fseek(archivo,0,SEEK_END);
  64.       nPalabras=ftell(archivo)/SIZE;
  65.       posPalabra=rand()%nPalabras;
  66.       fseek(archivo,posPalabra*SIZE,SEEK_SET);
  67.       retval=fread(palabra,SIZE,1,archivo);
  68.       if(retval==1)
  69.          strcpy(word,palabra);
  70.       fclose(archivo);
  71.    }else{
  72.       retval=-1;
  73.    }
  74.    return retval;
  75. }