COMPARTE ESTE ARTÍCULO

Este examen presenta cuatro retos de nivel avanzado-moderado. Cada enunciado incluye la solución completa en C#. Está diseñado para que los alumnos trabajen al menos una hora comprendiendo y adaptando cada ejercicio.


1. MascotaVirtual: Serialización y estado

Enunciado:
A partir de la jerarquía de MascotaVirtual, PerroVirtual y GatoVirtual:

  1. Añade al proyecto un método estático GuardarEstado(string ruta, List<MascotaVirtual> mascotas) que serialice la lista de mascotas a JSON (con sus propiedades: nombre, edad, raza y atributos concretos) y la escriba en el archivo indicado.
  2. Implementa List<MascotaVirtual> CargarEstado(string ruta) que lea el JSON y devuelva la lista de objetos correctamente tipados (PerroVirtual o GatoVirtual).
  3. En Main, crea al menos dos perros y dos gatos, guárdalos en "mascotas.json", luego cárgalos de nuevo e imprime por consola los datos de cada mascota.
using System;
using System.Collections.Generic;
using System.IO;
using System.Text.Json;

// --- Clases de mascota (resumidas) ---
public abstract class MascotaVirtual
{
    public string Nombre { get; }
    ...

2. Estadísticas avanzadas de array

Enunciado:
Tomando como base el array de números del ejercicio original:

  1. Declara y rellena un array con los enteros: 45, 23, 12, 7, 54, 12, 98, 33, 23, 65, 87, 54, 28, 99, 33, 100
  2. Con LINQ, calcula y muestra:
    • Valores únicos (aparecen una sola vez), ordenados ascendentemente.
    • Frecuencia de cada número (Valor → Veces).
    • Mínimo, máximo, promedio y mediana del conjunto.
  3. En Main, imprime cada resultado con claridad.

3. CofreSecreto con acceso asíncrono y logging

Enunciado:
Mejora la clase CofreSecreto original para que:

  1. Implemente un método async Task<bool> IntentarAbrirAsync(int[] codigo) que simule cada verificación con un retraso de 500 ms (Task.Delay).
  2. Mantenga un registro en List<string> Log con entradas como "[timestamp] Intento correcto" o "[timestamp] Intento fallido".
  3. Lance CodigoIncorrectoException tras 3 intentos fallidos acumulados (aunque no sean consecutivos).
  4. En Main, itera solicitando códigos hasta abrir el cofre o agotar los intentos. Al finalizar, muestra todo el log.

4. Extensión con métodos genéricos y delegados

Enunciado:

  1. Crea un método genérico de extensión PrintIf<T>(this IEnumerable<T> seq, Func<T,bool> predicado) que recorra la secuencia y muestre por consola sólo los elementos que cumplan la condición.
  2. En Main, usa PrintIf sobre:
    • La lista de enteros del ejercicio 2 para mostrar sólo los pares.
    • Una lista de cadenas ("uno","dos","tres","cuatro") para mostrar sólo las de longitud ≥ 4.
using System;
using System.Collections.Generic;
using System.Linq;

public static class Extensiones
{
    public static void PrintIf<T>(
        this IEnumerable<T> seq, Func<T,bool> predicado)
    {
        foreach (var item in seq)
            if (predicado(item))
                Console.WriteLine(item);
    }
}

class ProgramaDelegados
{
    static void Main()
    
{
    static void Main()
    {
        int[] numeros = {45,23,12,7,54,12,98,33,23,65,87,54,28,99,33,100};
        Console.WriteLine("Números pares:");
        numeros.PrintIf(n => n % 2 == 0);

        var palabras = new List<string>{"uno","dos","tres","cuatro"};
        Console.WriteLine("\nPalabras de longitud ≥ 4:");
        palabras.PrintIf(s => s.Length >= 4);
    }
}


¿QUÉ TE HA PARECIDO EL ARTÍCULO? Danos tu opinión al final de la página.
Deja tu comentario y ayúdanos a crecer.


¡SÍGUENOS EN TUS REDES FAVORITAS!
AYUDANOS A CRECER Y QUE LLEGUEMOS A TODAS LAS PERSONAS QUE NOS NECESITANA. SÍGUENOS EN TUS REDES.
Entra AQUÍ y elíge donde seguirnos. 

 

 


NUESTRAS ÚLTIMAS PUBLICACIONES

INSTAGRAM

TIKTOK


 …Y PRONTO MUCHAS MÁS

AYUDANOS A CRECER Y A LLEGAR A TODAS LAS PERSONAS QUE NOS NECESITAN.

Contenido restringido

Acceso de usuarios existentes
   
Registro de un nuevo usuario
*Campo necesario

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
Insert math as
Block
Inline
Additional settings
Formula color
Text color
#333333
Type math using LaTeX
Preview
\({}\)
Nothing to preview
Insert
error: CONTENIDO PROTEGIDO