Mostrando entradas con la etiqueta C#. Mostrar todas las entradas
Mostrando entradas con la etiqueta C#. Mostrar todas las entradas

Ejercicios Resueltos de Constructores en C#

Ejercicios Resueltos de Constructores en C# 

Ejemplo 1

Realizar un programa que ingrese los sueldos de 5 operarios en un vector. Realizar la creación y carga del vector en el constructor.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PruebaConstructor
{
    class Operarios
    {
        private int[] sueldos;
        public Operarios()
        {
            sueldos = new int[5];
            for (int f = 0; f < sueldos.Length; f++)
            {
                Console.Write("Ingrese el sueldo "+(f+1)+": ");
                string linea = Console.ReadLine();
                sueldos[f] = int.Parse(linea);
            }
        }
        public void Imprimir()
        {
            Console.WriteLine("Los Sueldos Ingresados.");
            for (int f = 0; f < sueldos.Length; f++)
            {
                Console.WriteLine(sueldos[f]);
            }
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            Operarios op = new Operarios();
            op.Imprimir();
        }
    }
}
Al ejecutar el código muestra el siguiente resultado


Explicación: 
Como la clase se llama Operarios el constructor tiene el mismo nombre, no disponemos la palabra clave void ya que el constructor no puede retornar datos.
La ventaja de plantear un constructor en lugar de definir un método con cualquier nombre es que se llamará en forma automática cuando se crea un objeto de esta clase:
            Operarios op = new Operarios();

Cuando se crea el objeto op se llama al método constructor.
Finalmente llamamos al método imprimir:
            op.Imprimir();

Ejemplo 2

Plantear una clase llamada Alumno y definir como atributos su nombre y su edad. En el constructor realizar el ingreso de datos. Definir otros dos métodos para imprimir los datos ingresados y un mensaje si es mayor o no de edad (edad >=18)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PruebaConstructor
{
    class Alumno
    {
        private string nombre;
        private int edad;
        public Alumno()
        {
            Console.Write("Ingrese nombre:");
            nombre = Console.ReadLine();
            Console.Write("Ingrese edad:");
            string linea = Console.ReadLine();
            edad = int.Parse(linea);
        }
        public void Imprimir()
        {
            Console.WriteLine("Nombre:" + nombre);
            Console.WriteLine("Edad:" + edad);
        }
        public void EsMayorEdad()
        {
            if (edad >= 18)
            {
                Console.Write(nombre + " es mayor de edad.");
            }
            else
            {
                Console.Write(nombre + " no es mayor de edad.");
            }
        }
        static void Main(string[] args)
        {
            Alumno alumno1 = new Alumno();
            alumno1.Imprimir();
            alumno1.EsMayorEdad();
            Console.ReadKey();
        }
    }
}
Al ejecutar el código muestra el siguiente resultado

Explicación: 
En la main el constructor se llama en forma automática cuando creamos un objeto de la clase Alumno:
        static void Main(string[] args)
        {
            Alumno alumno1 = new Alumno();
Los otros dos métodos deben llamarse por su nombre y en el orden que necesitemos:
            alumno1.Imprimir();
            alumno1.EsMayorEdad();

Constructores en C#

Constructores en C# 

Cada vez que se crea una clase o estructura, se llama a su constructor. Una clase o estructura puede tener varios constructores que toman argumentos diferentes. Los constructores permiten al programador establecer valores predeterminados, limitar la creación de instancias y escribir código flexible y fácil de leer.
En C# podemos definir un método que se ejecute inicialmente y en forma automática. Este método se lo llama constructor.
El constructor tiene las siguientes características:
  • Tiene el mismo nombre de la clase.
  • Es el primer método que se ejecuta.
  • Se ejecuta en forma automática.
  • No puede retornar datos.
  • Se ejecuta una única vez.
  • Un constructor tiene por objetivo inicializar atributos.

Sintaxis de un Constructor en C#

Modificador NombredelaClase (Parámetros)
{
   Instrucciones
}
Veamos un Ejemplo de un constructor en C#
using System;
namespace constructores
{
    class EjConstructor
    {
        int a;
        int b;
        //declaramos el constructor
        public EjConstructor(int x, int y)
        {
            a = x;
            b = y;
        }
        public int Suma()
        {
            return a + b;
        }
        public int resta()
        {
            return a - b;
        }
        class Principal
        {
            static void Main(string[] args)
            {
                //creamos objeto de la clase y le pasamos los parametros al constructor
                EjConstructor obj = new EjConstructor(10, 20);
                Console.WriteLine("La suma es: "+obj.Suma());
                Console.WriteLine("La resta es: "+obj.resta());
                Console.ReadKey();
            }
        }
    }
}
Al ejecutar el código muestra el siguiente resultado


El ejemplo es sencillo para que pueda comprenderse creamos una clase EjConstructor con 2 variables enteras, luego definimos el constructor con 2 parámetros observen que tiene el mismo nombre de la clase eso tiene que ser así obligatoriamente, también tenemos un método Suma y un método resta que lo único que hace es realizar una suma y la resta sucesivamente.Luego en la clase Principal al momento de crear el objeto de la clase le pasamos los parámetros de una sola vez al constructor, y después solo imprimimos el resultado de la suma y la resta del método Suma y resta.

Método de Ordenamiento Burbuja en C#

Método de Ordenamiento Burbuja en C# 

Este método consiste en ir comparando cada par de elementos del array e ir moviendo el mayor elemento hasta la última posición, comenzando desde la posición cero. Una vez acomodado el mayor elemento, prosigue a encontrar y acomodar el segundo más grande comparando de nuevo los elementos desde el inicio de la lista, y así sigue hasta ordenar todos los elementos del arreglo. Al ser necesario revisar varias veces toda la lista hasta que no se necesiten más intercambios, hace que el ordenamiento por burbuja sea uno de los algoritmos más ineficientes que existen. Incluso entre los algoritmos de ordenamiento del mismo orden, otros como el “Ordenamiento por inserción” son considerados más eficientes. Y lo más curioso es que este procedimiento es uno de los más usados para ordenar listas en todos los lenguajes de programación.
Estos serían los pasos a seguir por este algoritmo para ordenar una lista a1, a2, a3, … an
1) Comparar a1 con a2 e intercambiarlos si a1>a2
2) Seguir hasta que se haya comparado an-1 con an
3) Repetir el proceso anterior n-1 veces
Ejemplo:
            25 57 48 37 12 92 86 33
En el primer paso se realizan las siguientes operaciones:
          x[0] con x[1] (25 con 57)  no intercambio.
          x[1] con x[2] (57 con 48)      intercambio.
          x[2] con x[3] (57 con 32)      intercambio.
          x[3] con x[4] (57 con 12)      intercambio.
          x[4] con x[5] (57 con 92)  no intercambio.
          x[5] con x[6] (92 con 86)      intercambio.
          x[6] con x[7] (92 con 33)      intercambio.
Así después del primer paso, el arreglo está en el siguiente orden:
          25 48 37 12 57 86 33 92
Observe que después del primer paso, el elemento mayor (en este caso 92) está en la posición correcta dentro del arreglo. En general x[n-i] estará en su posición correcta después de la iteración i. El método se lama ordenamiento de burbuja porque cada número “burbujea” con lentitud hacia su posición correcta. El conjunto completo de iteraciones es:
         iteración 0 :                     25 57 48 37 12 92 86 33
         iteración 1:                       25 48 37 12 57 86 33 92
         iteración 2:                       25 37 12 48 57 33 86 92
         iteración 3:                       25 12 37 48 33 57 86 92
         iteración 4:                       12 25 37 33 48 57 89 92
         iteración 5:                       12 25 33 37 48 57 89 92

A continuación veamos un ejemplo en Pseudo-Código Para el Método Burbuja 





Ejemplo del Método de Ordenamiento Burbuja en C# 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Burbuja
{
    class Burbuja
    {
        private int[] vector;
        public void Cargar()
        {
            Console.WriteLine("Metodo de Burbuja");
            Console.Write("Cuantos longitud del vector: ");
            string linea;
            linea = Console.ReadLine();
            int cant;
            cant = int.Parse(linea);
            vector = new int[cant];
            for (int f = 0; f < vector.Length; f++)
            {
                Console.Write("Ingrese elemento "+(f+1)+": ");
                linea = Console.ReadLine();
                vector[f] = int.Parse(linea);
            }
        }
        public void MetodoBurbuja()
        {
            int t;
            for (int a = 1; a < vector.Length; a++)
                for (int b = vector.Length - 1; b >= a; b--)
                {
                    if (vector[b - 1] > vector[b])
                    {
                        t = vector[b - 1];
                        vector[b - 1] = vector[b];
                        vector[b] = t;
                    }
                }
        }
        public void Imprimir()
        {
            Console.WriteLine("Vector ordenados en forma ascendente");
            for (int f = 0; f < vector.Length; f++)
            {
                Console.Write(vector[f]+"  ");
            }
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            Burbuja pv = new Burbuja();
            pv.Cargar();
            pv.MetodoBurbuja();
            pv.Imprimir();
        }
    }
}


Al ejecutar el código muestra el siguiente resultado



Ejercicios con Vectores en C#

Ejercicios con Vectores en C# 

Veamos algunos ejercicios con vectores en c#, que nos ayudaran a entender mejor el tema acerca de los vectores en c#.

Empezaremos con la búsqueda del mayor y menor elemento de un vector, lo mismo que su posición.

En la siguiente gráfica se muestra un ejemplo de como un vector almacena datos:


Ejemplo 1

Realizar un programa que permita ingresar los nombres de 5 operarios y sus sueldos respectivos. Mostrar el sueldo mayor y el nombre del operario.


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PruebaVector
{
    class PruebaVector
    {
        private string[] nombres; //Declaramos un vector de tipo estring para los nombres
        private float[] sueldos; //Declaramos un vector de tipo float para los sueldos
        public void Cargar()
        {
            nombres = new string[5];
            sueldos = new float[5];
            for (int f = 0; f< nombres.Length; f++)
            {
                Console.Write("Ingrese el nombre del empleado "+(f+1)+": ");
                nombres[f] = Console.ReadLine();
                Console.Write("Ingrese el sueldo "+(f+1)+": ");
                string linea;
                linea = Console.ReadLine();
                sueldos[f] = float.Parse(linea);
            }
        }
        public void MayorSueldo()
        {
            float mayor;
            int pos;
            mayor = sueldos[0];
            pos = 0;
            for (int f = 1; f< nombres.Length; f++)
            {
                if (sueldos[f] > mayor)
                {
                    mayor = sueldos[f];
                    pos = f;
                }
            }
            Console.WriteLine("El empleado con sueldo mayor es :" + nombres[pos]);
            Console.WriteLine("Tiene un sueldo de: " + mayor);
            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            PruebaVector pv = new PruebaVector();
            pv.Cargar();
            pv.MayorSueldo();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


Ejemplo 2

Realizar un programa que ingrese un vector de n elementos e imprimir el menor y un mensaje si se repite dentro del vector dicho numero. 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace PruebaVector
{
    class PruebaVector
    {
        private int[] vec;//Declaramos un vector
        private int menor;
        public void Cargar()
        {
            Console.Write("Ingrese la longitud del vector:");
            string linea;
            linea = Console.ReadLine();
            int n = int.Parse(linea);
            vec = new int[n];
            for (int f = 0; f < vec.Length; f++)
            {
                Console.Write("Ingrese componente ["+(f+1)+"]: ");
                linea = Console.ReadLine();
                vec[f] = int.Parse(linea);
            }
        }
        public void MenorElemento()
        {
            menor = vec[0];
            for (int f = 1; f< vec.Length; f++)
            {
                if (vec[f] < menor)
                {
                    menor = vec[f];
                }
            }
            Console.WriteLine("El elemento menor es: " + menor);
        }
        public void RepiteMenor()
        {
            int cant = 0;
            for (int f = 0; f< vec.Length; f++)
            {
                if (vec[f] == menor)
                {
                    cant++;
                }
            }
            if (cant > 1)
            {
                Console.WriteLine("Se repite el numero.");
            }
            else
            {
                Console.WriteLine("No se repite el menor.");
            }
            Console.ReadLine();
        }
        static void Main(string[] args)
        {
            PruebaVector pv = new PruebaVector();
            pv.Cargar();
            pv.MenorElemento();
            pv.RepiteMenor();
        }
    }
}
Al ejecutar el código muestra el siguiente resultado

Ejemplo de Do While en C#

Ejemplo de Do While en C#

En un banco se procesan datos de las cuentas corrientes de sus clientes. De cada cuenta corriente se conoce: número de cuenta y saldo actual. El ingreso de datos debe finalizar al ingresar un valor negativo en el número de cuenta.
Se pide realizar un programa que lea los datos de las cuentas corrientes e informe:
a)De cada cuenta: número de cuenta y estado de la cuenta según su saldo, sabiendo que:
Estado de la cuenta 'Acreedor' si el saldo es >0.
        'Deudor' si el saldo es <0.
       'Nulo' si el saldo es =0.
b) La suma total de los saldos acreedores.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace EstructuraRepetitivaDoWhile
{
    class Program
    {
        static void Main(string[] args)
        {
            int cuenta;
            float saldo, suma;
            string linea;
            suma = 0;
            do
            {
                Console.Write("Ingrese número de cuenta:");
                linea = Console.ReadLine();
                cuenta = int.Parse(linea);
                if (cuenta >= 0)
                {
                    Console.Write("Ingrese saldo:");
                    linea = Console.ReadLine();
                    saldo = float.Parse(linea);
                    if (saldo > 0)
                    {
                        Console.WriteLine("Saldo Acreedor.");
                        suma = suma + saldo;
                    }
                    else
                    {
                        if (saldo < 0)
                        {
                            Console.WriteLine("Saldo Deudor.");
                        }
                        else
                        {
                            Console.WriteLine("Saldo Nulo.");
                        }
                    }
                }
            } while (cuenta >= 0);
            Console.Write("Total de saldos Acreedores:");
            Console.Write(suma);
            Console.ReadKey();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado