COMPARTE ESTE ARTÍCULO

¡Pon a prueba tus conocimientos con estas cinco preguntas de dificultad media! Cada ejercicio incluye su enunciado y, justo después, la solución comentada en C#.


1. Cálculo de factorial (recursivo)

Enunciado:
Implementa una función recursiva Factorial(int n) que calcule el factorial de un número entero no negativo. El programa debe:

  1. Pedir al usuario un número entero n (≥ 0).
  2. Llamar a Factorial(n) y mostrar el resultado.

Solución:

using System;

class FactorialRecursivo
{
    static void Main()
    {
        Console.Write("Introduce un número entero no negativo: ");
        if (int.TryParse(Console.ReadLine(), out int n) && n >= 0)
        {
            Console.WriteLine($"¡Factorial de {n}! = {Factorial(n)}");
        }
        else
        {
            Console.WriteLine("Entrada no válida.");
        }
    }

    static long Factorial(int n)
    {
        // Caso base
        if (n <= 1) return 1;
        // Llamada recursiva
        return n * Factorial(n - 1);
    }
}

2. Comprobación de palíndromo

Enunciado:
Escribe un programa que:

  1. Lea una cadena de texto del usuario.
  2. Elimine espacios y pase todo a minúsculas.
  3. Compruebe si la cadena es un palíndromo (se lee igual al derecho y al revés).
  4. Muestre “Es palíndromo” o “No es palíndromo”.

Solución:

using System;
using System.Linq;

class Palindromo
{
    static void Main()
    {
        Console.Write("Introduce una frase: ");
        string input = Console.ReadLine() ?? "";
        // Normalizar: quitar espacios y pasar a minúsculas
        string limpia = new string(input
            .Where(c => !char.IsWhiteSpace(c))
            .Select(c => char.ToLower(c))
            .ToArray());

        // Comparar con la inversa
        string inversa = new string(limpia.Reverse().ToArray());
        if (limpia == inversa)
            Console.WriteLine("Es palíndromo.");
        else
            Console.WriteLine("No es palíndromo.");
    }
}

3. Suma de filas y columnas en matriz 3×3

Enunciado:
Crea una matriz de 3×3 con valores enteros solicitados al usuario. A continuación, calcula y muestra:

  • La suma de cada fila.
  • La suma de cada columna.

Solución:

using System;

class MatrizSumas
{
    static void Main()
    {
        int[,] matriz = new int[3, 3];
        // Lectura de la matriz
        for (int i = 0; i < 3; i++)
        {
            for (int j = 0; j < 3; j++)
            {
                Console.Write($"Elemento [{i},{j}]: ");
                while (!int.TryParse(Console.ReadLine(), out matriz[i, j]))
                    Console.Write("Entrada no válida. Introduce un entero: ");
            }
        }

        // Suma de filas
        for (int i = 0; i < 3; i++)
        {
            int sumaFila = 0;
            for (int j = 0; j < 3; j++)
                sumaFila += matriz[i, j];
            Console.WriteLine($"Suma fila {i + 1}: {sumaFila}");
        }

        // Suma de columnas
        for (int j = 0; j < 3; j++)
        {
            int sumaCol = 0;
            for (int i = 0; i < 3; i++)
                sumaCol += matriz[i, j];
            Console.WriteLine($"Suma columna {j + 1}: {sumaCol}");
        }
    }
}

4. Filtrar números primos en un rango

Enunciado:
Pide al usuario dos enteros a y b (con a ≤ b). Muestra en pantalla todos los números primos comprendidos entre a y b, inclusive.

Solución:

using System;

class PrimosEnRango
{
    static void Main()
    {
        Console.Write("Introduce el límite inferior (a): ");
        int a = int.Parse(Console.ReadLine() ?? "0");
        Console.Write("Introduce el límite superior (b): ");
        int b = int.Parse(Console.ReadLine() ?? "0");

        Console.WriteLine($"Primos entre {a} y {b}:");
        for (int n = Math.Max(a, 2); n <= b; n++)
        {
            if (EsPrimo(n))
                Console.Write($"{n} ");
        }
    }

    static bool EsPrimo(int num)
    {
        if (num < 2) return false;
        for (int i = 2; i * i <= num; i++)
            if (num % i == 0) return false;
        return true;
    }
}

5. Generar serie de Fibonacci hasta N

Enunciado:
Solicita al usuario un entero N (≥ 1) y genera la serie de Fibonacci (0, 1, 1, 2, 3, 5, …) hasta el enésimo término. Muestra la serie separada por comas.

Solución:

using System;
using System.Collections.Generic;

class FibonacciSerie
{
    static void Main()
    {
        Console.Write("¿Cuántos términos de Fibonacci quieres? ");
        if (int.TryParse(Console.ReadLine(), out int N) && N >= 1)
        {
            List<long> fib = GenerarFibonacci(N);
            Console.WriteLine(string.Join(", ", fib));
        }
        else
        {
            Console.WriteLine("Entrada no válida.");
        }
    }

    static List<long> GenerarFibonacci(int n)
    {
        var lista = new List<long> { 0, 1 };
        for (int i = 2; i < n; i++)
            lista.Add(lista[i - 1] + lista[i - 2]);
        return lista.GetRange(0, n);
    }
}

Contenido restringido

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

Categories:

Tags:

Comments are closed

Estado de acceso
ESTADO DE ACCESO
TRADUCTORES
COMPARTENOS
error: CONTENIDO PROTEGIDO