Sei sulla pagina 1di 4

using System;

using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Listas1 //con lista simple
{
class Nodo
{
public string medicamento;
public int stock;
public Nodo siguiente;
public Nodo(string m, int st, Nodo s)
{

medicamento = m;
siguiente = s;
stock = st;
}
public Nodo() // para crear la cabeza
{
// el elemento esta vacio
siguiente = null;
}
}
class Lista
{
Nodo cabeza, prev;
public int contador;
public Lista() // contructor de lista
{
prev = cabeza = new Nodo(); // llamamos al constructor del nodo cabez
a
contador = 0;
}
public void Insertar(string dato, int stoc) // del main recogemos un dat
o pa introducira este metodo
{
prev.siguiente = new Nodo(dato,stoc, prev.siguiente); // el dato lo
ponemos en el lugar donde estaba prev funciona para todos los datos q insertarem
os
contador++;
}
public void ColocarEnPosicion(string dato)
{
int encontrado = 0;
prev = cabeza;
while((prev.siguiente !=null) && (encontrado ==0))
{
if (string.Compare(prev.siguiente.medicamento, dato) == -1)
{
prev = prev.siguiente;
}
else
{
encontrado = 1;
}
}
}
public void venta(string v,int c)
{
int encontrado = 0;
prev = cabeza;
do
{

if (string.Compare(prev.siguiente.medicamento,v)==0)
{
if (prev.siguiente.stock != 0)
{
prev.siguiente.stock = prev.siguiente.stock - c;
encontrado = 1;
}
else
{
Console.Write("transaccion restingida ");
encontrado = 1;
}
}
prev = prev.siguiente;
} while (encontrado == 0);
}
public void Mostrar_mayor(int ss)
{
prev = cabeza;

for (int i = 1; (i <= contador) && (prev != null); i++) // para
imprimir los elementos q estan en la lista
{
if (prev.siguiente.stock >= ss)
{
Console.Write(prev.siguiente.medicamento + prev.siguient
e.stock + " ");

Console.Write("");
}
prev = prev.siguiente; // esto hacemos para q prev avance al
campo siguiente
}
}
public void Mostrar_menor(int mm)
{
prev = cabeza;
for (int i = 1; (i <= contador) && (prev != null); i++) // para impr
imir los elementos q estan en la lista
{
if (prev.siguiente.stock <= mm)
{
Console.Write(prev.siguiente.medicamento + prev.siguiente.st
ock + " ");
Console.Write("");
}
prev = prev.siguiente; // esto hacemos para q prev avance al cam
po siguiente
}
}
public void Mostrar()
{
prev = cabeza.siguiente;
for (int i = 1; (i <= contador) && (prev != null); i++) // para impr
imir los elementos q estan en la lista
{
Console.Write(prev.medicamento + prev.stock + " ");
prev = prev.siguiente; // esto hacemos para q prev avance al cam
po siguiente
Console.Write("");
}

}
}
class Program
{
static void Main(string[] args)
{
int opcion;
Lista L1 = new Lista(); // estamos creando la lista pero solo con el
primer nodo q contiene la cabeza y prev apunta a un espacio null
//L1.Insertar("alcohol", 3); //insertando datos definidos
//L1.Insertar("aspirina", 1);
//L1.Insertar("talco", 7);
do
{
Console.WriteLine("");
Console.WriteLine("1.- registrar");
Console.WriteLine("2.- mostrar todos los medicamentos");
Console.WriteLine("3.- vender");
Console.WriteLine("4.- mostrar_mayor o menor ");
Console.WriteLine("5.- Salir");
Console.Write("Ingrese opcion: ");
opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:

Console.WriteLine("Ingrese el medicamento a registrar");
string dato =Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la cantidad");
int stock =Convert.ToInt16(Console.ReadLine());
L1.ColocarEnPosicion(dato);
L1.Insertar(dato, stock);
Console.WriteLine("");


break;

case 2:
Console.WriteLine("**********Lista de MEDICAMENTOS**
*******");
L1.Mostrar();
Console.WriteLine("");

break;
case 3:
Console.WriteLine("**********VENTA*********");
Console.WriteLine("Ingrese el medicamento a COMPRAR");
string venta =Convert.ToString(Console.ReadLine());
Console.WriteLine("Ingrese la cantidad ");
int c =Convert.ToInt16 (Console.ReadLine());
L1.venta(venta, c);


break;
case 4:
Console.WriteLine("*******************");
Console.WriteLine("mayores o menores ?? x o y ");
char i =Convert.ToChar(Console.ReadLine());
if (i == 'x')
{
Console.WriteLine("Ingrese el stock ");

int ss = Convert.ToInt16(Console.ReadLine());
L1.Mostrar_mayor(ss);
}
if (i == 'y')
{
Console.WriteLine("Ingrese el stock ");
int mm = Convert.ToInt16(Console.ReadLine());
L1.Mostrar_menor(mm);
}
//Console.WriteLine("");
break;
}
} while (opcion != 5);
Console.WriteLine("Saliendo.....");
Console.ReadKey();
}
}
}

Potrebbero piacerti anche