de un archivo llamado "reglas.txt" contiene en cada línea alguna letra del abecedario (solo mayusculas) de la A-Z y numeros de 1-4
este es el ejemplo de como funciona:
reglas.txt
G 00000
Z 11001
K 00011
.
.
.
.
1 01110
Las letras en el archivo no necesariamente están en orden alfabético,
igualmente los números tampoco están en orden. La idea es que las cadenas de
entrada tengan un significado diferente según el archivo de reglas. Todas las letras y
números mencionados anteriormente deben estar incluidos en las reglas con su
respectiva codificación en binario.
Si la entrada fuera 1 00000110010111000000, se tiene que escribir el mensaje
decodificado en un archivo de salida, cada entrada es una línea en la salida. Para el
ejemplo anterior, en el archivo salida se escribe GZ1G. Todo esto con las reglas
definidas antes.
yo use printf para imprimir y ver si estaba haciendo todo correcto y si me imprime la letra pero me imprime tambien unas cosas extrañas :(
y mi otro problema es que ese primer arreglo que toma los 5 digitos agarro y lo comparo con la cadena que estara en el arreglo reglas.txt hasta que encuentre que son iguales, pero no se como hacer para que ese arreglo vuelva a picar 5 digitos de la cadena grande pero ahora de 5 a 9 lo que hice fue ponerle un contador que fuera sumando y siempre se sumara de 5 en cinco pero no se como podria hacer esa parte de que vaya probando cada 5 digitos ya la compracion la tengo pero esa parte no se
Código C:
Ver original
#include <stdlib.h> #include <stdio.h> #include <math.h> #include <string.h> int main (int argc, char *argv[]) { int i=0,j=0,k=0,l=0,m=0,n=0; char bin[50],str1[5],letra,op,ArrSol[20]; //Donde se guarda resultado final,coloqué índice 20 por ser random en la vida int caracter,ret; int v=0, z=5; char array[5]; int conta; FILE *reglas; if(op=='1'){ //Opción 1 while (bin[i]!= ' '){ for (v=0;v<z;v++){ array[v]=bin[v]; conta++; } i++; //Agregué esto }// y esto if(reglas==NULL){ }else{ fscanf(reglas,"%c %s",&letra,&str1); //Aquí da un error que se resuelve colocando un índice-> &str1[j] //Pero igual guarda sin colocarle el índice char word; word=letra; if (ret==0){ ArrSol[k]=letra; } } } } return 0; }