Ejercicios resueltos de array con C# (2)

Esta es la segunda entrega de ejercicios resueltos con array para dominar de una vez esta estructura tan usada en C# y otros lenguajes de programación. Saber trabajar eficientemente con arrays es algo sumamente importante, ya que es la base de muchas otras estructuras de datos.

Crear un array de números aleatorios

Una buena práctica para probar nuestros algoritmos, ya sean de búsqueda, de ordenación, o cualquiera de los que hagamos aquí es crear un array de números aleatorios a partir de un tamaño. Veamos como hacer esto con la clase system.Random de C#. Veamos el código:

public int[] ArrayAleatorio(int longitud){
      //Creamos un nuevo array del tamaño especificado
      int [] a = new int[longitud];
      //Inicializamos la clase Random
      Random r = new Random();
      int aleatorio = 0;
      //ahora en cada posición del array insertaremos
      //un numero aleatorio entre -20, y 20
      for(int i=0; i<a.Lenght; i++)
      {
           a[i]=r.Next(-20,21); 
      }
      return a;
}

Vemos como cada vez que aumenta i dentro del ciclo for creamos un nuevo número aleatorio. Así tendremos un array con numeros aleatorios entre -20 y 20. El método Next de la clase Random tiene varios constructores, nosotros usamos uno que permite crear un número en un intervalo especificado. Como funcionará la clase Random? Interesante verdad? Este método lo podemos usar de cierta forma para probar algún que otro método, y hacemos algo así:

int[] numeros = ArrayAleatorio(8); //Creamos un array aleatorio de tamaño 8
Ordenar(numeros);
Buscar(3, numeros);

Invertir un array

Bueno, veamos ahora como invertir un array de numeros:

public void Invertir(int [] a)
{
    //Creamos un nuevo array del mismo tamaño
    int[] b = new int[a.Lenght];
    //Empezamos a copiar desde la última posición de a en la primera
    for(int i=0; i<a.Lenght/2; i++)
    {
        b[i]= a[a.Lenght-i-1];
    }
    //Como el método no retorna nada guardamos en a el array b
    a=b;
}

Tener en cuenta que cuando hacemos a[a.Lenght -i -1], a medida que aumenta i nos vamos moviendo por a desde la ultima posición (a.Lenght -1) hasta la primera.

Calcular la suma de un array

Ahora veremos como calcular la suma de todos los elementos de un array.

public int CalculaSuma(int [] a)
{
    int suma=0;
    for(int i=0; i<a.Lenght; i++)
    suma+=a[i]; //El operador += es similar a suma = suma + a[i]
}

Como ven es un método muy sencillo donde solo tenemos que recorrer el array e ir aumentando la variable suma con el operador +=, que es lo mismo que hacer suma = suma+a[i].

Si tienen alguna duda, ya saben, comenten… y practiquen. En la próxima entrega veremos ejercicios un poco más complejos. Pronto estaremos buscando y ordenando elementos en un array de forma más eficiente.

Compartir:

Codigos PHP, Jquery, CSS, .NET

12 comentarios

Forma parte de nuestra discusión y síguela de cerca

Esto no marcaía error?

public int CalculaSuma(int [] a)
{
    int suma=0;
    for(int i=0; i  &lt;------aqui?
    {
        suma+= a[i];
    }
    return suma;
}

Autor: ivan | Fecha: Jul 12, 2010.

Hola Ivan, tienes razón… se me fue un pedazo de código, lo siento, ya está corregido

Autor: Tomy | Fecha: Jul 29, 2010.

que aporte! son los mejores

Autor: edwin | Fecha: Ago 29, 2010.

Jajaja! Muchisimas gracias, me ha ayudado muchisimo! Aunque, no existe ninguna función (tipo for, case o whil) para invertir directamente las arrays? No tengo ni idea siq ue solo pregunto, no crean de su existencia xD

Autor: Luis BCN | Fecha: Feb 1, 2011.

Estoy haciendo una aplicacion de consola que permita al usuario llenar un arreglo con números enteros, y a partir de este realizar un recorrido y contar cuantos numeros se repiten y cuantas verces.

Esto es lo que he logrado hasta ahora, pero no se como contar e imprimir cuantas veces se repiten estos datos:

using System;
class arreglos
{
    public void marreglos()
    {
        int[] numeros = new int[10];
        for (int i = 0; i &lt; 10; i++)
        {
            Console.Write(&quot;  Digite un numero entero: &quot;);
            numeros[i] = Convert.ToInt32(Console.ReadLine());
        }
        Console.WriteLine(&quot;*** RECORRIENDO ARREGLO***&quot;);
        Array.Sort(numeros);
        foreach (int elemento in numeros)
        {
            Console.WriteLine(elemento);
        }
    }
}
 
class ppal
{
    public static void Main()
    {
        arreglos obj = new arreglos();
        obj.marreglos();
        Console.ReadKey();
    }
}

Espero su ayuda amigos

Autor: Erick tobar | Fecha: May 15, 2011.

@Erick, te voy a corregir algunos detalles:
1. Para convertir a entero, usa la función int.Parse()
2. Si quieres que tu aplicacion esté mas organizada, deberias crear dos metodos, uno que genera el array de numeros aleatorios y otro q cuenta la cantidad que hay en cada uno ;)
3. Para contar la cantidad de veces q se repite cada numero, es mejor usar un for, en lugar del foreach, usa el foreach en listas y clases mas complejas.
Quedaría algo así:

Array.Sort(elementos);
int contador=1;
for(int i=1; i<elementos.Lenght)
{
       if(elementos[i+1]!=elementos[i])
      {
             Console.WriteLine("Hay {0} cantidad de {1}", contador, elementos[i]);
             contador=1;
      }
      else
             contador++;
}

No lo he compilado pero debe funcionar, saludos

Autor: Tomy | Fecha: Jun 20, 2011.

Hola !! yo quisiera hacer una carga de datos de usuarios en una matriz de dos direcciones , se cargarlos perfectamente cuando la recorro toda , lo que no se hacer y quiero averiguar es como ir ingresando los datos de a uno por ejemplo nombre y apellido, donde nombre se guarde en una memoria y apellido en otra, poder salir de ahí venderle un seguro y después volver a registrar otro usuario o cuantos sean necesarios.

la matriz tiene que recordar la ultima posición del ultimo dato que guarde cuando vuelva a ingresar el siguiente.

Autor: Serenity | Fecha: Jul 2, 2011.

¿alguien me puede ayudar con estos ejercicios, gracias…

1 Desarrolle un programa con un arreglo 4 x 5 diga que números son pares y cuales son impares y en qué posición se encontraban.
2 Realice un programa en C que dada una matriz n x m, rellene con 1 la primera fila con 2 la segunda fila con 3 la tercera fila y así sucesivamente hasta que finalice el ciclo y luego muéstrela por pantalla.
3 Realice un programa en C que dada una matriz n x m, rellene con 1 la primera columna con 2 la segunda columna con 3 la tercera y así sucesivamente hasta que finalice el ciclo y luego muéstrela por pantalla.

Autor: cesar | Fecha: Oct 14, 2011.

public static void Invertir(int[] a)
        {
            //invertir array  
            for (int i = 0; i < a.Length/2; i++)
            {
                int temp;
                //intercambiar elementos
                temp = a[i];
                a[i]= a[a.Length - i - 1];
                a[a.Length - i - 1] = temp;
 
            }
        }

Autor: xirs | Fecha: Nov 23, 2011.

necesito un algoritmo de cadena, que reciba nombres, y los ordenes por orden alfabetico…

Gracias…….

Autor: Wil Gomez | Fecha: Dic 2, 2011.

quisiera ayuda para resolver estos ejercicios utilizando las listas:

1. Diseñe un registro para n alumnos de una Universidad, con sus respectivas notas
de Matemáticas y Estructuras de Datos, dichos datos, se deben guardar en una
Lista. Se sabe que, en ésta universidad, existe la política que si, un alumno ha
reprobado estas dos materias, es dado de baja en la universidad. Nota minina de
Aprobación 10. (8 ptos).
2. Dada una lista de N números enteros determinar la cantidad de dígitos pares e
impares que poseen. (7 ptos).
3. En una lista simple, que almacena enteros, mostrar el dato mayor, la suma y el
promedio.(5 ptos).

Autor: cesar | Fecha: Ene 16, 2012.

2. El dueño de una cadena de tiendas de artículos deportivos desea controlar sus ventas. Los datos de entrada son:
• El nombre de la tienda
• Nombre del deporte del artículo.
• El costo del artículo.
Hacer una aplicación que permita calcular:
• Las ventas totales en el día para cada tienda
• Las ventas totales para cada uno de los deportes.
• Las ventas totales de todas las tiendas.

Autor: juan | Fecha: Ene 27, 2012.

Escribe tu comentario

Requerido.

Requerido. No público.

Si tienes alguno.