Arreglos en C#

Los arreglos en C# (también conocidos como Arrays) al igual que en C/C++, son indexados iniciando en cero (0). La forma de trabajo es muy similar a la mayoría de lenguajes pero hay lagunas diferencias que notarán.

Como Declarar e Inicializar un Arreglo en C#

Cuando vayamos a declarar un arreglo en debemos colocar los corchetes después de tipo de dato. En C/C++ se estila poner los corchetes después del identificador, eso causa un error de compilación en C#-

Declaración de un Arreglo de tipo Vector en C#

        //Declaración erronea
        int valores[];
        //Declaración valida
        int[] valores;


En C# podemos indicar el tamaño del arreglo luego de la declaración. Esto nos permite decidir que tamaño va a tener el arreglo según lo que necesitemos. 

        int[] valores; //valores sin inicializar
        valores = new int[100];  //100 elementos
        valores = new int[20];  //ahora contiene 20 elementos

Arreglos Multi-dimensionales

En C# también podemos declarar arreglos multidimensionales, aquí unos ejemplos:

//Arreglos unidimensionales o de dimensión simple
        int[] valores1;                       //sin inicializar
        int[] valores2 = new int[50];



        //Arreglos multidimensionales
        int[,] valores1;                    //sin inicializar
        int[,] valores2 = new int[3,7];
        int[,,] valores3 = new int[3,4,2]; //Arreglo de tres dimensiones


        //Arreglo de arreglos
        int[][] matriz;                   //sin inicializar
        //Los arreglos de arreglos se inicializan de manera diferente
        int[][] matriz = new int[3][];
        for (int i = 0; i < matriz.Length; i++)
        {
            matriz[i] = new int[4];
        }

Para entender mejor el tema de arreglos en c# veremos algunos ejemplos de aplicacion 

Ejercicios Resueltos de Arreglos en C# 

Ejemplo 1

Realizar un programa que guardar los sueldos de 5 operarios en un arreglo de tipo vector

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaVector1
{
    class PruebaVector1
    {
        private int[] sueldos; //Declaramos un vector

        public void Cargar()
        {
            sueldos = new int[6]; //Inicializamos el vector en 5
            for (int f = 1; f <= 5; f++)
            {
                Console.Write("Ingrese sueldo del operario "+f+": ");
                String linea;
                linea = Console.ReadLine();
                sueldos[f] = int.Parse(linea); //Asignamos los 5 sueldos al vector
            }
        }
        //Muestra los sueldos de los operarios en el vector sueldos[f]
        public void Imprimir()
        {
            Console.Write("Los 5 sueldos de los aperarios \n");
            for (int f = 1; f <= 5; f++)
            {
                Console.Write("["+sueldos[f]+"] ");
            }
            Console.ReadKey();
        }
        //main principal
        static void Main(string[] args)
        {
            PruebaVector1 pv = new PruebaVector1();
            pv.Cargar();
            pv.Imprimir();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


Para la declaración de un vector le antecedemos al nombre los corchetes abiertos y cerrados:

private int[] sueldos;

Lo definimos como atributo de la clase ya que lo utilizaremos en los dos métodos.
En el método de Cargar lo primero que hacemos es crear el vector (en C# los vectores son objetos por lo que es necesario proceder a su creación mediante el operador new):

sueldos = new int[6];

Ejemplo 2

Una empresa tiene dos turnos (mañana y tarde) en los que trabajan 8 empleados (4 por la mañana y 4 por la tarde)
Desarrollar un programa que permita almacenar los sueldos de los empleados agrupados por turno.
Imprimir los gastos en sueldos de cada turno.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaVector
{
    class PruebaVector3
    {
        private float[] turnoM; //Declaramos un vector para el turno mañana
        private float[] turnoT; //Declaramos un vector para el turno tarde

        public void Cargar()
        {
            string linea;
            turnoM = new float[4]; //Asignamos al vector una de longitud 4
            turnoT = new float[4]; //Asignamos al vector una de longitud 4
            Console.WriteLine("Sueldos de empleados del turno de la mañana.");
            for (int f = 0; f < 4; f++)
            {
                Console.Write("Ingrese sueldo "+(f+1)+": ");
                linea = Console.ReadLine();
                turnoM[f] = float.Parse(linea); //Asignamos valores al vector turno mañana
            }
            Console.WriteLine("Sueldos de empleados del turno de la tarde.");
            for (int f = 0; f < 4; f++)
            {
                Console.Write("Ingrese sueldo "+(f+1)+": ");
                linea = Console.ReadLine();
                turnoT[f] = float.Parse(linea); //Asignamos valores al vector turno tarde
            }
        }

        public void CalcularGastos()
        {
            float man = 0;
            float tar = 0;
            for (int f = 0; f < 4; f++)
            {
               man = man + turnoM[f]; //Realizamos la suna de los valores del vector turno Mañana
               tar = tar + turnoT[f]; //Realizamos la suna de los valores del vector turno Tarde
            }
            Console.WriteLine("Total de gastos del turno de la mañana:" + man);
            Console.WriteLine("Total de gastos del turno de la tarde:" + tar);
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            PruebaVector3 pv = new PruebaVector3();
            pv.Cargar();
            pv.CalcularGastos();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado



Ejemplo 3

Se tienen las notas del primer parcial de los alumnos de dos cursos, Matemática y el Física, cada curso cuenta con 5 alumnos.
Realizar un programa que muestre el curso que obtuvo el mayor promedio general.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaVector6
{
    class PruebaVector6
    {
        private int[] quimica; //Declaramos un vector para el curso Química
        private int[] fisica; //Declaramos un vector para el curso Física
        private int[] vecSuma;//Declaramos un vector para la suma

        public void Cargar()
        {
            quimica = new int[5]; //Asignamos una longitud de 5 al vector química
            fisica = new int[5]; //Asignamos una longitud de 5 al vector Física 
            Console.WriteLine("Ingrese notas del curso Quimica");
            for (int f = 0; f < 5; f++)
            {
                Console.Write("Ingrese nota "+(f+1)+": ");
                string linea;
                linea = Console.ReadLine();
                quimica[f] = int.Parse(linea);
            }
            Console.WriteLine("Ingrese notas del Fisica");
            for (int f = 0; f < 5; f++)
            {
                Console.Write("Ingrese nota "+(f+1)+": ");
                string linea;
                linea = Console.ReadLine();
                fisica[f] = int.Parse(linea);
            }
        }

        public void CalcularPromedios()
        {
            int suma1 = 0;
            int suma2 = 0;
            for (int f = 0; f < 5; f++)
            {
                suma1 = suma1 + quimica[f];
                suma2 = suma2 + fisica[f];
            }
            int promedioa = suma1 / 5;
            int promediob = suma2 / 5;
            if (promedioa > promediob)
            {
                Console.WriteLine("El curso de Quimica tiene un promedio mayor.");
            }
            else
            {
                Console.WriteLine("El curso de Fisica tiene un promedio mayor.");
            }
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            PruebaVector6 pv = new PruebaVector6();
            pv.Cargar();
            pv.CalcularPromedios();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado


Ejemplo 4

Realizar un programa que defina un vector de 5 componentes de tipo float que representen las alturas de 5 personas.
Obtener el promedio de las mismas. Contar cuántas personas son más altas que el promedio y cuántas más bajas.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaVector2
{
    class PruebaVector2
    {
        private float[] alturas;
        private float promedio;

        public void Cargar()
        {
            alturas = new float[5];
            for (int f = 0; f < 5; f++)
            {
                Console.Write("Ingrese la altura de la persona: "+(f+1)+": ");
                string linea = Console.ReadLine();
                alturas[f] = float.Parse(linea);
            }
        }

        public void CalcularPromedio()
        {
            float suma;
            suma = 0;
            for (int f = 0; f < 5; f++)
            {
                suma = suma + alturas[f];
            }
            promedio = suma / 5;
            Console.WriteLine("Promedio de alturas es:" + promedio);
        }

        public void MayoresMenores()
        {
            int may, men;
            may = 0;
            men = 0;
            for (int f = 0; f < 5; f++)
            {
                if (alturas[f] > promedio)
                {
                    may++;
                }
                else
                {
                    if (alturas[f] < promedio)
                    {
                        men++;
                    }
                }
            }
            Console.WriteLine("Cantidad de personas mayores al promedio:" + may);
            Console.WriteLine("Cantidad de personas menores al promedio:" + men);
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            PruebaVector2 pv2 = new PruebaVector2();
            pv2.Cargar();
            pv2.CalcularPromedio();
            pv2.MayoresMenores();
        }
    }
}

Al ejecutar el código muestra el siguiente resultado

25 comentarios:

  1. Muchisimas Graciass, me sirvio much para la tarea ;)

    ResponderEliminar
  2. ejemplo de con array. Enfermedades Se insertan una serie de síntomas y se deberá dar el medicamento más apropiado para el tratamiento
    de 5enfermedades.

    ResponderEliminar
  3. COMO PUEDO DEFINIR UNA MATIZ DE LONGITUD 5X5 CUYO TIPO DE DATO PERMITA LA ASIGNACION DELCARACTER ASTERISCO.
    ESPERO ME PUEDAN PROPORCIONAR UN EJEMPLO GRACIAS.

    ResponderEliminar
    Respuestas
    1. te falto decir que es para la materia de programacion estructurada en la univ.UTEL.

      saludos bro.

      Eliminar
  4. amigo ayudame en este ejercicio mira:
    Construya un programa para ingresar 10 elementos enteros en un arreglo y luego 12 elementos enteros en otro arreglo, dichos conjuntos ya ingresan ordenados en forma creciente. Se desea obtener un tercer arreglo de 22 elementos ordenados en forma creciente, intercalando los elementos de los arreglos ingresados (aplicar Método MERGE).
    No se como hacerlo, ayudame porfavor.

    ResponderEliminar
  5. alquien sabe como puedo solucionar este ejercicio

    Registrar las notas (de 0 a 5) de parcial 1, parcial 2 y parcial 3
    de N estudiantes. Calcular la nota final, teniendo en cuenta
    que el parcial 1 equivale al 30%, el parcial 2 al 30% y el
    parcial 3 al 40%. Al final se debe imprimir toda la información.

    ResponderEliminar
    Respuestas
    1. public void Solucion()
      {
      int n = 0;
      float nota1 = 0.0f, nota2 = 0.0f, nota3 = 0.0f, par1 = 0.0f, par2 = 0.0f, par3 = 0.0f;

      Console.WriteLine("Escribe la cantidad de estudiantes de los parciales: ");
      n = Convert.ToInt32(Console.ReadLine());

      float[] Parcial1 = new float[n];
      float[] Parcial2 = new float[n];
      float[] Parcial3 = new float[n];
      float[] notas = new float[n];

      for(int i = 0; i < Parcial1.Length; i++)
      {
      Console.WriteLine("Escribe la nota del parcial1 nº #" + (i+1));
      Parcial1[i] = Convert.ToSingle(Console.ReadLine());
      }
      for (int j = 0; j < Parcial2.Length; j++)
      {
      Console.WriteLine("Escribe la nota del parcial2 nº #" + (j + 1));
      Parcial2[j] = Convert.ToSingle(Console.ReadLine());
      }
      for (int k = 0; k < Parcial3.Length; k++)
      {
      Console.WriteLine("Escribe la nota del parcial3 nº #" + (k + 1));
      Parcial3[k] = Convert.ToSingle(Console.ReadLine());
      }
      for(int m = 0; m < notas.Length; m++)
      {
      // extraemos la nota global por cada parcial de cada alumno
      notas[m] = (Parcial1[m]*0.3f) + (Parcial2[m]*0.3f) + (Parcial3[m]*0.4f);
      }
      for (int p = 0; p < notas.Length; p++)
      {
      Console.WriteLine("La nota global del alumno " + (p+1) + " ha sido de " + notas[p]);
      }

      }

      Eliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. puedes explicarme como haser una conversion de decimal a binario con arreglos??

    ResponderEliminar
  8. excelente me fue de mucha ayuda, gracias

    ResponderEliminar
  9. Realice un programa que almacene en un arreglo 5 números ingresados por el usuario.

    Debe recorrer el arreglo y verificar si dentro del mismo se encuentra el #7. Si es así, mostrar un mensaje que diga "Bienvenido" y salir.

    En caso contrario, mostrar un mensaje que diga "Hasta la próxima" y salir

    ResponderEliminar
  10. Como almacenar un dato en un arreglo en C#

    ResponderEliminar
  11. manden un codigo que funcione
    el programa de calcular el promedio de 3 notas en sharp

    ResponderEliminar
  12. Una Empresa solicitar contratar los servicios de un programador para que realice las siguientes actividades: 1) Que Solicite la cantidad de información que se va almacenar en el Vector 2) Cree un vector de tipo entero acuerdo al tamaño capturado en el punto uno. 3) El ingreso de la información va ser por consola 4) Qué calcule haga el cálculo del promedio de la información ingresada 5) Que ordene el vector y me diga cual es el valor menor y mayor de la información ingresada *

    Alguien me ayuda porfavor

    ResponderEliminar
  13. alguien sabe como puedo crear un arreglo donde pueda consultar mi directorio de contactos o algun ejemplo similar

    ResponderEliminar
  14. En un vector de 25 elementos, se desea buscar un dato que será leído. Diseñe un
    programa que imprima el mensaje: “VALOR ENCONTRADO”, si en efecto el valor
    11
    buscado ya se encuentra entre los elementos, y la posición o subíndice donde se
    encontró la primera vez.
    Si el valor no se encuentra, se debe sustituir el valor menor por el buscado, imprimiendo
    el elemento que sale del vector y la posición que ocupaba.

    Alguien me puede ayudar porfavor :(

    ResponderEliminar

  15. Como se procede en esta operación en c#?
    En un vector de 25 elementos, se desea buscar un dato que será leído. Diseñe un
    programa que imprima el mensaje: “VALOR ENCONTRADO”, si en efecto el valor buscado
    11
    ya se encuentra entre los elementos, y la posición o subíndice donde se encontró la
    primera vez.
    Si el valor no se encuentra, se debe sustituir el valor menor por el buscado, imprimiendo
    el elemento que sale del vector y la posición que ocupaba.

    ResponderEliminar
  16. -R e alic e una aplicación de consola con nombre DemoMatriz, que solic ite la cantidad de productos a introducir. Luego deberá solicitar el nombre, cantidad y precio de cada uno, calcular el subTotal y almacenar todos los valores en una matriz llamada ventas. El sistema deberá perm itirle al usuario finalizar al terminar cada iteración. Al finalizar deb erá mostrar el total de productos introducidos y el total de las ventas realizadas. •Ejemplo de entrada de datos: Productos Cantidad Precio subTotal.
    o platano 3 10 30
    1 habichuela 2 10 20
    2 carne 4 15 60
    3 arroz 5 20 100

    ResponderEliminar
  17. Desarrolle una aplicación que permita almacenar los nombres y 3 notas para cada uno de los N alumnos
    de una institución educativa. Se solicita determinar el promedio de cada estudiante, y luego mostrar toda la
    información en pantalla.
    COMO PUEDO DESARROLAR ESTE PROGRAMA EN C#

    ResponderEliminar
  18. Necesito ayuda en un ejercicio de arreglos

    ResponderEliminar
  19. hola como hago un ejercicio C# de convertir grados celsius a farengheit y viceversa alguien podria ayudarme por fa

    ResponderEliminar
  20. Escribir un programa que lea el array
    necesito ayuda

    ResponderEliminar
  21. Desarrollar un programa que pida por teclado el tamaño de un arreglo de números y
    pedir los valores numéricos con los que se rellena. Los valores no se pueden repetir.
    Mostrar el arreglo con los valores al final.

    ResponderEliminar