/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

duda con recursividad y listas

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
elbuitre86



Registrado: 21 Jun 2007
Mensajes: 5

MensajePublicado: 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 Very Happy
Volver arriba
elbuitre86



Registrado: 21 Jun 2007
Mensajes: 5

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com