| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
elbuitre86
Registrado: 21 Jun 2007 Mensajes: 5
| Publicado: 02/07/2012 3:29 pm | | | Título: duda con recursividad y listas |
| Hola como andan, estoy haciendo un tp para la facu y tengo un problema. Primero les cuento mas o menos lo k tengo k hacer: "Desarrollar un sistema Help Desk. El sistema contempla la modalidad usuario y la modalidad administrador..
Un servicio de help desk recibe casos durante la noche, y los resuelve durante el dia. Los usuarios ingresan al sistema en modo usuario para registrar sus casos. Cada usuario tiene la misma prioridad, y los casos son atendidos por orden de llegada
Una vez terminada la noche, el administrador debe llegar al help desk y activar el proceso de atención de casos, que distribuye los casos a cada agente. Luego de ser resueltos los casos son enviados al historial como resueltos "
aca les pongo el codigo y ahora explico mi duda.
| Código: | #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h>
typedef struct lista { char elem [200]; int usu; int caso; struct lista *sig; } nodo;
void crear (nodo *pt);
int main() { nodo *prin; int log; printf("Ingresar como usuario(1) o como helpdisk(2): "); scanf("%d",&log); if(log==1) { prin=(nodo *)malloc(sizeof(nodo)); crear(prin);
} return 0; }
void crear (nodo *registro) { int cont=1; char pro[200]; printf("Usuario: Usuario\n"); printf("Caso numero: %d\n",cont); cont++; printf("Ingrese el problema (FIN para finalizar): \n"); scanf(" %[^\n]", pro); if (strcmp (pro,"FIN")==0) { registro->sig=NULL; return; } else {
strcpy(registro->elem, pro); registro->caso=cont; registro->sig=(nodo*)malloc(sizeof(nodo)); crear (registro->sig);
}
return; }
|
Lo k estoy buscando es, k el contador de casos sea automatico, o autonumero, osea a medida k van ingresado casos este vaya sumando de a 1, el usuario es siempre el mismo.... y bueno dsp estan los casos. Lo k no entiendo es el pork no me anda el contador, lo estoy haciendo recursivamente??? el void crear? Desde ya muchas gracias P.D.: espero haber sido claro con la explicacion  |
| | Volver arriba | |  | elbuitre86
Registrado: 21 Jun 2007 Mensajes: 5
| Publicado: 02/07/2012 4:07 pm | | | Título: |
| Bueno, creo haberlo resulto, lo k hice fue mandar el contador dsd el main, de esta manera no se inicializa cada vez k se repite la funcion, les pego el codigo
| Código: | #include <stdio.h> #include <conio.h> #include <string.h> #include <stdlib.h>
typedef struct lista { char elem [200]; int caso,esta; struct lista *sig; } nodo;
void crear (nodo *registro,int cont); void mostrar (nodo *registro);
int main() { nodo *prin; int log,cont=0; printf("Ingresar como usuario(1) o como helpdisk(2): "); scanf("%d",&log); if(log==1) { printf("Estados de casos: 1 Nuevo, 2 Pendiente, 3 Revisado, 4 Resuelto \n"); prin=(nodo *)malloc(sizeof(nodo)); crear(prin,cont);
} mostrar(prin); return 0; }
void crear (nodo *registro, int cont) {
char pro[200]; printf("\nUsuario: Usuario\n"); cont++; printf("Caso numero: %d\n",cont); registro->esta=1; printf("Estado del caso: %d\n",registro->esta); printf("Ingrese el problema (FIN para finalizar): \n"); scanf(" %[^\n]", pro); if (strcmp (pro,"FIN")==0) { registro->sig=NULL; return; } else {
strcpy(registro->elem, pro); registro->caso=cont; registro->sig=(nodo*)malloc(sizeof(nodo)); crear (registro->sig,cont);
}
return; }
void mostrar (nodo *registro) { if (registro->sig !=NULL) { printf("\nNumero de caso:%d\n",registro->caso); printf("Estado:%d\n",registro->esta); printf ("Caso:%s\n",registro->elem); mostrar (registro->sig); } return; }
|
Muchas gracias, igual les pido a los mod´s k no cierren este theard, preferira dejarlo abierto hasta k termine el tp, k es para el jueves, GRACIAS! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |