#include <iostream> #include <string> #include <iomanip> using namespace std; struct Producto { string nombre; float precioUnitario; int cantidadRecomendada; // solo sugerencia int cantidadEnCasa; }; const float IVA = 0.16f; void mostrarProductos(const Producto productos[], int numProductos) { cout << fixed << setprecision(2); cout << "\nLista de productos:\n"; for (int i = 0; i < numProductos; i++) { cout << i+1 << ". " << productos[i].nombre << " - Precio unitario: $" << productos[i].precioUnitario << " - Cantidad recomendada (sugerida): " << productos[i].cantidadRecomendada << "\n"; } } void calcularGasto(Producto productos[], int numProductos, float presupuesto) { cout << "\nIngrese la cantidad que tiene en casa de cada producto:\n"; for (int i = 0; i < numProductos; i++) { cout << productos[i].nombre << " (recomendado " << productos[i].cantidadRecomendada << "): "; cin >> productos[i].cantidadEnCasa; if (productos[i].cantidadEnCasa < 0) productos[i].cantidadEnCasa = 0; // Validación simple } float subtotal = 0.0; bool faltaComprar = false; cout << "\nProductos que se sugieren comprar:\n"; for (int i = 0; i < numProductos; i++) { int sugerido = productos[i].cantidadRecomendada - productos[i].cantidadEnCasa; if (sugerido > 0) { float costo = sugerido * productos[i].precioUnitario; subtotal += costo; cout << "- " << productos[i].nombre << ": sugerido comprar " << sugerido << " unidad(es), costo $" << costo << "\n"; faltaComprar = true; } } if (!faltaComprar) { cout << "No se sugiere comprar ningún producto, tienes suficiente cantidad.\n"; } float ivaMonto = subtotal * IVA; float totalGasto = subtotal + ivaMonto; cout << fixed << setprecision(2); cout << "\nSubtotal sin IVA: $" << subtotal << endl; cout << "IVA (16%): $" << ivaMonto << endl; cout << "Total con IVA: $" << totalGasto << endl; if (totalGasto > presupuesto) { cout << "Atención: el gasto sugerido supera el presupuesto por $" << totalGasto - presupuesto << endl; } else { cout << "Dinero que sobra de la quincena: $" << presupuesto - totalGasto << endl; } // Método de pago cout << "\nSeleccione método de pago:\n"; cout << "1. Tarjeta\n2. Efectivo\n3. Tickets\n"; int metodoPago; do { cout << "Ingrese opción (1-3): "; cin >> metodoPago; } while (metodoPago < 1 || metodoPago > 3); switch (metodoPago) { case 1: cout << "Método de pago seleccionado: Tarjeta\n"; break; case 2: cout << "Método de pago seleccionado: Efectivo\n"; break; case 3: cout << "Método de pago seleccionado: Tickets\n"; break; } } void recomendarProductos(const Producto productos[], int numProductos, float presupuesto) { cout << fixed << setprecision(2); cout << "\nRecomendación de productos según tu presupuesto:\n"; cout << "Con un presupuesto de $" << presupuesto << ", podrías considerar comprar las siguientes cantidades recomendadas:\n"; bool algunProducto = false; for (int i = 0; i < numProductos; i++) { float costoSugerido = productos[i].cantidadRecomendada * productos[i].precioUnitario * (1 + IVA); if (costoSugerido <= presupuesto) { cout << "- " << productos[i].nombre << ": sugerido " << productos[i].cantidadRecomendada << " unidad(es)\n"; algunProducto = true; } else { cout << "- " << productos[i].nombre << ": sugerido " << productos[i].cantidadRecomendada << " unidad(es) (puede exceder presupuesto)\n"; algunProducto = true; } } if (!algunProducto) { cout << "No hay productos que puedas comprar con el presupuesto disponible.\n"; } } int main() { const int numProductos = 12; Producto productos[numProductos] = { {"Leche (litros)", 20.0, 7, 0}, {"Pan (piezas)", 30.0, 2, 0}, {"Pollo (kg)", 90.0, 2, 0}, {"Verduras (kg)", 40.0, 3, 0}, {"Jitomate (kg)", 35.0, 2, 0}, {"Cebolla (kg)", 25.0, 1, 0}, {"Jabon de tocador (piezas)", 25.0, 2, 0}, {"Arroz (kg)", 30.0, 3, 0}, {"Azucar (kg)", 20.0, 2, 0}, {"Aceite (litros)", 50.0, 1, 0}, {"Huevos (docena)", 40.0, 2, 0}, {"Frutas variadas (kg)", 45.0, 3, 0} }; float presupuesto; cout << "Ingrese el presupuesto total para la quincena: $"; cin >> presupuesto; if (presupuesto < 0) presupuesto = 0; int opcion; do { cout << "\n--- Menú ---\n"; cout << "1. Ingresar cantidades y calcular gasto\n"; cout << "2. Ver recomendaciones de productos según presupuesto\n"; cout << "3. Mostrar lista de productos\n"; cout << "4. Salir\n"; cout << "Seleccione una opción: "; cin >> opcion; switch (opcion) { case 1: calcularGasto(productos, numProductos, presupuesto); break; case 2: recomendarProductos(productos, numProductos, presupuesto); break; case 3: mostrarProductos(productos, numProductos); break; case 4: cout << "Saliendo del programa. ¡Gracias!\n"; break; default: cout << "Opción inválida, intente de nuevo.\n"; } } while (opcion != 4); return 0; }
Please keep input under 1000 characters