Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/09/2006, 16:02
Avatar de El_Metallick
El_Metallick
 
Fecha de Ingreso: noviembre-2002
Ubicación: Santiago, Chile
Mensajes: 1.718
Antigüedad: 22 años, 1 mes
Puntos: 16
Alguien me puede decir porque no funciona esto??

Hola amigos, ya estoy hasta la corona con este programa, no se porque no me guarda bien los datos, les agradeceria mucho si me pueden decir porque funciona mal este código... llevo horas analizandolo y no se porque agrega mal

Código:
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

typedef struct Arriendo {
       int codigo_arriendo;       //Código del arriendo 
       int codigo_auto;           //Código del auto
       char rut[10];               //Rut arrendatario
       char fecha_arriendo[10];    //Fecha en la que se arrendo
       char fecha_vencimiento[10]; //Fecha en la que vence el arriendo
       char estado[7];            //Estado del arriendo
       struct Arriendo *next;
}Arriendo;

struct Arriendo *CabezaArriendo;

void CrearArriendo(struct Arriendo **CabezaArriendo)
{
   *CabezaArriendo = NULL;
}

int VaciaArriendo(struct Arriendo *CabezaArriendo)
{
   if (CabezaArriendo == NULL)
      return 1;
   else
      return 0;
}


main()
{
   system("title Automotora (C) 1.0 - Power By El_Metallick");
   system("color 3f");

   CrearArriendo(&CabezaArriendo);
   
   struct Arriendo *Anterior;
   struct Arriendo *Siguiente;
   struct Arriendo *Nuevo;
   int cod;
   char fve[10];
   time_t tiempo;
   char fecha[10];
   struct tm *tmPtr;

      printf("INSERCION DE ARRIENDOS\n");
      printf("----------------------\n");

      Nuevo = (Arriendo *)malloc(sizeof(Arriendo));

      printf("\nEscriba el c%cdigo del Auto: ", 162);
      scanf("%d", &cod);
      
      printf("\nEscriba el rut del usuario (en formato XXXXXXXX-X y sin puntos (.)): ");
      scanf("%s", Nuevo->rut);
      
      printf("\nEscriba la fecha de vencimiento del arriendo (en formato aaaa/mm/dd): ");
      scanf("%s", fve);
   
      tiempo = time(NULL);
      tmPtr = localtime(&tiempo);
      strftime( fecha, 11, "%Y/%m/%d", tmPtr);

      Nuevo->codigo_arriendo = 1;
      Nuevo->codigo_auto = cod;
      strcpy(Nuevo->fecha_arriendo,fecha);
      strcpy(Nuevo->fecha_vencimiento,fve);
      strcpy(Nuevo->estado,"Vigente");

      if (VaciaArriendo(CabezaArriendo) || (strcmp(Nuevo->fecha_vencimiento,(CabezaArriendo)->fecha_vencimiento) < 0))
      {
         Nuevo->next = CabezaArriendo;
         CabezaArriendo = Nuevo;
      }
      else
      {
         Anterior = CabezaArriendo;
         Siguiente = Anterior->next;
      
         while ((Siguiente != NULL) && (strcmp(Siguiente->fecha_vencimiento,Nuevo->fecha_vencimiento) <= 0))
         {
            Anterior = Siguiente;
            Siguiente = Siguiente->next;
         }
      
         Anterior->next = Nuevo;
         Nuevo->next = Siguiente;
      }
   
   printf("\nAl auto %d fue arrendado por %s hoy %s hasta %s satisfactoriamente.\n\n", Nuevo->codigo_auto, Nuevo->rut, Nuevo->fecha_arriendo, Nuevo->fecha_vencimiento);
   getch();
}
Me sale esto:

Al auto 1 fue arrendado por 15148154-82006/09/122006/09/15Vigente hoy 2006/09/12
2006/09/15Vigente hasta 2006/09/15Vigente satisfactoriamente.

y me deveria salir esto:

Al auto 1 fue arrendado por 15148154-8 hoy 2006/09/12 hasta 2006/09/15 satisfactoriamente.

Saludos
__________________
Haz la guerra en la cama y el amor donde se te de la gana...
El tiempo es el mejor maestro, lo único malo es que te mata...¡¡Aprovecha tu tiempo!!