// // main.c // T1_Ej23 // // Created by Mari Paz Guerrero Lebrero on 15/1/15. // Copyright (c) 2015 Mari Paz Guerrero Lebrero. All rights reserved. // #include #include #include #define MAXI 100 typedef struct{ char nombre[30]; char calle[30]; char ciudad[30]; char provincia[30]; int CP; }Lugar; int Menu(); void AniadirElto(Lugar l[], int n); int BorrarElto(Lugar l[], int n, char nombre[]); int BuscarElto(Lugar l[], int n, char nombre[]); void ListarEltos(Lugar l[], int n); int main() { Lugar l[MAXI]; int i = 0, op, pos; char nom[30]; op = Menu(); while(op != 5) { switch(op) { case 1:{ if(i > MAXI - 1) printf("No se pueden añadir mas elementos, se ha superado el máximo (100 eltos). Para insertar uno nuevo antes debe eliminar uno existente\n"); else { AniadirElto(l, i); i++; break; } } case 2:{ if(i == 0) printf("No hay nigun elemento en la lista, no puede borrar\n"); else { printf("Introduzca nombre del elemento que quiere borrar: "); fflush(stdin); gets(nom); if(BorrarElto(l, i, nom) == 1) { printf("Elemento eliminado\n"); i--; } else printf("No se ha podido eliminar el elemento. No existe en el sistema\n"); break; } } case 3:{ if(i == 0) printf("No hay nigun elemento en la lista, no puede buscar\n"); else { printf("Introduzca nombre del elemento que quiere buscar: "); fflush(stdin); gets(nom); pos = BuscarElto(l, i, nom); if(pos == -1) printf("No existe ningun elemento con dicho nombre\n"); else { printf("\tCalle: "); puts(l[pos].calle); printf("\tCiudad: "); puts(l[pos].ciudad); printf("\tProvincia: "); puts(l[pos].provincia); printf("\tCP: %d\n", l[pos].CP); } break; } } case 4:{ if(i == 0) printf("No hay nigun elemento en la lista\n"); else { ListarEltos(l, i); break; } } default:printf("ERROR: Opcion incorrecta\n"); } op = Menu(); } return 0; } int Menu() { int op; printf("--------------------------------------------\n"); printf(" MENU \n"); printf("--------------------------------------------\n"); printf("\t1. Añadir un elemento\n"); printf("\t2. Eliminar un elemento\n"); printf("\t3. Buscar un elemento\n"); printf("\t4. Listar todos los elementos\n"); printf("\t5. Salir\n"); printf("Elija una opcion: "); scanf("%d", &op); return op; } void AniadirElto(Lugar l[], int n) { printf("Introduzca el nombre: "); fflush(stdin); gets(l[n].nombre); printf("Introduzca la calle: "); gets(l[n].calle); printf("Introduzca la cuidad: "); gets(l[n].ciudad); printf("Introduzca la provincia: "); gets(l[n].provincia); printf("Introduzca el codigo postal: "); scanf("%d", &l[n].CP); } int BorrarElto(Lugar l[], int n, char nombre[]) { int pos, ok = 1, i; pos = BuscarElto(l, n, nombre); if(pos == -1) ok = 0; else { for(i = pos + 1; i < n; i++) l[pos - 1] = l[pos]; } return ok; } int BuscarElto(Lugar l[], int n, char nombre[]) { int pos = -1, encontrado = 0, i = 0; while(i < n && encontrado == 0) { if(strcmp(l[i].nombre, nombre) == 0) { encontrado = 1; pos = i; } i++; } return pos; } void ListarEltos(Lugar l[], int n) { int i; for(i = 0; i < n; i++) { printf("Lugar %d:\n", i + 1); printf("\tNombre: "); puts(l[i].nombre); printf("\tCalle: "); puts(l[i].calle); printf("\tCiudad: "); puts(l[i].ciudad); printf("\tProvincia: "); puts(l[i].provincia); printf("\tCP: %d\n", l[i].CP); printf("--------------------------------------------\n"); } }