Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Temas - lambda
Páginas: [1]
1
« en: Martes 17 de Mayo de 2011, 06:54 »
Tengo el problema de que al momento de almacenar la informacion en la tabla hash , y buscarla por medio de la funcion localizar la cual devuelve el puntero devuelve "nil" cuando se supone que hay informacion. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #define R 0.618034 #define M 1024 //_______Estructuras de Datos____________// struct TipoTraduccion { char espanol[20]; char ingles[20]; }; typedef struct TipoTraduccion Traduccion; struct TipoElemento { Traduccion traduccion; struct TipoElemento *sgte; }; typedef struct TipoElemento Elemento; struct TipoTabla { Elemento* tabla[M]; int numElementos; }; typedef struct TipoTabla TablaDispersa; //----------------------------------------// //_______Prototipos de funciones_________// long transformaClave(const char* clave); int dispersion(long x); void crearTabla(TablaDispersa* t); Elemento* crearNodo(Traduccion t); void crearTraduccion (TablaDispersa* t,Traduccion r); Elemento* localizar(TablaDispersa t, char spanish[20]); //---------------------------------------// //______Funcion Principal(Main)__________// int main(int argc, char **argv) { Traduccion trad ; TablaDispersa t; crearTabla(&t); int k; while( k!= 2011) { printf("nt 1.- insertar traduccion"); printf("nt 2.- buscar palabra"); printf("nt 3.- Eliminar "); /*Imprime el menu de opciones*/ printf("nntEsperando entrada del usuario >>> "); switch( k ) { case 1: puts("Ingresa palabra en español"); scanf("%s",trad. espanol); puts("Ingresa traduccion"); crearTraduccion(&t,trad); break; case 2: puts("Ingresa la palabra a traducir"); scanf("%s",trad. espanol); printf("%p",localizar (t ,trad. espanol)); break; default: printf("nntLa opcion es incorrecta. Seleccione otra opcion..."); break; } } return 0; } //---------------------------------------// //__________Funciones____________________//} long transformaClave(const char* clave) { int j; long d; d=0; { d = d * 27 + clave[j]; } if (d < 0){ d=-d; } return d; } int dispersion (long x) { double t; int v; v = (int)M * t; return v; } void crearTabla(TablaDispersa* t) { for(int i=0; i<M ;i++) t->tabla[i] = NULL; t-> numElementos = 0; } Elemento* crearNodo(Traduccion t) { Elemento* n; n = (Elemento *)malloc(sizeof(Elemento )); n-> traduccion = t; n-> sgte = NULL; return n; } void crearTraduccion (TablaDispersa* t,Traduccion r) { int posicion; Elemento* nuevo; posicion = dispersion(transformaClave(r.espanol)); nuevo = crearNodo(r); nuevo -> sgte = t -> tabla[posicion]; t -> tabla[posicion] = nuevo; t -> numElementos++; } Elemento* localizar(TablaDispersa t, char spanish[20]) { Elemento* p = NULL; int posicion; posicion = dispersion(transformaClave(spanish)); if (t.tabla[posicion]) { p = t.tabla[posicion]; while((p -> sgte != NULL ) && p -> traduccion.espanol !=spanish) p = p -> sgte; if(p -> traduccion.espanol != spanish) p = NULL; } return p; }
El código es de un traductor de idiomas que al poner la opción de buscar pide la palabra a traducir y devuelve la direccion de memoria . El problema es que no se si implemente bien la tabla y si todo esta incorrecto.
2
« en: Domingo 15 de Mayo de 2011, 19:05 »
Buenas a todos. Resulta que tengo que entregar de proyecto para final de semestre un traductor de idiomas en C utilizando estructuras de datos dinámicas( pilas,colas,listas enlazadas,arboles o tablas hash), la verdad no tengo idea de como hacerlo, pensaba en utilizar una tabla hash pero los datos desaparecerian al terminar la ejecucion de programa y requiero que los datos permanescan. Se aceptan todo tipo de ideas siempre y cuando recurran a estructuras de datos dínamicas y que los datos permanescan.
Gracias.
3
« en: Sábado 8 de Enero de 2011, 00:51 »
Hola que tal a todos mi problema es el siguiente: No puedo limpiar el buffer de entrada y debido a esto mi programa se salta una instrucción en la función "pedidos" . #include <stdio.h> #include <ncurses.h> typedef struct vx {char calle[30];char tipo_cantidad[15];int cantidad;}vx; void importe_venta (void); void pedidos (void); int main(void) { printf("Elija una opcion : "); char opc; //while(getchar()!='n'); switch (opc) { case 'a': importe_venta(); break; case 'b': pedidos(); break; } return 0; } void importe_venta(void) { int cantidad=0; int precio=0; int l=cantidad*precio; } void pedidos(void) { vx pedido; //while(getchar()!='n'); scanf("%30[^n],pedido.calle); printf("%sn",pedido.calle); printf("Cantidad total >>> "); scanf("%d",&pedido.cantidad); //print("%dn",pedido.cantidad); printf("Cantidad de cada tipo >>> "); scanf("%30[^n]",pedido.tipo_cantidad); printf("%sn",pedido.tipo_cantidad); }
Sucede que cuando elijo la opción "b" que es para acceder a la función "pedidos" se salta el scanf que pide el domicilio,ya he probado con fflush y no me ha funcionado. Espero que me puedan ayudar, gracias.
Páginas: [1]
|