Hola,
en realidad es un simple duda. Pero creo importante mostrarlo todo.
Queria desarrollar un programa para la simulación de un cajero automático.
Se cuenta con la siguiente información:
- Llegan clientes a la puerta del cajero cada 2 ó 3 minutos.
- Cada cliente tarda entre 2 y 4 minutos para ser atendido.
Queria que el programa obtenga las siguientes informaciónes:
1 - Cantidad de clientes que se atienden en 10 horas.
2 - Cantidad de clientes que hay en cola después de 10 horas.
3 - Hora de llegada del primer cliente que no es atendido luego de 10 horas (es decir la persona que está primera en la cola cuando se cumplen 10 horas)
Para eso hice en Form1.cs [Diseno] lo siguiente:
![[SOLUCIONADO] C# Estructuras dinámicas: Listas tipo Cola-Problemas de aplicación](http://i.imgur.com/DOTnRPg.png)
Y en Form1.cs puse lo siguiente:
using ListaTipoCola2;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
Random ale = new Random();
int estado = 0;
int llegada = 2 + ale.Next(0, 2);
int salida = -1;
int cantAtendidas = 0;
Cola cola = new Cola();
for (int minuto = 0; minuto < 600; minuto++)
{
if (llegada == minuto)
{
if (estado == 0)
{
estado = 1;
salida = minuto + 2 + ale.Next(0, 3);
}
else
{
cola.Insertar(minuto);
}
llegada = minuto + 2 + ale.Next(0, 2);
}
if (salida == minuto)
{
estado = 0;
cantAtendidas++;
if (!cola.Vacia())
{
cola.Extraer();
estado = 1;
salida = minuto + 2 + ale.Next(0, 3);
}
}
}
label1.Text = "Atendidos: " + cantAtendidas.ToString();
label2.Text = "En cola: " + cola.Cantidad().ToString();
label3.Text = "Minuto llegada: " + cola.Extraer().ToString();
}
}
}
Y en Cola.cs lo siguiente:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ListaTipoCola2
{
class Cola
{
class Nodo
{
public int info;
public Nodo sig;
}
private Nodo raiz, fondo;
public Cola()
{
raiz = null;
fondo = null;
}
public bool Vacia()
{
if (raiz == null)
return true;
else
return false;
}
public void Insertar(int info)
{
Nodo nuevo;
nuevo = new Nodo();
nuevo.info = info;
nuevo.sig = null;
if (Vacia())
{
raiz = nuevo;
fondo = nuevo;
}
else
{
fondo.sig = nuevo;
fondo = nuevo;
}
}
public int Extraer()
{
if (!Vacia())
{
int informacion = raiz.info;
if (raiz == fondo)
{
raiz = null;
fondo = null;
}
else
{
raiz = raiz.sig;
}
return informacion;
}
else
return int.MaxValue;
}
public int Cantidad()
{
int cant = 0;
Nodo reco = raiz;
while (reco != null)
{
cant++;
reco = reco.sig;
}
return cant;
}
}
}
Puesto que copie Form1.cs tengo una duda aqui:
Random ale=new Random();
int estado = 0;
int llegada = 2 + ale.Next(0,2);
int salida = -1;
int cantAtendidas = 0;
Cola cola = new Cola();
Que significa esta linea?
Random ale=new Random();
Hace mucho aprendi lo que es Random pero me olvide. Y en internet no lo explican tan bien como lo hace grep. Razon por la que no lo entiendo.
Gracias y saludos