// // main.c // T1_Ej24 // // Created by Mari Paz Guerrero Lebrero on 19/1/15. // Copyright (c) 2015 Mari Paz Guerrero Lebrero. All rights reserved. // #include #include #include #define MAXI 100 typedef struct{ char nombre[30]; int cantidad; float precio_compra; float precio_venta; }Producto; int Menu(); void InsertarProducto(Producto p[], int i); int ModificarProducto(Producto p[], char nombre[], int i); int BuscarProducto(Producto p[], char nombre[], int n); int ExistenciasProducto(Producto p[], char nombre[], int i); int MayorMargenBeneficio(Producto p[], int n); float PrecioVentaMedio(Producto p[], int n); int main() { Producto p[MAXI]; int i = 0, op, e, pos, j; float pvm; char nom[30]; op = Menu(); while(op != 6) { switch(op) { case 1:{ if(i >= MAXI) printf("ERROR: No se pueden introducir mas productos"); else { InsertarProducto(p,i); i++; } break; } case 2:{ printf("Introduzca el nombre del producto a modificar: "); gets(nom); if(ModificarProducto(p, nom, i) == 0) printf("ERROR: No se ha podido modificar el producto\n"); else printf("Producto modificado con exito\n"); break; } case 3:{ printf("Introduzca el nombre del producto: "); gets(nom); e = ExistenciasProducto(p, nom, i); if(e == -1) printf("ERROR: No se ha encontrado el producto\n"); else printf("El producto tiene %d existencias\n", e); break; } case 4:{ pos = MayorMargenBeneficio(p, i); printf("El producto con mayor margen de beneficio es: "); puts(p[pos].nombre); break; } case 5:{ pvm = PrecioVentaMedio(p, i); printf("Los productos cuyo precio de venta supera %f son: \n", pvm); for(j = 0; j < i; j++) { if(p[j].precio_venta > pvm) puts(p[j].nombre); } break; } default: printf("ERROR: Opcion incorrecta\n"); } op = Menu(); } return 0; } int Menu() { int op; printf("----------------------------------------\n"); printf(" MENU \n"); printf("----------------------------------------\n"); printf("\t1. Insertar producto\n"); printf("\t2. Modificar producto\n"); printf("\t3. Existencias de un producto\n"); printf("\t4. Producto con mayor margen de beneficio\n"); printf("\t5. Productos cuyo precio de venta es superior al precio de venta medio\n"); printf("\t6. Salir\n"); printf("Introduzca una opcion: "); scanf("%d", &op); return op; } void InsertarProducto(Producto p[], int i) { printf("Introduzca el nombre del producto: "); gets(p[i].nombre); printf("Introduzca la cantidad existente en el almacen: "); scanf("%d", &p[i].cantidad); printf("Introduzca su precio de compra: "); scanf("%f", &p[i].precio_compra); printf("Introduzca su precio de venta: "); scanf("%f", &p[i].precio_venta); } int ModificarProducto(Producto p[], char nombre[], int i) { int ok = 0, pos; pos = BuscarProducto(p, nombre, i); if(pos != -1) { InsertarProducto(p, pos); ok = 1; } return ok; } int BuscarProducto(Producto p[], char nombre[], int n) { int i = 0, pos = -1, encontrado = 0; while(i < n && encontrado == 0) { if(strcmp(nombre, p[i].nombre) == 0) pos = i; i++; } return pos; } int ExistenciasProducto(Producto p[], char nombre[], int i) { int existencias = -1, pos; pos = BuscarProducto(p, nombre, i); if(pos != -1) existencias = p[pos].cantidad; return existencias; } int MayorMargenBeneficio(Producto p[], int n) { int i, pos = 0; float maxi = 0, margen; for(i = 0; i < n; i++) { margen = p[i].precio_venta - p[i].precio_compra; if( margen > maxi) { maxi = margen; pos = i; } } return pos; } float PrecioVentaMedio(Producto p[], int n) { int i; float pvm = 0; for(i = 0; i < n; i++) pvm = pvm + p[i].precio_venta; return(pvm / n); }