Algoritmo del programa en lenguaje C
#include
char * dict[]={
"soso",
"en blanco",
"sombrío",
"sangrado",
"mezcla",
"ciego",
"parpadeo",
"rubio",
"sangre",
"floración",
"soplado",
"golpes",
"marca",
"brank",
"pan",
"romper",
"brema",
"raza",
"marrón",
"clank",
p>
p>
"tintineo",
"pavor",
"sueño"
}; >#define MAX_DICT 23
checkin(char * input){
int i
for(i=0;i { if(strcmp(input,dict[i])==0)return i; } return -1; } getNext(char * input,int count,int indexes[]) { int i,j,len ,dest,k, cc; char nuevo[100]; len=strlen(entrada); for(i=0;i { strcpy(nuevo,entrada for(j=0;j<26;j++) { nuevo[i]='a'+j; cc=0; for(k=0;k if(strcmp(dict[indexes[k]],new)==0){ cc=1; /p> } } if(cc==1)continue;//Ya transformado dest=checkin(new); if(dest>=0)return dest;//Encuentra la palabra que se puede transformar } } < /p > return -1;//No hay palabras que se puedan convertir } main(){ char input[100], nuevo[100 ],salida[100],carretera[1024]; int index,i,j,dest,count,indexes[MAX_DICT]; strcpy(entrada," "); while(strcpy(input,"quit")!=0) { printf("Ingrese la cadena de transformación:") p> scanf("%s",entrada if(strcmp(entrada,"salir")==0) printf("Ingrese la cadena de destino: "); scanf("%s",salida if(strcmp(salida,"salir")== 0)break; index=checkin(salida); if(index<0){ printf("¡%s no está en el diccionario! \n",salida); p> continuar; } index=checkin(entrada); if(index<0 ){ printf("¡%s no está en el diccionario!\n",input continuar } strcpy(carretera,""); continuar } strcpy(carretera,""); strcpy(nuevo,entrada); recuento=0; índices[recuento]=índice recuento++; > while(1) { destino=-1; destino=getNext(new,count,indexes); if(dest<0){ printf("No hay serie de transformación\n"); break } else if(strcmp(dict[dest],output)==0){//Encontrar la cadena de destino printf("%s,%s%s\n",input,road,output ) ; break; } else{//Proceso de transformación, salida si la transformación es exitosa strcat(road, dict[ destino]); strcat(carretera,","); strcpy(nuevo,dict[dest]); =dest ; recuento++; } } } }