Paréntesis - Ejercicio De Programacion C# Sharp

En este ejercicio, se debe implementar una función que verifique si una secuencia de paréntesis abiertos y cerrados está balanceada. En otras palabras, la función debe comprobar si cada paréntesis de apertura tiene un par correspondiente de cierre y si están correctamente anidados.

Un paréntesis está correctamente anidado cuando cada par de apertura '(' tiene un par de cierre ')', y las parejas se cierran en el orden adecuado. En este ejercicio, se recibirá una cadena de texto que contiene paréntesis, y la función deberá verificar si la secuencia es válida o no.

Por ejemplo:

- La secuencia "(()()(()))" es válida, porque todos los paréntesis están correctamente balanceados y anidados.

- La secuencia "(((()" es incorrecta, ya que falta el paréntesis de cierre.

Este ejercicio es excelente para practicar el uso de pilas (stacks) o contadores, que son estructuras de datos útiles para problemas de validación y balanceo de símbolos en cadenas de texto.

 Categoría

Gestión Dinámica de Memoria

 Ejercicio

Paréntesis

 Objectivo

Implementar una función para comprobar si una secuencia de paréntesis abierto y cerrado está equilibrada, es decir, si cada paréntesis abierto corresponde a uno cerrado y además están bien anidados.

Por ejemplo:

(()()(())) OK
(((() ERROR

 Ejemplo Ejercicio C#

 Copiar Código C#
// Importing necessary namespace for handling collections
using System;  // Basic namespace for console input/output and fundamental operations
using System.Collections.Generic;  // For using the Stack class

class Program
{
    // Function to check if a sequence of parentheses is balanced
    static bool IsBalanced(string parentheses)
    {
        // Create a stack to hold the open parentheses
        Stack stack = new Stack();  // Stack will help to track unmatched open parentheses

        // Iterate through each character in the input string
        foreach (char ch in parentheses)  // For each character in the string
        {
            // If the character is an opening parenthesis, push it onto the stack
            if (ch == '(')  // If the character is an open parenthesis
            {
                stack.Push(ch);  // Add the open parenthesis to the stack
            }
            // If the character is a closing parenthesis, check if there's a matching open parenthesis
            else if (ch == ')')  // If the character is a closing parenthesis
            {
                // If the stack is empty, it means no matching open parenthesis, return false
                if (stack.Count == 0)  // If there are no open parentheses to match with
                {
                    return false;  // It means the parentheses are not balanced
                }
                stack.Pop();  // Remove the top item from the stack (matching the open parenthesis)
            }
        }

        // If the stack is empty, all open parentheses had matching closing parentheses
        return stack.Count == 0;  // If the stack is empty, the parentheses are balanced
    }

    // Main program method to test the IsBalanced function
    static void Main(string[] args)
    {
        // Test the IsBalanced function with valid and invalid examples
        string test1 = "(()()(()))";  // A valid sequence of parentheses
        string test2 = "(((()";  // An invalid sequence of parentheses

        // Display the results of the balance check
        Console.WriteLine($"Is the sequence '{test1}' balanced? {IsBalanced(test1)}");  // Expecting true
        Console.WriteLine($"Is the sequence '{test2}' balanced? {IsBalanced(test2)}");  // Expecting false
    }
}

 Salida

Is the sequence '(()()(()))' balanced? True
Is the sequence '(((()' balanced? False

 Comparte este Ejercicio C# Sharp

 Más Ejercicios de Programacion C# Sharp de Gestión Dinámica de Memoria

¡Explora nuestro conjunto de ejercicios de programación C# Sharp! Estos ejercicios, diseñados específicamente para principiantes, te ayudarán a desarrollar una sólida comprensión de los conceptos básicos de C#. Desde variables y tipos de datos hasta estructuras de control y funciones simples, cada ejercicio está diseñado para desafiarte de manera gradual a medida que adquieres confianza en la codificación en C#.

  •  Mezclar y ordenar archivos

    En este ejercicio, se debe crear un programa que lea el contenido de dos archivos diferentes, los combine y los ordene alfabéticamente. El programa debe ser capaz de tomar e...

  •  ArrayList de puntos

    En este ejercicio, debes crear una estructura llamada "Point3D" para representar un punto en un espacio tridimensional con las coordenadas X, Y y Z. La estructura debe permi...

  •  Buscar en archivo

    En este ejercicio, debes crear un programa que lea el contenido de un archivo de texto, guarde ese contenido en un ArrayList y permita al usuario ingresar oraciones p...

  •  Implementación de una cola usando una matriz

    En este ejercicio, deberás implementar una cola (queue) en C#. Una cola es una estructura de datos que sigue el principio FIFO (First In, First Out), es decir,...

  •  Implementar una pila usando una matriz

    En este ejercicio, deberás implementar una pila (stack) en C#. Una pila es una estructura de datos que sigue el principio LIFO (Last In, First Out), es decir, ...

  •  Colecciones de colas

    En este ejercicio, deberás crear una cola de cadenas utilizando la clase Queue que ya existe en la plataforma DotNet. La clase Queue es una implementación de l...