using System;
namespace tema5
{
class MainClass
{
//Guardo los máximos en una constante;
const int MAX_ELEMENTOS=100;
//la funció menú muestra las opciones del menú dy permite escoger una de ellas.
static int menu ()
{
int n;
Console.WriteLine ("1.Nuevo producto.");
Console.WriteLine ("2. Precio medio.");
Console.WriteLine ("3. Listar productos.");
Console.WriteLine ("4. Modificar producto.");
Console.WriteLine ("5. Eliminar producto.");
Console.WriteLine ("6. Buscar producto.");
Console.WriteLine ("7. Salir");
Console.WriteLine ("Escoge opción:");
n = int.Parse (Console.ReadLine ());
return n;
}
//la función insertaProducto inserta un nuevo producto si la tienda no esta llena.
static void insertarProducto (string[]nombre, double[]precio,ref int totalProductos)
{
if (totalProductos < MAX_ELEMENTOS) {
Console.WriteLine ("Introduce el nombre del nuevo producto");
nombre [totalProductos] = Console.ReadLine ();
Console.WriteLine ("Introduce el precio del nuevo producto");
precio [totalProductos] = double.Parse (Console.ReadLine ());
totalProductos++;
}
else
{
Console.WriteLine ("No se pueden insertar más productos");
}
}
//La función promedio realiza la media aritmética de todos los precios.
static double promedio (double [] precio, int totalProductos)
{
double media = 0.0;
if (totalProductos > 0)
{
for (int i = 0; i < totalProductos; i++)
{
media = media + precio [i];
}
media = media / totalProductos;
}
return media;
}
//La función listarProductos muestra los productos de la tienda.
static void listarProductos(string [] nombre, double[] precio, int totalProductos)
{
if (totalProductos > 0)
{
Console.WriteLine ("\tPRODUCTOS\t\t\tPRECIO");
Console.WriteLine ("---------------------------------------------------------");
for (int i = 0; i < totalProductos; i++)
{
Console.WriteLine("\t{0}\t\t\t{1}",nombre[i], precio[i]);
}
}
else
{
Console.WriteLine("No se ha almacenado aún ningún producto");
}
}
//La función modificarNombre se encarga de cambiar el nombre de un producto por otro solicitado en la misma función.
static void modificarNombre(ref string nombre)
{
Console.WriteLine ("Introduce el nuevo nombre:");
nombre = Console.ReadLine ();
}
//La funcion modificaPrecio modificará un precio de la tabla precios.
static void modificaPrecio (ref double precio)
{
Console.WriteLine ("Introduce el nuevo precio:");
precio = double.Parse (Console.ReadLine ());
}
//La función eliminarProducto eliminará el producto y precio almacenados en las tablas nombre y precio en la posicionElimina.
static void eliminarProducto (string [] nombre, double[] precio, ref int totalProductos, int posicionElimina)
{
for (int i = posicionElimina; i < totalProductos; i++)
{
nombre [i] = nombre [i + 1];
precio [i] = precio [i + 1];
}
totalProductos--;
}
//La Función buscarNombre buscará el producto en la tabla de productos, cuyo nombre coincide con el nombre pasado como parámetro.
static int buscarNombre(string [] nombre, int totalProductos, string nombreBuscado)
{
int buscando = -1;
int i = 0;
while (buscando == -1 && i < totalProductos)
{
//La función CompareTo comnpara cadenas de caracteres
if (nombre [i].CompareTo (nombreBuscado) == 0)
{
buscando = i;
}
i++;
}
return buscando;
}
public static void Main (string[] args)
{
//las variables de tipo array
string [] nombres=new string[MAX_ELEMENTOS];
double[] precios = new double[MAX_ELEMENTOS];
int opcion = 0;
int numElementos = 0;
string nombreAux;
int posicion;
int subopcion;
do {
Console.Clear ();
opcion = menu ();
switch (opcion)
{
case 1: insertarProducto (nombres, precios, ref numElementos);
break;
case 2: Console.WriteLine ("El precio promedio de todos los productos almacenados es: {0}", promedio (precios, numElementos));
break;
case 3: listarProductos (nombres, precios, numElementos);
break;
case 4:
Console.WriteLine("¿Qué producto desea modificar?");
nombreAux=Console.ReadLine();
posicion=buscarNombre(nombres,numElementos,nombreAux);
if (posicion < 0)
{
Console.WriteLine("Producto no encontrado");
}
else
{
Console.WriteLine("¿Qué desea modificar?");
Console.WriteLine("1. Nombre");
Console.WriteLine("2. Precio");
Console.WriteLine("3. Ambos");
subopcion=int.Parse(Console.ReadLine());
switch(subopcion)
{
case 1: modificarNombre (ref nombres[posicion]);
break;
case 2: modificaPrecio(ref precios[posicion]);
break;
case 3: modificarNombre(ref nombres[posicion]); modificaPrecio(ref precios[posicion]);
break;
}
}
break;
case 5:
if (numElementos > 0)
{
Console.WriteLine("Indica el nombre del producto a eliminar:");
nombreAux=Console.ReadLine();
posicion=buscarNombre(nombres,numElementos,nombreAux);
if (posicion >=0)
{
eliminarProducto(nombres, precios,ref numElementos, posicion);
}
else
{
Console.WriteLine("El producto que se desea eliminar no existe.");
}
}
else
{
Console.WriteLine("No hay productos almacenados en el almacen.");
}
break;
case 6: Console.WriteLine("Indica el nombre del producto a buscar");
nombreAux=Console.ReadLine();
posicion=buscarNombre(nombres,numElementos,nombreAux);
if (posicion >=0)
{
Console.WriteLine("Producto encontrado");
Console.WriteLine("{0}-{1}", nombres[posicion], precios[posicion]);
}
break;
default:
Console.WriteLine ("La opción escogida no es válida, vuelva a intentarlo");
break;
}
Console.ReadKey();
} while (opcion != 7);
}
}
}
0 comentarios:
Publicar un comentario