#include 
#include 
#include 
#include 
#define MAX_AGEN 5
#define MAX_CAD 40

struct persona{
  char nombre[MAX_CAD];
  unsigned long telf;
};

struct persona leer_persona();
void imprimir_persona(struct persona p);
int buscar_persona(struct persona agenda[], int tam, char *nombre, struct persona &p);
int insertar_persona(struct persona agenda[], int tam, struct persona p);
void listar_agenda(struct persona agenda[], int tam);
void inicializar_agenda(struct persona agenda[], int tam);
int borrar_persona(struct persona agenda[], int tam, char *nombre);

int menu();

int main()
{
  int opcion;
  struct persona agenda[MAX_AGEN], p;
  char nombre[MAX_CAD];
  inicializar_agenda(agenda,MAX_AGEN);
  do{
    system("cls");
    opcion=menu();
    fflush(stdin);
    switch(opcion)
     {
       case 1: p=leer_persona();
               if (insertar_persona(agenda,MAX_AGEN,p)==1)
                 printf("\n Contacto insertado con exito");
               else  
                 printf("\nError, el contacto no se ha insertado");
               break;
       case 2: printf("\nIntroduce el nombre a buscar: ");
               gets(nombre);
               if (buscar_persona(agenda,MAX_AGEN,nombre,p)==1)
                 imprimir_persona(p);
               else
                 printf("\nEl contacto no existe");  
               break;
       case 3: listar_agenda(agenda,MAX_AGEN);
               break;
       case 4: printf("\nIntroduce el nombre a borrar: ");
               gets(nombre);
               if (borrar_persona(agenda,MAX_AGEN,nombre)==1)
                 printf("\nContacto borrado con exito");
               else
                 printf("\nError, el contacto no existe");
               break;
       case 5: printf("\n Hasta la vista");
               break;
       default: printf("\n Opcion no valida");
     }
    getch();
  }while(opcion!=5);
  return 0;
}

struct persona leer_persona()
{
  struct persona p;
  printf("\nIntroduce nombre: ");
  gets(p.nombre);
  printf("Introduce telefono: ");
  scanf("%lu",&p.telf);
  return p; 
}

void imprimir_persona(struct persona p)
{
  printf("\nNombre: %s",p.nombre);
  printf("\nTelefono: %lu",p.telf);
}

int buscar_persona(struct persona agenda[], int tam, char *nombre, struct persona &p)
{
  int i=0,encontrado=-1;
  while(i<tam && encontrado==-1)
   {
    if(strcmp(agenda[i].nombre,nombre)==0)
     {
       encontrado=i;
       p=agenda[i];
     }
    else 
       i++;
   }
  return encontrado;
}

int insertar_persona(struct persona agenda[], int tam, struct persona p)
{
  int exito=0,i=0;
  while(i<tam && exito==0)
   {
     if(agenda[i].nombre[0]=='\0')    //if (strcmp(agenda[i].nombre,"")==0)
      {
        agenda[i]=p;
        exito=1; 
      }
     i++; 
   } 
  return exito;
} 

void listar_agenda(struct persona agenda[], int tam)
{
  int i,cont=0;
  for(i=0;i<tam;i++)
   {
     if(agenda[i].nombre[0]!='\0')
      {
        cont++;
        printf("\n");
        imprimir_persona(agenda[i]);
      }
   }
  if(cont==0)
    printf("\n Agenda Vacia"); 
}
    
int menu()
{
  int opcion;
  printf("\n1. Insertar contacto");
  printf("\n2. Buscar Contacto");
  printf("\n3. Listar Agenda");
  printf("\n4. Borrar contacto");
  printf("\n5. Salir");
  printf("\n\nIntroduce opcion: ");
  scanf("%d",&opcion);
  return opcion;
}

void inicializar_agenda(struct persona agenda[], int tam)
{
  int i;
  for(i=0; i<tam; i++)
    agenda[i].nombre[0]='\0';
//    strcmp(agenda[i].nombre,"");
}

int borrar_persona(struct persona agenda[], int tam, char *nombre)
{
  int exito=0,posicion;
  struct persona p;
  posicion=buscar_persona(agenda,tam,nombre,p);
  if(posicion!=-1)
   {
     exito=1;
     agenda[posicion].nombre[0]='�';
   } 
  return exito;
}
</pre>