16 - Vector (Tamaño de un vector)


Como hemos visto cuando se crea un vector indicamos entre corchetes su tamaño:

  sueldos=new int[5];

Luego cuando tenemos que recorrer dicho vector disponemos una estructura repetitiva for:

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

Como vemos el for se repite mientras el contador f vale menos de 5. Este estructura repetitiva es idéntica cada vez que recorremos el vector.
Que pasa ahora si cambiamos el tamaño del vector cuando lo creamos:

  sueldos=new int[7];

Con esto tenemos que cambiar todos los for que recorren dicho vector. Ahora veremos que un vector al ser un objeto tiene una propiedad llamada Length que almacena su tamaño. Luego podemos modificar todos los for con la siguiente sintaxis:

    for(int f=0;f<sueldos.Length;f++) 
    {
        Console.Write("Ingrese valor de la componente:");
        string linea;
        linea=Console.ReadLine();
        sueldos[f]=int.Parse(linea);
    }	

También podemos pedir al usuario que indique el tamaño del vector en tiempo de ejecución, en estos casos se hace imprescindible el empleo de la propiedad Length.

Problema 1:

Se desea almacenar los sueldos de operarios. Cuando se ejecuta el programa se debe pedir la cantidad de sueldos a ingresar. Luego crear un vector con dicho tamaño.

Programa:

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

namespace PruebaVector8
{
    class PruebaVector8
    {
        private int[] sueldos;

        public void Cargar()
        {
            Console.Write("Cuantos sueldos cargará:");
            string linea;
            linea=Console.ReadLine();
            int cant=int.Parse(linea);
            sueldos=new int[cant];
            for(int f = 0; f < sueldos.Length; f++) 
            {
                Console.Write("Ingrese sueldo:");
                linea = Console.ReadLine();
                sueldos[f]=int.Parse(linea);
            }	
        }

        public void Imprimir() 
        {
            for(int f = 0; f < sueldos.Length; f++) 
            {
                Console.WriteLine(sueldos[f]);
            }
            Console.ReadKey();
        }

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

La definición del vector no varía:

        private int[] sueldos;

Luego para la creación del mismo ingresamos una variable entera y la utilizamos como subíndice en el momento de la creación del vector:

            Console.Write("Cuantos sueldos cargará:");
            string linea;
            linea=Console.ReadLine();
            int cant=int.Parse(linea);
            sueldos=new int[cant];

Luego las estructuras repetitivas las acotamos accediendo a la propiedad Length del vector:

            for(int f = 0; f < sueldos.Length; f++) 
            {
                Console.Write("Ingrese sueldo:");
                linea = Console.ReadLine();
                sueldos[f]=int.Parse(linea);
            }	

Problemas propuestos

  1. Desarrollar un programa que permita ingresar un vector de n elementos, ingresar n por teclado. Luego imprimir la suma de todos sus elementos
Solución
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace PruebaVector9
{
    class PruebaVector9
    {
        private int[] vec;
    
        public void Cargar() 
        {
            Console.Write("Cuantos elementos tiene el vector:");
            string linea=Console.ReadLine();
            int n;
            n=int.Parse(linea);
            vec=new int[n];        
            for(int f = 0; f < vec.Length; f++) 
            {
                Console.Write("Ingrese elemento:");
                linea=Console.ReadLine();
                vec[f]=int.Parse(linea);
            }
        }
    
        public void AcumularElementos() 
        {
            int suma=0;
            for(int f = 0; f < vec.Length; f++)
            {
                suma=suma+vec[f];
            }
            Console.WriteLine("La suma de los elementos es:"+suma);
            Console.ReadKey();
        }
    
        static void Main(string[] args)
        {
            PruebaVector9 pv = new PruebaVector9();
            pv.Cargar();
            pv.AcumularElementos();
        }
    }
}

Retornar