59 - Estructura repetitiva foreach


La estructura repetitiva foreach es utilizada para recorrer colecciones de datos (por ejemplo vectores), si bien podemos utilizar de forma tradicional las otras estructuras repetitivas el empleo del foreach hacen más natural el acceso a los elementos.

Problema 1:

Almacenar los sueldos de 5 operarios en un vector, imprimir los elementos recorriendo el vector con la estructura repetitiva foreach.

Programa:

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

namespace Estructuraforeach1
{
    class SueldoEmpleados
    {
        private int[] sueldos;

        public void Cargar()
        {
            sueldos = new int[5];
            for (int f = 0; f < 5; f++)
            {
                Console.Write("Ingrese valor de la componente:");
                String linea;
                linea = Console.ReadLine();
                sueldos[f] = int.Parse(linea);
            }
        }

        public void Imprimir()
        {
            foreach (int s in sueldos)
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }

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

El funcionamiento del foreach:


            foreach (int s in sueldos)
            {
                Console.WriteLine(s);
            }

La variable s almacena la primera vez el primer elemento del vector sueldos, seguidamente se ejecuta el bloque del foreach (en este caso imprimimos el contenido de la variable s)
Es decir que s almacena en cada vuelta del foreach un elemento del vector.

Con la estructura foreach recorremos en forma completa el vector y en cada iteración tenemos acceso a un elemento del vector que se copia en una variable auxiliar.

Podemos utilizar la palabra clave var para definir en forma implícita la variable que almacena sucesivamente los elementos del vector:


        public void Imprimir()
        {
            foreach (var s in sueldos)
            {
                Console.WriteLine(s);
            }
            Console.ReadKey();
        }

Problema propuesto

  1. Crear un vector de n elementos de tipo entero (n se ingresa por teclado) Mostrar cuantos elementos son superiores a 100 (emplear el foreach para recorrer el vector)
Solución

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

namespace Estructuraforeach2
{
    class Mayores100
    {
        private int[] vec;

        public void Cargar()
        {
            Console.Write("Cantidad de elementos:");
            int n = int.Parse(Console.ReadLine());
            vec = new int[n];
            for (int f = 0; f < vec.Length; f++)
            {
                Console.Write("Ingrese valor de la componente:");
                String linea;
                linea = Console.ReadLine();
                vec[f] = int.Parse(linea);
            }
        }

        public void Imprimir()
        {
            int cant = 0;
            foreach (var valor in vec)
            {
                if (valor > 100)
                {
                    cant++;
                }
            }
            Console.Write("La cantidad de elementos mayores a 100 son:" + cant);
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            Mayores100 m = new Mayores100();
            m.Cargar();
            m.Imprimir();
        }
    }
}

Retornar