En este artículo, exploraremos las soluciones para los ejercicios 1 y 2 de la evaluación presentada. Ambos ejercicios demuestran habilidades clave en C#, desde manipulación de datos hasta extensiones útiles. Acompáñame en este recorrido técnico.
Ejercicio 1: Muestra los números impares
Descripción del problema:
Se debe crear un método llamado NúmerosImpares
que tome como parámetro un array de cadenas (string[]
). Cada cadena contiene una serie de números enteros separados por espacios. El método debe devolver un nuevo array donde cada cadena contiene solo los números ubicados en las posiciones impares (índices 0, 2, 4, etc.) del array original.
Ejemplo de entrada y salida:
Entrada:
string[] arrayInicial = { "234 64 32", "23" };
Salida esperada:
string[] arrayFinal = { "234 32", "23" };
Solución en C#:
using System;
using System.Linq;
class Program
{
static void Main(string[] args)
{
string[] arrayInicial = { "234 64 32", "23" };
string[] arrayFinal = NumerosImpares(arrayInicial);
Console.WriteLine("Array final:");
foreach (var cadena in arrayFinal)
{
Console.WriteLine(cadena);
}
}
static string[] NumerosImpares(string[] arrayInicial)
{
return arrayInicial.Select(cadena =>
{
string[] numeros = cadena.Split(' ');
return string.Join(" ", numeros.Where((num, index) => index % 2 == 0));
}).ToArray();
}
}
Explicación del código:
- División de cadenas: Cada cadena se divide en números usando
Split(' ')
. - Filtrado por índices impares: Con
Where
, seleccionamos únicamente los números en índices pares. - Unión de resultados: Los números filtrados se combinan de nuevo en una cadena con
string.Join
.
Este enfoque usa LINQ, lo que garantiza un código conciso y fácil de entender.
Ejercicio 2: Crear una extensión para el trimestre
Descripción del problema:
Se debe crear una extensión en C# que reciba una fecha y devuelva el trimestre correspondiente (un valor int
del 1 al 4).
Ejemplo de entrada y salida:
Entrada:
DateTime fecha = new DateTime(2024, 5, 15);
Salida esperada:
int trimestre = 2;
Solución en C#:
using System;
public static class ExtensionesFecha
{
public static int ObtenerTrimestre(this DateTime fecha)
{
return (fecha.Month - 1) / 3 + 1;
}
}
class Program
{
static void Main(string[] args)
{
DateTime fecha = new DateTime(2024, 5, 15);
int trimestre = fecha.ObtenerTrimestre();
Console.WriteLine($"La fecha {fecha.ToShortDateString()} pertenece al trimestre {trimestre}.");
}
}
Explicación del código:
- Creación de la extensión: El método
ObtenerTrimestre
se añade a la claseDateTime
usando la palabra clavethis
. - Cálculo del trimestre: Se utiliza la fórmula
(fecha.Month - 1) / 3 + 1
para determinar a qué trimestre pertenece el mes. - Llamada simple: Una vez creada, la extensión se usa como cualquier otro método de
DateTime
.
Conclusión:
Ambos ejercicios destacan la importancia de comprender conceptos fundamentales en C#, como la manipulación de cadenas, el uso de LINQ y la implementación de extensiones. Estas soluciones son versátiles y muestran cómo abordar problemas comunes de manera eficiente. Implementar estas técnicas no solo mejora nuestras habilidades de programación, sino que también fomenta un código limpio y reutilizable.
¿Listo para aplicar estas soluciones en tus proyectos? ¡Manos a la obra!