Crea un programa que solicite al usuario ingresar una lista de números y utiliza un HashSet para eliminar los duplicados antes de mostrar la lista.
using System;
using System.Collections.Generic;
namespace ejercicio1
{
class Program
{
static void Main(string[] args)
{
List<int> lista = new List<int>();
int numero = 0;
for(int i = 0; i < 10; i++)
{
do
{
Console.WriteLine($"Introduce 10 numeros con valores repetidos nº{i+1}");
numero = int.Parse(Console.ReadLine());
if(numero>0 && numero < 6)
{
lista.Add(numero);
}
} while (numero < 1 || numero > 5);
}
HashSet<int> listaSinDuplicados = new HashSet<int>();
foreach(int n in lista)
{
listaSinDuplicados.Add(n);
}
Console.WriteLine("La lista sin duplicados:");
foreach (int n in listaSinDuplicados)
{
Console.Write($"{n} ");
}
}
}
}
Desarrolla un programa que genere dos conjuntos de números aleatorios. Luego, realiza la unión, intersección y diferencia simétrica de ambos conjuntos utilizando HashSet.
using System;
using System.Collections.Generic;
using System.Linq;
namespace ejercicio2
{
class Program
{
static void Main(string[] args)
{
HashSet<int> lista1 = new HashSet<int>();
HashSet<int> lista2 = new HashSet<int>();
Random r = new Random();
for(int i = 0; i < 10; i++)
{
lista1.Add(r.Next(1, 11));
lista2.Add(r.Next(1, 11));
}
Console.WriteLine("Contenido lista1 ");
foreach(int l in lista1)
{
Console.Write($"{l} " );
}
Console.WriteLine("\nContenido lista2");
foreach (int l in lista2)
{
Console.Write($"{l} ");
}
HashSet<int> union = new HashSet<int>(lista1);
union.UnionWith(lista2);
Console.WriteLine("\nContenido lista1 despues de la union");
foreach (int l in union)
{
Console.Write($"{l} ");
}
HashSet<int> interseccion = new HashSet<int>(lista1);
interseccion.IntersectWith(lista2);
Console.WriteLine("\nContenido lista1 despues de la interseccion");
foreach (int l in interseccion)
{
Console.Write($"{l} ");
}
HashSet<int> simetrica = new HashSet<int>(lista1);
simetrica.SymmetricExceptWith(lista2);
Console.WriteLine("\nContenido lista1 despues de la diferencia simetrica");
foreach (int l in simetrica)
{
Console.Write($"{l} ");
}
}
}
}
Desarrolla un programa que simule una cola de espera en un consultorio médico. Utiliza una Queue
using System;
using System.Collections;
namespace ejercicio3
{
class Program
{
static void Main(string[] args)
{
Queue cola = new Queue();
int opcion = 0;
string paciente;
do
{
Console.WriteLine("Sala de Espera");
Console.WriteLine("(1).Ingresar paciente");
Console.WriteLine("(2).Dar alta");
Console.WriteLine("(3).Consultar lista espera");
Console.WriteLine("(4).Salir");
Console.WriteLine("opcion");
opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
Console.WriteLine("Nombre del paciente");
paciente = Console.ReadLine();
cola.Enqueue(paciente);
Console.WriteLine($"Paciente en la lista de espera tienes {cola.Count-1} pacientes delante\n");
break;
case 2:
if (cola.Count != 0)
{
string atendido = cola.Peek().ToString();
cola.Dequeue();
Console.WriteLine($"Paciente {atendido} atendido quedan {cola.Count} pacientes en lista de espera\n");
}
else
{
Console.WriteLine("No hay lista de espera");
}
break;
case 3:
if (cola.Count != 0)
{
Console.WriteLine("\nLista de espera");
int i = 1;
foreach (string c in cola)
{
Console.WriteLine(i + "." + c);
i++;
}
}
else
{
Console.WriteLine("No hay lista de espera");
}
break;
case 4:
Console.WriteLine("Ambulatorio cerrando");
break;
default:
Console.WriteLine("No existe esa opcion");
break;
}
} while (opcion!=4);
}
}
}
Crea un programa que gestione un sistema de procesamiento de tareas. Utiliza una Queue
using System;
using System.Collections;
namespace ejercicio4
{
class Program
{
static void Main(string[] args)
{
Queue colaImpresion = new Queue();
int opcion =0;
do
{
Console.WriteLine("Cola de impresion");
Console.WriteLine("1.Mandar a imprimir");
Console.WriteLine("2.Imprimir");
Console.WriteLine("4.Ver cola de impresion");
Console.WriteLine("4.Primer trabajo en salir");
Console.WriteLine("5.Salir");
opcion = int.Parse(Console.ReadLine());
switch (opcion)
{
case 1:
string trabajo = "";
Console.WriteLine("\n¿que quiere imprimir?");
trabajo = Console.ReadLine();
colaImpresion.Enqueue(trabajo);
break;
case 2:
if (colaImpresion.Count > 0)
{
colaImpresion.Dequeue();
Console.WriteLine("\nTrabajo impreso");
if (colaImpresion.Count == 0)
{
Console.WriteLine("\nEra el ultimo trabajo, cola vacia");
}
}
else
{
Console.WriteLine("\nLa cola esta vacia");
}
break;
case 3:
if (colaImpresion.Count != 0)
{
Console.WriteLine("\nCola de impresion");
int i = 1;
foreach(string c in colaImpresion)
{
Console.WriteLine($"Trabajo{i} --> {c}");
i = i + 1;
}
}
else
{
Console.WriteLine("\nLa cola esta vacia");
}
break;
case 4:
if (colaImpresion.Count != 0)
{
Console.WriteLine($"\nProximo trabajo en cola {colaImpresion.Peek().ToString()}");
}
else
{
Console.WriteLine("\nLa cola esta vacia");
}
break;
case 5:
break;
default:
break;
}
} while (opcion != 5);
}
}
}
Escribe un programa que verifique si una expresión matemática proporcionada por el usuario tiene paréntesis balanceados.
Utiliza un Stack
using System;
using System.Collections;
using System.Collections.Generic;
namespace ejercicio5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Ingrese una expresión matemática:");
string expresion = Console.ReadLine();
if (VerificarBalanceParentesis(expresion))
{
Console.WriteLine("Paréntesis balanceados.");
}
else
{
Console.WriteLine("Paréntesis no balanceados.");
}
}
static bool VerificarBalanceParentesis(string expresion)
{
Stack<char> stackParentesis = new Stack<char>();
foreach (char caracter in expresion)
{
if (caracter == '(' || caracter == '[' || caracter == '{')
{
stackParentesis.Push(caracter);
}
else if (caracter == ')' || caracter == ']' || caracter == '}')
{
if (stackParentesis.Count == 0)
{
return false;
}
char ultimoParentesis = stackParentesis.Pop();
if (caracter == ')' && ultimoParentesis != '(' ||
caracter == ']' && ultimoParentesis != '[' ||
caracter == '}' && ultimoParentesis != '{')
{
return false;
}
}
}
return stackParentesis.Count == 0;
}
}
}