Nombre:
Omar S. Guzmán
Matrícula:
2022-0866
Asignatura:
Estructura de datos
Tema:
Árboles
Docente:
Eduandy Isabel Cruz
Fecha:
03/07/2024
Institución:
Instituto Tecnológico de las Américas (ITLA)
Título de la Tarea:
Construye un árbol de categorías en C# para organizar productos en un catálogo de
compras. Permite agregar nuevos productos a las categorías y buscar productos de manera
eficiente.
C#:
using System;
using [Link];
// Clase para representar un producto
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public Product(int id, string name, double price)
{
Id = id;
Name = name;
Price = price;
}
public override string ToString()
{
return $"Product(Id: {Id}, Name: {Name}, Price: {Price})";
}
}
// Clase para representar una categoría
public class Category
{
public string Name { get; set; }
public List<Product> Products { get; set; }
public List<Category> Subcategories { get; set; }
public Category(string name)
{
Name = name;
Products = new List<Product>();
Subcategories = new List<Category>();
}
// Método para agregar un producto a la categoría
public void AddProduct(Product product)
{
[Link](product);
}
// Método para agregar una subcategoría
public void AddSubcategory(Category category)
{
[Link](category);
}
// Método para buscar un producto por su ID
public Product FindProduct(int id)
{
foreach (var product in Products)
{
if ([Link] == id)
return product;
}
foreach (var subcategory in Subcategories)
{
var product = [Link](id);
if (product != null)
return product;
}
return null;
}
public override string ToString()
{
return Name;
}
}
// Clase para el catálogo
public class Catalog
{
public List<Category> Categories { get; set; }
public Catalog()
{
Categories = new List<Category>();
}
// Método para agregar una categoría al catálogo
public void AddCategory(Category category)
{
[Link](category);
}
// Método para buscar un producto en el catálogo
public Product FindProduct(int id)
{
foreach (var category in Categories)
{
var product = [Link](id);
if (product != null)
return product;
}
return null;
}
}
// Ejemplo de uso
public class Program
{
public static void Main()
{
// Crear algunos productos
var product1 = new Product(1, "Laptop", 1000.0);
var product2 = new Product(2, "Smartphone", 500.0);
var product3 = new Product(3, "Tablet", 300.0);
var product4 = new Product(4, "Monitor", 200.0);
// Crear algunas categorías y subcategorías
var electronics = new Category("Electronics");
var computers = new Category("Computers");
var mobiles = new Category("Mobiles");
// Agregar productos a las categorías
[Link](product4);
[Link](product1);
[Link](product2);
[Link](product3);
// Agregar subcategorías a las categorías
[Link](computers);
[Link](mobiles);
// Crear el catálogo y agregar la categoría principal
var catalog = new Catalog();
[Link](electronics);
// Buscar un producto en el catálogo
var foundProduct = [Link](1);
if (foundProduct != null)
{
[Link]($"Producto encontrado: {foundProduct}");
}
else
{
[Link]("Producto no encontrado");
}
}
}