|
#1
|
|||
|
|||
|
Hola. Tengo un problema:
Quiero crear registros en un archivo (binario), y quiero que a cada palabra que ingreso se le agregue un identificador. Y que ese identificador se le pueda asignar por referencia a otra palabra. En concreto, quiero hacer un diccionario de sinónimos, pero sin que las palabras se repitan, es decir, algo así: 1:hola:2 2:alo:1 Siendo el primer campo el id, el segundo la palabra, y el tercero la referencia a la palabra que es el sinónimo. También que se puedan usar más de un sinónimo por palabra, quedando algo así: 1:hola:2,3 2:alo:1,3 3:quehay:1,2 ¿Cómo quedaría el código? Última edición por sabelo-homerofan fecha: 10-oct-2011 a las 21:45. |
|
#2
|
||||
|
||||
|
No había visto este tema.
Todavía te interesa la ayuda o ya es demasiado tarde? Claro que aún si te sigue interesando no sé si terminaré haciendo el programa o sólo daré ideas porque ahora mismo tengo un poco de problemas con C para compilar los programas y no podría probar el código. |
|
#3
|
|||
|
|||
|
Si, aún me interesa. Con respecto a lo del programa, no interesa el código, solamente quiero saber más o menos cómo sería el algoritmo para poder hacerlo.
Gracias. |
|
#4
|
||||
|
||||
|
mis conocimientos son basicos, pero segun lo que entiendo que quieres lo que yo haria es despues de leer cada renglon hasta el salto de linea (obvio)
usar la linea para guardar los datos en la estructura de la palabra struct palabra { int id; char palabra[30]; int sinonimos[5]; (el tamaño depende de ti) }; asi en el arreglo de los sinonimos guardas las id sinonimas y señalas con 0 que ya no hay mas sinonimos, (o ninguno si le das 0 al primer valor del arreglo) hacer eso tambien es facil, tomas la linea que leiste, el primer caracter lo conviertes a entero y ya tienes la id, despues saltas la siguiente posicion (que sabes que es el simbolo ':') y comienzas a pasar cada posicion a la palabra hasta llegar al proximo ':', sabes que el primer caracter despues del ':' es el id del sinonimo asi que lo conviertes a entero (en caso de que tengas muchos ids y llegues a mas de 1 digito, solo pasas los caracteres a otra variable temporal hasta que llegues a ',' y la conviertes a entero) y te saltas la ',' y repites con el siguiente id, hasta que id==0 y listo... segun entendi... creo que eso es lo que pides. o mejor aun: struct diccionario[100] (no tengo idea cuantas palabras piensas usar) { char palabra[30]; int sinonimos[5]; (el tamaño depende de ti) }; y el id lo utilizas como la posicion en el arreglo de structs ^^ Oim~ Última edición por Oimetra fecha: 25-oct-2011 a las 02:17. |
|
|