#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]=='�') //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]!='�')
{
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("nnIntroduce 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]='�';
// 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;
}
La funcion buscar no funciona…
Efectivamente, esa función ignora el primer registro que haya guardado. Queda como reto buscar el error 😀
gracias!me sirvio muchisimo
main(){
int grasias;
printf(“GRASIASSS WEYYYYYY WEON T DEVO LA BIDA ERMANO \n”,&grasias);
int buscar_persona(struct persona agenda[], int tam, char *nombre, struct persona p)
{
int i=0,encontrado=1;
while(i<tam && encontrado==0)
{
if(strcmp(agenda[i].nombre,nombre)==0)
{
encontrado=i;
p=agenda[i];
}
else
i++;
}
return encontrado;
}
Solo tienes que Reemplazar el -1 de encontrado por 1 y en la comparación en ves de -1 agrega un 0 bueno de todos modos hay esta corregido .