Ejercicios resueltos de array con C# (3)

May 12, 2009 Codigos C# 35 comentarios

Bueno, seguimos con algunos ejercicios resueltos en C#. Esta vez implementamos algunos métodos un poco más complejos, pero muy útiles para resolver distintos problemas. Empezamos desde lo más sencillo hasta lo más complejo…Aunque no son muy complicados los ejercicios, te aconsejo que leas primero estos tres:

Arrays en C# (Para que veas bien que es un array)

Ejercicios resueltos de arrays en C# (Primera parte)

Más ejercicios resueltos de arrays en C# (Segunda parte)

1- Saber si una cadena es palíndromo o no.
Una cadena es palíndromo si se puede leer igual de derecha a izquierda que de izquierda a derecha, por ej: otto, sacas, etc. El método, que en este caso sería recursivo tendría la siguiente signatura:
public bool EsPalindromo(string s). Vamos a la implementación:

espalindromo Ejercicios resueltos de array con C# (3)

Como vemos, es un método muy sencillo haciendo uso de la recursividad, teniendo en cuenta que una cadena es palíndromo si al quitar los extremos del texto, este sigue siendo palíndromo, y así sucesivamente hasta que quede de longitud 1, que por supuesto es palíndromo. De todas formas traten de hacerlo iterativo, para que vean como se extiende un poco más el código… jjeje. Si quieren, pueden ver un poco más sobre recursividad aquí.

Invertir un array es algo que puede que hagamos muy seguido en nuestros programas, a través del siguiente método vemos como invertir un array de números enteros, de tal forma que si nos pasan un array de enteros con 1,2,3,4,5, este método devuelva 5,4,3,2,1… vamos al código:

invertir Ejercicios resueltos de array con C# (3)

Como vemos, lo único que va a tener este método que puede no entiendas es números[numeros.Lenght-i-1]. Si le vamos dando valores a la i a partir de 0, vemos como a medida que aumenta i, nos movemos un paso antes en el array numeros. Recuerden también que la ultima posición de un array es array[array.Lenght-1], que es cuando la i vale 0.

Buscar un elemento en un array bidimensional (tabla)

Método muy sencillo que nos muestra como movernos por un array bidimensional buscando si contiene un elemento dado. Veamos este ejemplo rápidamente:

buscar Ejercicios resueltos de array con C# (3)

Vemos como con dos ciclos for nos podemos mover fácilmente por todas las posiciones de la tabla. El método retornará true solamente si encuentra el elemento n en la tabla. Aclarar que la propiedad GetLenght(int dimension), nos da el ancho o el alto dependiendo de la dimensión. 1 es para el alto, y 0 es para el ancho.

Rotar un array
Entenderemos por rotar un array n veces, trasladar el elemento de la primera posición n veces a la derecha si n>0 o a la izquierda si n<0. Por ejemplo, si rotamos 3 veces el array 1,3,2,4,5 devolvería 2,4,5,1,3. Esto se puede lograr de varias formas, pero proponemos una muy poco costosa, calculando la posición del array donde debería caer el primer elemento del array que se desea rotar. Bueno, vamos a la práctica, el código es:

rotar Ejercicios resueltos de array con C# (3)

Vemos que es un poquito complicado esto de rotar un array calculando la posición a partir del resto de n con la longitud del array, pero si se ponen a analizar linea por línea se darán cuenta que no es tan difícil. Haciendo n%array.Lenght, calculamos la nueva posición donde quedaría el primer elemento del array. Interesante verdad? Ya veremos próximamente como armar un diccionario donde poder agregar y leer datos fácilmente sin necesidad de buscar por todos sus elementos utilizando mucho este operador % para el resto. Entonces practiquen con estos métodos, hagan modificaciones, busquen otras ideas, traten de mejorarlos… y todo lo que se les ocurra.
Para aprender a programar hay que “leer y escribir código”. Si tienen alguna duda, dejen un comentario. Próximamente estaremos viendo la clase Matriz con todos sus métodos y propiedades. Determinante, multiplicación escalar, multiplicación por otra matriz, suma, resta, etc…

Compartir:

35 comentarios

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

[...] Ejercicios resueltos de array con C# (3ra. parte) [...]

Autor: Ejercicios de array con C# (1ra. parte) | PuntoPeek.com | Fecha: May 13, 2009.

me gustaria que colocaran ejemplos de como se escribe una funcion con recurcividad que lea palabras y genere su palindrome (nota : las palabras palindromes son las que son iguales leidas de atras para adelante como arepera )

Autor: anthom | Fecha: Jul 4, 2009.

Muy buenos ejemplos me solucionaron mas de una se agradece.

Autor: Juanz | Fecha: Oct 21, 2009.

estan muy buenos los ejercicios y espero tener muchos mas

Autor: eder lozano ramirez | Fecha: Oct 27, 2009.

realmente buenos los ejercicios sigue asi , aprendemos mucho …

Autor: luthor | Fecha: Nov 17, 2009.

ola alguein tendra un ejercisio resuelto en csharp el cual sea un problema que involucre alguna ecuacion diferencial

Autor: daniel ramos | Fecha: Nov 23, 2009.

Me podrían ayudar a escribir un método para comparar dos arrays? por ejemplo A=[2,5,6,7,8,11,35] B=[1,4,7,30]
Como saber si B esta contenido en A.

Autor: percy1006 | Fecha: Dic 9, 2009.

hi,

First of all. Thanks very much for your useful post.

I just came across your blog and wanted to drop you a note telling you how impressed I was with the information you have posted here.

Please let me introduce you some info related to this post and I hope that it is useful for .Net community.

There is a good C# resource site, Have alook

http://www.csharptalk.com/2009/09/c-array.html
http://www.csharptalk.com/2009/10/creating-arrays.html

simi

Autor: simi | Fecha: Dic 30, 2009.

Hello Simi, You’re absolutely right. http://www.csharptalk.com is a good C# resource. They/You have a lot of tutorials and examples.

Autor: Tomy | Fecha: Mar 17, 2010.

Hola quisiera saber como puedo declarar un arreglo tipo string con el nombre de los meses y luego ese mismo arreglo utilizando enum

Autor: Maria Eliza | Fecha: May 13, 2010.

Maria Eliza–>
declarar un arreglo de string con los meses del año:

string[] meses = new string[]
{
enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre
};

declarar un enum con los meses del año:

enum meses {
enero, febrero, marzo, abril, mayo, junio, julio, agosto, septiembre, octubre, noviembre, diciembre
};

la diferencia está a la hora de acceder a los meses.

En enum:
meses. Enero=1;

En arrays:
string febrero = meses[1];

Autor: Tomy | Fecha: May 26, 2010.

percy1006–> aqui te pongo como ver si un array a esta contenido dentro de otro. El codigo seria algo asi, hay mejores formas de hacerlo, pero lo hice de la forma mas basica para que todos entendieran.

static void Main(string[] args)
        {
            List<string> list = new List<string>();
 
            int[] a = { 4, 6, 3, 1, 6, 8, 4, 2, 5, 78, 3 };
            int[] b = { 4, 6, 3, 1, 6, 7, 9, 11 };
            Console.WriteLine(EstaContenido(a, b));
            Console.ReadLine();
        }
 
        //Queremos saber si b está contenido en a
        static bool EstaContenido(int[] a, int[] b)
        {
            int count =0;
            //Si b es mayor que a no tiene logica ver si esta contenido
            if (b.Length > a.Length)
                return false;
            else
                for (int i = 0; i < a.Length; i++)
                {
                    //Si coinciden los dos primeros y no me salgo del array
                    if (a[i] == b[0] && i+b.Length<a.Length)
                        //Recorro el array b para ver si esta contenido completamente en a;
                        for (int j = 1; j < b.Length; j++)
                            if (a[i+j] == b[j])
                                count++;
                    //La variable count me dice si todos los elementos de b estan en a
                    if (count == b.Length - 1)
                        return true;
                    else
                        count = 0;
                }
            return false;
        }

Autor: Tomy | Fecha: May 26, 2010.

hola, gracias por la ayuda anterior, quisiera saber si me pueden enviar una idea de como comprimir un archivo, gracias

Autor: Maria Eliza | Fecha: Jun 4, 2010.

hola, necesito una mano con este problema por favor y gracias de antemano:
“El servicio meteorológico toma durante una semana la temperatura del medio ambiente cada 15 minutos, lo registra en un vector o en una matriz, con el fin de obtener la media artimetica (promedio) la mediana y la moda”.

Autor: Cesar | Fecha: Oct 26, 2010.

pudes poner ejercicios propuestos y no resueltos? porfa sí

Autor: maria | Fecha: Nov 11, 2010.

ok, pero al final de casi todos los post, dejo algunos ejercicios propuestos…

Autor: Tomy | Fecha: Nov 14, 2010.

Quería ver si alguien me podía ayudar o decir como le podría hacer. Se trata de un juego de serpientes y escaleras, que muestre el dado y que antes de cada tirada muestre una pregunta con sus tres posibles respuestas obtenidas de la Base de Datos y si la respuesta es correcta este jugador va a poder tirar el dado y por lo tanto moverse según el resultado de los dados, se manejan 6 jugadoress como máximo y aparte un jugador mínimo contra la maquina. es un tablero de 10 x 10 porque tiene q ser 100 casillas. Como puedo manejar el recorrido del jugador?

Autor: LIDIA | Fecha: Nov 26, 2010.

hola le pido de favor a los camaradas programadores una ayuda …. estoy haciendo un sistema de aprendizaje matematico para los niños una manera didactica de que los niños aprendan. el programa hara operaciones binarias basicas pero no se como especificar para que dicho programa cuente el tiempo de respuesta es menor a 60 segundos y decida agragar un numero si es corto alternando cada ves los numeroa agregar …. me gustaria que me ayudaran a guiarme bajo que tipo de estructura o como podria hacerlo … se les agradece de antemano ,,,,

Autor: antonio | Fecha: Dic 8, 2010.

@Cesar, ya el ejercicio de Moda, promedio y media están resueltos en la primera parte de esta serie.

@LIDIA, para manejar el recorrido del jugador, podrías usar una matriz bidimensional, o array de una dimensión, si no hay desviaciones o ese tipo de cosas.

@Antonio, yo hice hace algún tiempo un programa también q necesitaba este tipo de cosas. Lo que usé, fue la clase Timer, que está en el namespace System.Timers. En C/C++ es más facil de utilizar.

Saludos, y q tengan un buen fin de año!

Autor: Tomy | Fecha: Dic 23, 2010.

Como puedo realizar a suma de dos vectores A y B, de un tamaño de 4 pero los números a sumar son mayores que 9.

Autor: HERNAN | Fecha: Jun 23, 2011.

alguien me puede explicar, que viene siendo n ?

Autor: KMKMKM | Fecha: Ago 15, 2011.

Hola. Primero que nada, tu pagina es genial. Te felicito. Pero tengo una duda: lo de la palabra palindrome no lo entendi. A mi me lo pidieron en la escuela (en c#) de manera recursiva (recursividad multiple), pero no lo he podido deducir. ¿Crees que me puedas echar una mano?

Autor: Bakura | Fecha: Sep 29, 2011.

@HERNAN: Hay ejercicios muy parecidos a ese en este blog, no es muy complicado, solo ten en cuenta recorrer con un mismo ciclo for los dos array y guardando la suma en otro array o en uno de los dos que estás sumando.

@Bakura: Es verdad que no es tan sencillo deducir los algoritmos recursivos, te recomiendo primero que leas un poco sobre recursividad en este mismo blog:
Recursividad con C#

@KMKMKM: En un caso n es el número a buscar y en otro la cantidad de veces que se va a rotar el array.

Autor: Tomy | Fecha: Sep 30, 2011.

hola, queria saber bn en la parte de invertir el arreglo en si que esta pasando con el nums.length-i-1?

Autor: Oscar | Fecha: Oct 23, 2011.

Eso se usa para recorrer el array desde atrás hacia delante, ya que haciendo array[nums.Length-1] se obtiene la ultima posición del array y a medida que aumenta i me voy moviendo de derecha a izquierda

Autor: Tomy | Fecha: Oct 25, 2011.

gracias me acabas de sacar de un apuro bendiciones

Autor: karina | Fecha: Nov 8, 2011.

holas como puedo hacer un modulo booleano que, dado un vector A, regrese verdadero si la suma de la primera mitad de los elementos de A es igual a la suma de la segunda mitad y sino que regrese falso .
no se si me podrias ayudarme? gracias

Autor: liz | Fecha: Dic 12, 2011.

hola perdon oigan pueden ayudarme con mi tarea de programacion tenemos que eliminar una linea de un arreglo y pss an me aparece el espacio vacio

Autor: diana | Fecha: Dic 31, 2011.

Hola, es posible que mi problema no sea para aca, pero intentarlo vale la pena. Tengo un disco duro externo HXD7 nuevecito de 320G que por torpeza estaba conectado a mi laptop cuando estaba formateandose en la instalacion de Kubuntu y , como no es mucho lo que entiendo en este caso, el HXD7 de convirtio en ARRAID y Windows7 no lo reconoce y en Linux veo que es arraid y no se puede abrir. Quisiera poder recuperar la memoria externa y si se puede, la data que en ella habia tambien.
Desde ya, muchas gracias por el espacio!

Autor: chamica | Fecha: Mar 14, 2012.

@chamica: Está un poco complicado, yo de ese tema no se mucho… pero estoy seguro que hay alguna herramienta para convertir de ARRID a NTFS, y recuperar los datos, pregunta en algún foro Geek o de Sistemas Operativos.

Autor: Tomy | Fecha: Mar 23, 2012.

Gracias por el consejo. De todas maneras le saque toda la info que pude y como no encontre forma de revertirlo, lo lleve a donde lo compre y lo dejo como nuevo; borro todo y ya.
Mil Gracias!!!!

Autor: chamica | Fecha: Mar 23, 2012.

HOLAA NECESITO REALIZAR UN PROGRAMA PARA RESOLVER UNA ECUACION DIFERENCIAL, EN CSHARP, ALGUNA IDEA POR FAVOR

Autor: MARU | Fecha: Abr 2, 2012.

cual seria el codigo para saber la posicion de un arreglo

Autor: hanna | Fecha: Abr 8, 2012.

amigos …pueden ayudarme..??/debo hacer un algoritmo en c sharp -aplicacion consola-con cadenas.el cual debe ejecutar la siguiente funcion:

introducir una palabra que tenga mayusculas,minusculas y numeros.sino mostrar mensaje error y mensaje vuelva a introducir ……

///
agradecere mucho su ayuda/saludos…soy rafael.

Autor: rafael ch. | Fecha: Feb 25, 2014.

ayuda. como queda resuelto esto con array, de 5 enfermedades.Enfermedades Se insertan una serie de síntomas y se deberá dar el medicamento más apropiado para el tratamiento
por favor.

Autor: araceli | Fecha: Mar 4, 2014.

Escribe tu comentario

Requerido.

Requerido. No público.

Si tienes alguno.