<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; arreglos</title>
	<atom:link href="http://casidiablo.net/tag/arreglos/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Algoritmo: Obtener longitud del mayor subarreglo creciente de un arreglo</title>
		<link>http://casidiablo.net/algoritmo-longitud-mayor-subarreglo-creciente/</link>
		<comments>http://casidiablo.net/algoritmo-longitud-mayor-subarreglo-creciente/#comments</comments>
		<pubDate>Wed, 19 Aug 2009 20:58:48 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[ejercicios en java]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[algoritmos]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[subarreglos]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=3169</guid>
		<description><![CDATA[A falta de tiempo para cosas más profesionales, voy a ir poniendo los algoritmos bonitos que desarrolle en la Universidad. En este caso, la especificación del ejercicio sería: Dado un arreglo de números, determinar la longitud del subarreglo creciente más largo del arreglo. Ejemplo Si recibiéramos un arreglo de naturales con los siguientes elementos: 2, [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Falgoritmo-longitud-mayor-subarreglo-creciente%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Algoritmo%3A%20Obtener%20longitud%20del%20mayor%20subarreglo%20creciente%20de%20un%20arreglo%22%20%7D);"></div>
<p style="text-align: justify;">A falta de tiempo para cosas más profesionales, voy a ir poniendo los algoritmos bonitos que desarrolle en la Universidad. En este caso, la especificación del ejercicio sería: <em>Dado un arreglo de números, determinar la longitud del subarreglo creciente más largo del arreglo</em>.</p>
<h3>Ejemplo</h3>
<p style="text-align: justify;">Si recibiéramos un arreglo de naturales con los siguientes elementos: <em>2, 6, 5, 1, 3, 4, 9, 8</em> el resultado sería 4, puesto que es el subarreglo más largo de elementos crecientes (es decir, la longitud del subarreglo <em>1, 3, 4, 9</em>)</p>
<h3>Solución en palabras</h3>
<p style="text-align: justify;">El algoritmo que resuelve este problema debería recorrer el arreglo e ir verificando si el elemento en la posición a la que apunta es menor al de la siguiente posición. Esto supone además que, puesto que evaluaremos el elemento de la siguiente posición, debemos recorrer el arreglo desde la posición <em>0</em> hasta <em>n-1</em> (siendo <em>n</em> la longitud del arreglo), ya que no queremos sobrepasar la longitud del mismo. Por otro lado, para <strong>cada elemento</strong> del arreglo contaremos sus sucesores que sean mayores que él mismo y con dicho conteo podremos determinar cual es la longitud de los subarreglos crecientes.</p>
<h3>Solución en Java</h3>
<p>El algoritmo en Java sería este:</p>
<pre class="brush: java; title: ; notranslate">public class SubarregloCreciente{
	public static void main(String args[]){
		//arreglo a evaluar
		int[] arr = {5,6,4,1,2,6,7,78,6,2,3,4,5,6,7,3,6,1};
		//la longitud al menos sera 0;
		//k contador por cada recorrido
		int longitud = 1, k;
		//recorremos el arreglo
		for(int i=0; i&lt;arr.length-1;i++){
			//contamos desde el indice i cuantos
			//elementos hay en orden ascendente
			for(k = i; k &lt; arr.length-1 &amp;&amp; arr[k] &lt; arr[k+1]; k++);
			//si la longitud es mayor que la anterior guardarla
			if(longitud &lt; k - i + 1)
				longitud = k - i + 1;
		}
		System.out.println(&quot;Longitud del subarreglo creciente mas grande: &quot;+longitud);
	}
}</pre>
<p><a class="descargacodigo tooltip" title="Descargar el código fuente" href="http://casidiablo.net/descargar/Subarreglo+Creciente">Descargar código fuente</a></p>
<h3>Solución en Python</h3>
<pre class="brush: python; title: ; notranslate">from array import array
#arreglo a evaluar
arr = array('d',[5,6,4,1,2,6,7,78,6,2,3,4,5,6,7,3,6,1])
#la longitud al menos sera 0;
#k contador por cada recorrido
longitud = 1
#k=0
#recorremos el arreglo
for i in range (0, len(arr)-1):
	#contamos desde el indice i cuantos
	#elementos hay en orden ascendente
	for k in range(i, len(arr)-1):
		if not arr[k] &lt; arr[k+1]: break
	#si la longitud es mayor que la anterior guardarla
	if longitud &lt; k - i + 1:
		longitud = k - i + 1
print &quot;Longitud del subarreglo creciente mas grande: &quot;+str(longitud)</pre>
<p><a class="descargacodigo tooltip" title="Descargar el código fuente" href="http://casidiablo.net/descargar/Subarreglo+Creciente+Python">Descargar código fuente</a></p>
<h3>Representación formal de la solución</h3>
<p style="text-align: center;"><img class="aligncenter" src="http://casidiablo.net/wordpress/wp-content/uploads/2009/08/subarreglo.png" alt="subarreglo creciente"  /></p>
<p>Por supuesto, el algoritmo planteado es solo la aproximación más sencilla, mas no la más eficiente de todas.</p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/algoritmo-longitud-mayor-subarreglo-creciente/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Arreglos bidimensionales en C#</title>
		<link>http://casidiablo.net/matrices-en-c-sharp/</link>
		<comments>http://casidiablo.net/matrices-en-c-sharp/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 21:47:41 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[bidimensionales]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[foreach]]></category>
		<category><![CDATA[matrices]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2264</guid>
		<description><![CDATA[Las matrices o arreglos de dos dimensiones, son arrays bidimensionales cuyos elementos tienen dos indices. En C Sharp existen dos tipos de arreglos bidimensionales, los rectangulares y los din&#225;micos. Por lo general, cuando accedemos a arreglos bidimensionales utilizamos los t&#233;rminos filas y columnas. En los arreglos bidimensionales rectangulares, cada fila tiene la misma cantidad de [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fmatrices-en-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Arreglos%20bidimensionales%20en%20C%23%22%20%7D);"></div>
<p style="text-align: justify;">Las matrices o arreglos de dos dimensiones, son arrays bidimensionales cuyos elementos tienen dos indices. En C Sharp existen dos tipos de arreglos bidimensionales, los rectangulares y los din&aacute;micos. Por lo general, cuando accedemos a arreglos bidimensionales utilizamos los t&eacute;rminos <em>filas</em> y <em>columnas</em>.</p>
<p style="text-align: justify;">En <strong>los arreglos bidimensionales rectangulares, cada fila tiene la misma cantidad de columnas</strong>. Por otro lado, las filas de <strong>los arreglos bidimensionales din&aacute;micos pueden tener diferente cantidad de columnas</strong>. A continuaci&oacute;n, una serie de ejemplos en donde se explica c&oacute;mo se declara e inician los dos tipos de arreglos:</p>
<p><span id="more-2264"></span></p>
<h3>Declaraci&oacute;n e iniciaci&oacute;n de arreglos de dos dimensiones</h3>
<pre class="brush: csharp; title: ; notranslate">using System;
public class ArregloDosDimensiones {
  static void Main() {
     // declaracion e iniciaci&amp;amp;amp;oacute;n de arreglos rectangulares
     int[,] arreglo1 = new int[,] { { 1, 2, 3 }, { 4, 5, 6 } };
     // declaraci&amp;amp;amp;oacute;n e iniciaci&amp;amp;amp;oacute;n de arreglos dinamicos
     int[][] arreglo2 = new int[ 3 ][];
     string salida = &quot;&quot;;
     arreglo2[ 0 ] = new int[] { 1, 2 };
     arreglo2[ 1 ] = new int[] { 3 };
     arreglo2[ 2 ] = new int[] { 4, 5, 6 };
     salida = &quot;Valores en arreglo1 por fila\n&quot;;
     // salida del arreglo1
     for ( int i = 0; i &lt; arreglo1.GetLength( 0 ); i++ ) {
        for ( int j = 0; j &lt; arreglo1.GetLength( 1 ); j++ )
           salida += arreglo1[ i, j ] + &quot;  &quot;;
        salida += &quot;\n&quot;;
     }
     salida += &quot;\nValores en arreglo2 por fila\n&quot;;
     // salida del arreglo2
     for ( int i = 0; i &lt; arreglo2.Length; i++ ) {
        for ( int j = 0; j &lt; arreglo2[ i ].Length; j++ )
           salida += arreglo2[ i ][ j ] + &quot;  &quot;;
        salida += &quot;\n&quot;;
     }
     Console.WriteLine(salida);
  }
}</pre>
<p><strong>Salida&#8230;</strong></p>
<div class="consola">Valores en arreglo1 por fila<br />
1  2  3<br />
4  5  6  </p>
<p>Valores en arreglo2 por fila<br />
1  2<br />
3<br />
4  5  6  </p></div>
<p><a class="tooltip descargacodigo" title="Arreglos bidimensionales en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Arreglos+Bidimensionales">Descargar c&oacute;digo fuente</a></p>
<h3>Ejemplo con arreglos bidimensionales</h3>
<pre class="brush: csharp; title: ; notranslate">using System;
public class DoubleArray {
  static int[][] calificacion;
  static int estudiantes, examenes;
  static void Main() {
     string salida = &quot;                   &quot;;
     calificacion = new int[ 3 ][];
     calificacion[ 0 ] =  new int[]{ 77, 68, 86, 73 };
     calificacion[ 1 ] =  new int[]{ 96, 87, 89, 81 };
     calificacion[ 2 ] =  new int[]{ 70, 90, 86, 81 };
     estudiantes = calificacion.Length;      // numero de estudiantes
     examenes = calificacion[ 0 ].Length;    // numero de examenes
     // columnas
     for ( int i = 0; i &lt; examenes; i++ )
        salida += &quot;[&quot; + i + &quot;]  &quot;;
     // filas
     for ( int i = 0; i &lt; estudiantes; i++ ) {
        salida += &quot;\ncalificaciones[&quot; + i + &quot;]   &quot;;
        for ( int j = 0; j &lt; examenes; j++ )
           salida += calificacion[ i ][ j ] + &quot;   &quot;;
     }
     salida += &quot;\n\nCal. m&amp;amp;amp;aacute;s baja: &quot; + minimo() +
        &quot;\nCal. m&amp;amp;amp;aacute;s alta: &quot; + maximo() + &quot;\n&quot;;

     for ( int i = 0; i &lt; estudiantes; i++ )
        salida += &quot;\nEl promedio por estudiante &quot; + i + &quot; es &quot; +
           promedio( calificacion[ i ] );
     Console.WriteLine(salida);
  }
  // buscar calificacion minima en el arreglo
  static public int minimo() {
     int baja = 100;
     for ( int i = 0; i &lt; estudiantes; i++ )
        for ( int j = 0; j &lt; examenes; j++ )
           if ( calificacion[ i ][ j ] &lt; baja )
              baja = calificacion[ i ][ j ];
       return baja;
  }
  // buscar calificacion maxima en en arreglo
  static public int maximo() {
     int alta = 0;
     for ( int i = 0; i &lt; estudiantes; i++ )
        for ( int j = 0; j &lt; examenes; j++ )
           if ( calificacion[ i ][ j ] &gt; alta )
              alta = calificacion[ i ][ j ];
       return alta;
  }
  // determinar el promedio de la calificacion
  static public double promedio( int[] calificaciones ) {
     int total = 0;
     for ( int i = 0; i &lt; calificaciones.Length; i++ )
        total += calificaciones[ i ];
     return ( double ) total / calificaciones.Length;
  }
}</pre>
<p><strong>Salida&#8230;</strong></p>
<div class="consola">                   [0]  [1]  [2]  [3]<br />
calificaciones[0]   77   68   86   73<br />
calificaciones[1]   96   87   89   81<br />
calificaciones[2]   70   90   86   81   </p>
<p>Cal. m&aacute;s baja: 68<br />
Cal. m&aacute;s alta: 96</p>
<p>El promedio por estudiante 0 es 76<br />
El promedio por estudiante 1 es 88,25<br />
El promedio por estudiante 2 es 81,75</p></div>
<p><a class="tooltip descargacodigo" title="Arreglos bidimensionales en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Ejemplo+Arreglos+Bidimensionales">Descargar c&oacute;digo fuente</a></p>
<h3>Bonus: sentencia foreach en C#</h3>
<p>Cuando de recorrer arreglos se trata, existe una sentencia bastante &uacute;til: <em>foreach</em>. Foreach es similar a un for, solo que es un poco m&aacute;s simple. La sintaxis es <code>foreach(<em>VARIABLE</em> in ARREGLO)</code>, y cada vez que ocurre una iteraci&oacute;n, VARIABLE va tomando los valores del arreglo en orden:</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class Foreach {
   // main entry point for the application
   static void Main(string[] args) {
      int[,] calificaciones = { { 77, 68, 86, 73 },
         { 98, 87, 89, 81 }, { 70, 90, 86, 81 } };
      int baja = 100;
      foreach ( int calificacion in calificaciones ) {
         if ( calificacion &lt; baja )
            baja = calificacion;
      }
      Console.WriteLine( &quot;La calificacion mas baja es: &quot; + baja );
   }
}</pre>
<p><a class="tooltip descargacodigo" title="Foreach en C Sharp::Contiene archivo fuente .cs" href="http://casidiablo.net/descargar/Foreach+C+Sharp">Descargar c&oacute;digo fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/matrices-en-c-sharp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Busqueda Binaria &#8211; C Sharp</title>
		<link>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/</link>
		<comments>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 00:43:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[binaria]]></category>
		<category><![CDATA[busqueda]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[mono]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2259</guid>
		<description><![CDATA[Hace unos dí­as y poní­a un ejemplo acerca de búsquedas lineales en arreglos, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos. ¿Cómo funciona este método? Para poder aplicar éste método de búsqueda es necesario que el arreglo esté ordenado; posteriormente, se aplica el siguiente algoritmo: se ubica [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fejemplo-localizacion-binaria-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Busqueda%20Binaria%20-%20C%20Sharp%22%20%7D);"></div>
<p style="text-align: justify;">Hace unos dí­as y poní­a un ejemplo acerca de <a href="http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/">búsquedas lineales en arreglos</a>, ésta vez hablaremos acerca de las búsquedas lineales, un método mucho más rápido para buscar elementos.</p>
<p style="text-align: justify;"><em>¿Cómo funciona este método?</em> Para poder aplicar éste método de búsqueda <strong>es necesario que el arreglo esté ordenado</strong>; posteriormente, se aplica el siguiente algoritmo: se ubica el elemento de la mitad del arreglo, entonces, si el número que se está buscando dentro del arreglo es menor al número de la mitad, se busca el número de la mitad entre el inicio del y la mitad del mismo, y así­ hasta encontrar el elemento deseado.</p>
<p style="text-align: justify;">Por ejemplo, suponiendo que tenemos un  arreglo con los siguientes valores:</p>
<p style="text-align: justify;"><code>2, 4, 5 , 6, 8, 9, 10, 12, 24, 34, 46, 56, 60, 67, 78, 89, 90</code></p>
<p style="text-align: justify;">&#8230;y queremos buscar el valor 10; tenemos que, el elemento de la mitad contiene el valor 24. Puesto que 24 &gt; 10, buscamos el valor intermedio entre el principio del arreglo y la mitad del mismo, esto es 8. Puesto que 8 &lt; 10, buscamos el valor intermedio entre 8 y la mitad del arreglo (24), esto es 10. Así­, con tan solo 3 bucles, hemos conseguido el valor buscado.</p>
<p style="text-align: justify;">Vamos con el código del programa, que nos sacará de toda duda:</p>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/busquedabinaria.png"  /></p>
<p><span id="more-2259"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
public class EjemploBusquedaBinaria : Form
{
  private Label labelSolicitar;
  private TextBox cajaEntrada;
  private Label labelResultado;
  private Label labelMostrar;
  private Label labelSalida;
  private Button botonBuscar;
  int[] a = { 0, 2, 4, 6, 8, 10, 12, 14, 16,
              18, 20, 22, 24, 26, 28 };
  public EjemploBusquedaBinaria(){
     InitializeComponent();
  }
  private void InitializeComponent() {
     this.labelMostrar = new Label();
     this.labelResultado = new Label();
     this.cajaEntrada = new TextBox();
     this.labelSolicitar = new Label();
     this.botonBuscar = new Button();
     this.labelSalida = new Label();
     this.SuspendLayout();
     //
     // labelMostrar
     //
     this.labelMostrar.Location = new System.Drawing.Point(261, 8);
     this.labelMostrar.Name = &quot;labelMostrar&quot;;
     this.labelMostrar.Size = new System.Drawing.Size(152, 20);
     this.labelMostrar.TabIndex = 3;
     //
     // labelResultado
     //
     this.labelResultado.Location = new System.Drawing.Point(213, 8);
     this.labelResultado.Name = &quot;labelResultado&quot;;
     this.labelResultado.Size = new System.Drawing.Size(50, 16);
     this.labelResultado.TabIndex = 2;
     this.labelResultado.Text = &quot;Resultado:&quot;;
     //
     // cajaEntrada
     //
     this.cajaEntrada.Location = new System.Drawing.Point(99, 8);
     this.cajaEntrada.Name = &quot;cajaEntrada&quot;;
     this.cajaEntrada.TabIndex = 1;
     this.cajaEntrada.Text = &quot;&quot;;
     //
     // labelSolicitar
     //
     this.labelSolicitar.Location = new System.Drawing.Point(27, 8);
     this.labelSolicitar.Name = &quot;labelSolicitar&quot;;
     this.labelSolicitar.Size = new System.Drawing.Size(56, 16);
     this.labelSolicitar.TabIndex = 0;
     this.labelSolicitar.Text = &quot;Digite el dato&quot;;
     //
     // botonBuscar
     //
     this.botonBuscar.Location = new System.Drawing.Point(152, 40);
     this.botonBuscar.Name = &quot;botonBuscar&quot;;
     this.botonBuscar.Size = new System.Drawing.Size(136, 24);
     this.botonBuscar.TabIndex = 5;
     this.botonBuscar.Text = &quot;Buscar dato&quot;;
     this.botonBuscar.Click += new System.EventHandler(this.botonBuscar_Click);
     //
     // labelSalida
     //
     this.labelSalida.Font = new System.Drawing.Font(&quot;Courier New&quot;, 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
     this.labelSalida.Location = new System.Drawing.Point(10, 80);
     this.labelSalida.Name = &quot;labelSalida&quot;;
     this.labelSalida.Size = new System.Drawing.Size(420, 72);
     this.labelSalida.TabIndex = 4;
     //
     // EjemploBusquedaBinaria
     //
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(440, 157);
     this.Controls.AddRange(new Control[] {
            this.botonBuscar,
            this.labelSalida,
            this.labelMostrar,
            this.labelResultado,
            this.cajaEntrada,
            this.labelSolicitar});
     this.Name = &quot;EjemploBusquedaBinaria&quot;;
     this.Text = &quot;Busqueda Binaria&quot;;
     this.ResumeLayout(false);
  }
  static void Main() {
     Application.Run( new EjemploBusquedaBinaria() );
  }
  private void botonBuscar_Click( object sender,
     System.EventArgs e )
  {
     int valorBuscar = Int32.Parse( cajaEntrada.Text );
     // iniciar los datos de salida
     labelSalida.Text = &quot;Portions of array searched\n&quot;;
     // realizar busqueda binaria
     int elemento = Buscar( a, valorBuscar );
     if ( elemento != -1 )
        labelMostrar.Text = &quot;Valor encontrado en indice &quot; +
           elemento;
     else
        labelMostrar.Text = &quot;Valor no encontrado&quot;;
  } // fin botonBuscar_Click
  // buscar mediante metodo binario
  public int Buscar( int[] array, int dato ) {
     int bajo = 0;
     int alto = array.Length - 1;
     int medio;
     while ( bajo &lt;= alto ) {
        medio = ( bajo + alto ) / 2;
        // el siguiente método nos muestra la porción del
        // arreglo donde se está llevando a cabo la busqueda
        // del dato en cada iteración del bucle
        construirSalida( a, bajo, medio, alto );
        if ( dato == array[ medio ] )   // si se encuentra el valor
           return medio;
        else if ( dato &lt; array[ medio ] )
           alto = medio - 1;   // buscar en la mitad más baja
        else
           bajo = medio + 1;   // buscar en la mitad más alta
     } // fin de la busqueda binaria
     return -1;  // dato no encontrado
  } // fin del metodo Buscar
  public void construirSalida(
     int[] array, int bajo, int mid, int alto ) {
     for ( int i = 0; i &lt; array.Length; i++ ) {
        if ( i &lt; bajo || i &gt; alto )
           labelSalida.Text += &quot;    &quot;;
        // marcar el elemento de la mitad en la salida
        else if ( i == mid )
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;* &quot;;
        else
           labelSalida.Text +=
              array[ i ].ToString( &quot;00&quot; ) + &quot;  &quot;;
     }
     labelSalida.Text += &quot;\n&quot;;
  } // fin de construirSalida
} // fin de la clase EjemploBusquedaBinaria</pre>
<p><a class="tooltip descargacodigo" title="Búsqueda Binaria en C Sharp::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Busqueda+Binaria+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ejemplo-localizacion-binaria-c-sharp/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Buscar datos dentro de arreglos C# &#8211; Método Lineal</title>
		<link>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/</link>
		<comments>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 16:52:01 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[buscar]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[lineal]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2216</guid>
		<description><![CDATA[En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un arreglo de manera lineal. Ejemplo&#8230; Descargar código fuente]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fbuscar-elementos-dentro-array-csharp-metodo-lineal%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Buscar%20datos%20dentro%20de%20arreglos%20C%23%20-%20M%C3%A9todo%20Lineal%22%20%7D);"></div>
<p>En el siguiente ejemplo se muestra cómo realizar búsquedas dentro de un <a href="http://casidiablo.net/arreglos-en-c-sharp/">arreglo</a> de manera lineal.</p>
<h3>Ejemplo&#8230;</h3>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/busquedalineal.png" alt="busqueda lineal"/></p>
<p><span id="more-2216"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
namespace BusquedaLineal
{
   public class BusquedaLineal : Form
   {
      private Button botonBuscar;
      private TextBox cajaEntrada;
      private Label labelSalida;
      int[] a = { 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26,
                  28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50 };
      public BusquedaLineal()
      {
         InitializeComponent();
      }
      private void InitializeComponent()
      {
         this.botonBuscar = new Button();
         this.cajaEntrada = new TextBox();
         this.labelSalida = new Label();
         this.SuspendLayout();
         //
         // botonBuscar
         //
         this.botonBuscar.Location = new System.Drawing.Point(8, 8);
         this.botonBuscar.Name = &quot;botonBuscar&quot;;
         this.botonBuscar.TabIndex = 0;
         this.botonBuscar.Text = &quot;Buscar&quot;;
         this.botonBuscar.Click += new System.EventHandler(this.botonBuscar_Click);
         //
         // cajaEntrada
         //
         this.cajaEntrada.Location = new System.Drawing.Point(96, 9);
         this.cajaEntrada.Name = &quot;cajaEntrada&quot;;
         this.cajaEntrada.Size = new System.Drawing.Size(88, 20);
         this.cajaEntrada.TabIndex = 1;
         this.cajaEntrada.Text = &quot;&quot;;
         //
         // labelSalida
         //
         this.labelSalida.Location = new System.Drawing.Point(8, 40);
         this.labelSalida.Name = &quot;labelSalida&quot;;
         this.labelSalida.Size = new System.Drawing.Size(184, 23);
         this.labelSalida.TabIndex = 2;
         //
         // BusquedaLineal
         //
         this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
         this.ClientSize = new System.Drawing.Size(200, 69);
         this.Controls.AddRange(new Control[] {
                  this.labelSalida,
                  this.cajaEntrada,
                  this.botonBuscar});
         this.Name = &quot;BusquedaLineal&quot;;
         this.Text = &quot;BusquedaLineal&quot;;
         this.ResumeLayout(false);
      }
      static void Main()
      {
         Application.Run(new BusquedaLineal());
      }
      private void botonBuscar_Click( object sender,
         System.EventArgs e )
      {
         int datoBuscar = Int32.Parse( cajaEntrada.Text );
         int indiceElemento = BuscarLineal( a, datoBuscar );
         if ( indiceElemento != -1 )
            labelSalida.Text =
               &quot;Encontrado en el indice &quot; + indiceElemento;
         else
            labelSalida.Text = &quot;Valor no encontrado&quot;;
      } // fin del metodo botonBuscar_Click
      // buscar valor dentro del array
      public int BuscarLineal( int[] array, int dato )
      {
         for ( int n = 0; n &lt; array.Length; n++ )
         {
            if ( array[ n ] == dato )
               return n;
         }
         return -1;
      } // fin del metodo BusquedaLineal
   }
}</pre>
<p><a class="tooltip descargacodigo" title="Busqueda lineal en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Busqueda+Lineal+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/buscar-elementos-dentro-array-csharp-metodo-lineal/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Ordenar arreglos C# &#8211; Método burbuja</title>
		<link>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/</link>
		<comments>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/#comments</comments>
		<pubDate>Wed, 12 Nov 2008 15:48:32 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[burbuja]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>
		<category><![CDATA[ordenar]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2212</guid>
		<description><![CDATA[En el siguiente ejemplo se muestra cómo realizar el ordenamiento de arreglos de enteros, usando el método burbuja en C#. Ejemplo&#8230; Resultado&#8230; Valores de los items originales 54 6 4 8 10 12 89 68 45 37 Valores de los items en orden descendente 89 68 54 45 37 12 10 8 6 4 Descargar [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fordenamiento-array-c-sharp-metodo-burbuja%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ordenar%20arreglos%20C%23%20-%20M%C3%A9todo%20burbuja%22%20%7D);"></div>
<p>En el siguiente ejemplo se muestra cómo realizar el ordenamiento de arreglos de enteros, usando el método burbuja en C#.</p>
<h3>Ejemplo&#8230;</h3>
<p><span id="more-2212"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
public class OrdenamientoBurbuja
{
  static void Main()
  {
     int[] a =  { 54, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
     string salida = &quot;Valores de los items originales\n&quot;;
     for ( int i = 0; i &lt; a.Length; i++ )
        salida += &quot;   &quot; + a[ i ];
     // ordenar elementos del arreglo
     OrdenarBurbuja( a );
     salida += &quot;\n\nValores de los items en orden descendente\n&quot;;
     for ( int i = 0; i &lt; a.Length; i++ )
        salida += &quot;   &quot; + a[ i ];
     Console.WriteLine(salida);
  } // fin del metodo main
  // ordenar elementos de un arreglo con el metodo burbuja
  static public void OrdenarBurbuja( int[] b )
  {
     for ( int pasadas = 1; pasadas &lt; b.Length; pasadas++ ) // pasadas
        for ( int i = 0; i &lt; b.Length - 1; i++ )
           if ( b[ i ] &gt; b[ i + 1 ] )      // comparar
              intercambio( b, i );         // intercambiar
  }
  // intercambio de dos elementos en un arreglo
  static public void intercambio( int[] c, int primero )
  {
     int temp;      // variable temporal para el intercambio
     temp = c[ primero ];
     c[ primero ] = c[ primero + 1 ];
     c[ primero + 1 ] = temp;
  }
}</pre>
<p><strong>Resultado&#8230;</strong></p>
<div class="consola">Valores de los items originales<br />
   54   6   4   8   10   12   89   68   45   37</p>
<p>Valores de los items en orden descendente<br />
   89   68   54   45   37   12   10   8   6   4</p></div>
<p><a class="tooltip descargacodigo" title="Método burbuja en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Ordenar+Arreglo+Metodo+Burbuja">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ordenamiento-array-c-sharp-metodo-burbuja/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>Paso de valores por valor y referencia en C # [arreglos] &#8211; 2da parte</title>
		<link>http://casidiablo.net/paso-array-valor-referencia-c-sharp/</link>
		<comments>http://casidiablo.net/paso-array-valor-referencia-c-sharp/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 10:06:49 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2207</guid>
		<description><![CDATA[En el post anterior decíamos que cuando pasamos un arreglo a un método, &#8216;se pasa la referencia al arreglo por valor&#8217;. En este post veremos entonces cual es la diferencia entre pasar la &#8220;referencia de un arreglo por valor&#8221; y &#8220;referencia de un arreglo por referencia&#8221;. Ejemplo&#8230; Descargar código fuente]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fpaso-array-valor-referencia-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Paso%20de%20valores%20por%20valor%20y%20referencia%20en%20C%20%23%20%5Barreglos%5D%20-%202da%20parte%22%20%7D);"></div>
<p style="text-align: justify;">En <a href="http://casidiablo.net/paso-arreglos-por-valor-referencia-csharp/">el post anterior decíamos</a> que cuando pasamos un arreglo a un método, &#8216;se pasa la referencia al arreglo por valor&#8217;. En este post veremos entonces cual es la diferencia entre pasar la &#8220;referencia de un arreglo por valor&#8221; y &#8220;referencia de un arreglo por referencia&#8221;.</p>
<h3>Ejemplo&#8230;</h3>
<p style="text-align: center;"><img src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/ejemploarregloreferencia.png" alt="c sharp" /></p>
<p><span id="more-2207"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
public class EjemploArregloReferencia : Form
{
  private Label labelSalida;
  private Button botonMostrarSalida;
  public EjemploArregloReferencia()
  {
     InitializeComponent();
  }

  private void InitializeComponent()
  {
     this.labelSalida = new Label();
     this.botonMostrarSalida = new Button();
     this.SuspendLayout();
     //
     // labelSalida
     //
     this.labelSalida.Location = new System.Drawing.Point(10, 40);
     this.labelSalida.Name = &quot;labelSalida&quot;;
     this.labelSalida.Size = new System.Drawing.Size(272, 280);
     this.labelSalida.TabIndex = 0;
     //
     // botonMostrarSalida
     //
     this.botonMostrarSalida.Location = new System.Drawing.Point(101, 8);
     this.botonMostrarSalida.Name = &quot;botonMostrarSalida&quot;;
     this.botonMostrarSalida.Size = new System.Drawing.Size(91, 23);
     this.botonMostrarSalida.TabIndex = 1;
     this.botonMostrarSalida.Text = &quot;Mostrar salida&quot;;
     this.botonMostrarSalida.Click += new System.EventHandler(this.botonMostrarSalida_Click);
     //
     // EjemploArregloReferencia
     //
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 325);
     this.Controls.AddRange(new Control[] {
                                                                  this.botonMostrarSalida,
                                                                  this.labelSalida});
     this.Name = &quot;EjemploArregloReferencia&quot;;
     this.Text = &quot;EjemploArregloReferencia&quot;;
     this.ResumeLayout(false);

  }
  static void Main()
  {
     Application.Run( new EjemploArregloReferencia() );
  }

  private void botonMostrarSalida_Click( object sender,
     System.EventArgs e )
  {
     // crear e iniciar primerArreglo
     int[] primerArreglo = { 1, 2, 3 };

     // copiar primerArreglo en otro arreglo
     int[] copiaPrimerArreglo = primerArreglo;

     labelSalida.Text =
        &quot;Ejemplo pasar la referencia de primerArreglo por valor&quot;;

     labelSalida.Text += &quot;\n\nContenido de primerArreglo &quot; +
        &quot;antes de llamar el metodo primerDoblar:\n\t&quot;;

     // imprimir el contenido del arreglo primerArreglo
     for ( int i = 0; i &lt; primerArreglo.Length; i++ )
        labelSalida.Text += primerArreglo[ i ] + &quot; &quot;;

     // pasar referencia de primerArreglo por valor a primerDoblar
     primerDoblar( primerArreglo );

     labelSalida.Text += &quot;\n\nContenido de primerArreglo despues &quot; +
        &quot;de llamar el metodo primerDoblar\n\t&quot;;

     // imprimir contenido de primerArreglo
     for ( int i = 0; i &lt; primerArreglo.Length; i++ )
        labelSalida.Text += primerArreglo[ i ] + &quot; &quot;;

     // probar si la copia cambio
     if ( primerArreglo == copiaPrimerArreglo )
        labelSalida.Text +=
           &quot;\n\nLa copia fue modificada tambien (porque tiene la referencia a dicho arreglo)\n&quot;;
     else
        labelSalida.Text +=
           &quot;\n\nLa copia no fue modificada\n&quot;;

     // crear e inciar segundoArreglo
     int[] segundoArreglo = { 1, 2, 3 };

     // crear una copia de segundoArreglo
     int[] copiaSegundoArreglo = segundoArreglo;

     labelSalida.Text += &quot;\nEjemplo, pasar referencia de segundoArreglo &quot; +
        &quot;por referencia&quot;;

     labelSalida.Text += &quot;\n\nContenido de segundoArreglo &quot; +
        &quot;antes de llamar el metodo segundoDoblar:\n\t&quot;;

     // imprime el contenido de segundoArreglo antes de llamar al metodo
     for ( int i = 0; i &lt; segundoArreglo.Length; i++ )
        labelSalida.Text += segundoArreglo[ i ] + &quot; &quot;;

     segundoDoblar( ref segundoArreglo );

     labelSalida.Text += &quot;\n\nContenido de segundoArreglo &quot; +
        &quot;despues de llamar el metodo segundoDoblar:\n\t&quot;;

     // imprimir el contenido de segundoArreglo despues de llamar al metodo
     for ( int i = 0; i &lt; segundoArreglo.Length; i++ )
        labelSalida.Text += segundoArreglo[ i ] + &quot; &quot;;

     // verificar si la copia ha cambiado
     if ( segundoArreglo == copiaSegundoArreglo )
        labelSalida.Text +=
           &quot;\n\nLa copia ha cambiado\n&quot;;
     else
        labelSalida.Text +=
           &quot;\n\nLa referencia y el arreglo original son distintos (porque el original cambio de referencia)\n&quot;;

  } // fin del metodo botonMostrarSalida_Click

  // modifica elementos del arreglo e intentar modificar la referencia
  void primerDoblar( int[] array )
  {
     // doblar cada elemento del arreglo
     for ( int i = 0; i &lt; array.Length; i++ )
        array[ i ] *= 2;

     // crear una nueva referencia y asignarla al arreglo
     array = new int[] { 11, 12, 13 };
  }

  // modifica elementos del arreglo e intentar modificar la referencia
  void segundoDoblar( ref int[] array )
  {
     // doblar cada elemento del arreglo
     for ( int i = 0; i &lt; array.Length; i++ )
        array[ i ] *= 2;

     // crear una nueva referencia y asignarla al arreglo
     array = new int[] { 11, 12, 13 };
  }
}</pre>
<p><a class="tooltip descargacodigo" title="Paso de arreglos por valor y referencia C# (2)::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Ejemplo+Arreglo+Referencia">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/paso-array-valor-referencia-c-sharp/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Paso de valores por valor y referencia en C# [arreglos] &#8211; 1ra parte</title>
		<link>http://casidiablo.net/paso-arreglos-por-valor-referencia-csharp/</link>
		<comments>http://casidiablo.net/paso-arreglos-por-valor-referencia-csharp/#comments</comments>
		<pubDate>Tue, 11 Nov 2008 09:55:43 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ejemplo]]></category>
		<category><![CDATA[ejercicio]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2198</guid>
		<description><![CDATA[Cuando estamos trabajando con arreglos en C#, debemos tener en cuenta algo importante: si pasamos un arreglo entero, éste será pasado por referencia ; mientras que si pasamos uno de los elementos del arreglo, éste es pasado por valor. Importante: Bueno, decir que el arreglo se pasa por referencia, en realidad es una manera fácil [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fpaso-arreglos-por-valor-referencia-csharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Paso%20de%20valores%20por%20valor%20y%20referencia%20en%20C%23%20%5Barreglos%5D%20-%201ra%20parte%22%20%7D);"></div>
<p style="text-align: justify;">Cuando estamos trabajando con arreglos en <a href="http://casidiablo.net/category/programacion/net/c-sharp/">C#</a>, debemos tener en cuenta algo importante: si pasamos un arreglo entero, éste será pasado por referencia ; mientras que si pasamos uno de los elementos del arreglo, éste es pasado por valor.</p>
<div class="nota" style="text-align: justify;"><strong>Importante:</strong> Bueno, decir que el arreglo se pasa por referencia, en realidad es una manera fácil de decirlo. Lo que en verdad sucede es que &#8216;se pasa la referencia al arreglo por valor&#8217;. Esto resulta a veces un poco difícil de entender, pero con el siguiente ejemplo, y el del próximo post quedará mucho más claro.</div>
<p style="text-align: justify;">¿Qué quiere decir esto exactamente? Pues bien, cuando pasamos un arreglo completo a un método, TODAS las modificaciones que hagamos sobre el arreglo en dicho método se verán reflejadas en el arreglo original. Por otro lado, cuando lo que pasamos es un elemento de un arreglo, las modificaciones que hagamos sobre el elemento serán accesibles únicamente desde dicho método, por lo tanto el valor original del elemento no es modificado.</p>
<h3>Ejemplo&#8230;</h3>
<p style="text-align: center;"><img class="aligncenter" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/11/pasararreglo.png" alt="" /></p>
<p><span id="more-2198"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
using System.Drawing;
using System.Windows.Forms;
public class PasarArreglo : Form
{
  private Button botonMostrarSalida;
  private Label labelSalida;
  public PasarArreglo()
  {
     InitializeComponent();
  }
  private void InitializeComponent()
  {
     this.botonMostrarSalida = new Button();
     this.labelSalida = new Label();
     this.SuspendLayout();
     //
     // botonMostrarSalida
     //
     this.botonMostrarSalida.Location = new System.Drawing.Point(106, 8);
     this.botonMostrarSalida.Name = &quot;botonMostrarSalida&quot;;
     this.botonMostrarSalida.Size = new System.Drawing.Size(80, 23);
     this.botonMostrarSalida.TabIndex = 0;
     this.botonMostrarSalida.Text = &quot;Mostrar salida&quot;;
     this.botonMostrarSalida.Click += new System.EventHandler(this.botonMostrarSalida_Click);
     //
     // labelSalida
     //
     this.labelSalida.Location = new System.Drawing.Point(8, 48);
     this.labelSalida.Name = &quot;labelSalida&quot;;
     this.labelSalida.Size = new System.Drawing.Size(280, 184);
     this.labelSalida.TabIndex = 1;
     //
     // PasarArreglo
     //
     this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
     this.ClientSize = new System.Drawing.Size(292, 237);
     this.Controls.AddRange(new Control[] {
          this.labelSalida,
          this.botonMostrarSalida});
     this.Name = &quot;PasarArreglo&quot;;
     this.Text = &quot;Pasar Arreglo por valor y referencia&quot;;
     this.ResumeLayout(false);

  }
  static void Main()
  {
     Application.Run( new PasarArreglo() );
  }

  private void botonMostrarSalida_Click( object sender,
     System.EventArgs e )
  {
     int[] a = { 1, 2, 3, 4, 5 };

     labelSalida.Text = &quot;Resultado de pasar un arreglo &quot; +
        &quot;por referencia...\n\nLos valores del arreglo original son:\n\t&quot;;

     for ( int i = 0; i &lt; a.Length; i++ )
        labelSalida.Text += &quot;   &quot; + a[ i ];

     ModificarArreglo( a );   // el array es pasado por referencia

     labelSalida.Text +=
        &quot;\n\nEl valor de los datos modificados del arreglo son:\n\t&quot;;

     // mostrar elementos del array a
     for ( int i = 0; i &lt; a.Length; i++ )
        labelSalida.Text += &quot;   &quot; + a[ i ];

     labelSalida.Text += &quot;\n\nResultado de pasar un elemento del array por valor...&quot; +
        &quot;\n\nvalor de a[ 3 ] (antes de ser pasado a ModificarElemento()) &quot; + a[ 3 ];

     // elemento del array pasado por valor
     ModificarElemento( a[ 3 ] );

     labelSalida.Text +=
        &quot;\na[ 3 ] (despues de ser pasado a ModificarElemento()): &quot; + a[ 3 ];
  }

  // metodo que modifica el arreglo que recibe
  // (el original será modificado)
  public void ModificarArreglo( int[] b )
  {
     for ( int j = 0; j &lt; b.Length; j++ )
        b[ j ] *= 2;
  }

  // metodo que modifica el entero recibido
  // (el original no será modificado)
  public void ModificarElemento( int e )
  {
     labelSalida.Text +=
        &quot;\nvalor recibido por el metodo: &quot; + e;
     e *= 2;
     labelSalida.Text +=
        &quot;\nvalor modificado dentro del metodo: &quot; + e;
  }
}</pre>
<p><a class="tooltip descargacodigo" title="Paso de arreglos por valor y referencia C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Pasar+arreglo+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/paso-arreglos-por-valor-referencia-csharp/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ejemplos básicos de manipulación de arreglos en C#</title>
		<link>http://casidiablo.net/ejercicios-basicos-manejo-arreglos-c-sharp/</link>
		<comments>http://casidiablo.net/ejercicios-basicos-manejo-arreglos-c-sharp/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:00:42 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ejemplos]]></category>
		<category><![CDATA[ejercicios]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2191</guid>
		<description><![CDATA[Ejemplos básicos de manipulación de arreglos en C# Sumar elementos de un array Sinopsis: hacer la sumatoria de los elementos de un arreglo. Resultado&#8230; Suma de todos los elementos del array: 55 Descargar código fuente Creacion de histogramas Sinopsis: crear un histograma (barras a base de asteriscos) a partir de unos datos. Resultado&#8230; Elemento Valor [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Fejercicios-basicos-manejo-arreglos-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Ejemplos%20b%C3%A1sicos%20de%20manipulaci%C3%B3n%20de%20arreglos%20en%20C%23%22%20%7D);"></div>
<p>Ejemplos básicos de manipulación de arreglos en C#</p>
<h3>Sumar elementos de un array</h3>
<p><strong>Sinopsis</strong>: hacer la sumatoria de los elementos de un arreglo.</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class SumarArreglo
{
  // metodo Main
  static void Main( string[] args )
  {
     int[] a = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
     int total = 0;
     for ( int i = 0; i &lt; a.Length; i++ )
        total += a[ i ];
     Console.WriteLine( &quot;Suma de todos los elementos del array: &quot; + total);
  } // fin de Main
} // fin de la clase SumarArreglo</pre>
<p><strong>Resultado&#8230;</strong></p>
<div class="consola">Suma de todos los elementos del array: 55</div>
<p><a class="tooltip descargacodigo" title="Suma de elementos de arreglos en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Sumar+Arreglo+C+Sharp">Descargar código fuente</a></p>
<h3>Creacion de histogramas</h3>
<p><strong>Sinopsis</strong>: crear un histograma (barras a base de asteriscos) a partir de unos datos.<span id="more-2191"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
class Histograma
{
  // metodo Main
  static void Main( string[] args )
  {
     int[] n = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
     string salida = &quot;Elemento\tValor\tHistograma\n&quot;;
     // construir salida
     for ( int i = 0; i &lt; n.Length; i++ )
     {
        salida += &quot;\n&quot; + i + &quot;\t\t\t&quot; + n[ i ] + &quot;\t\t&quot;;
        for ( int j = 1; j &lt;= n[ i ]; j++ ) // imprimir una barra
           salida += &quot;*&quot;;
     }
     Console.WriteLine( salida);
  } // fin Main
} // fin de la clase Histograma</pre>
<p><strong>Resultado&#8230;</strong></p>
<div class="consola">Elemento	Valor	Histograma</p>
<p>0			19		*******************<br />
1			3		***<br />
2			15		***************<br />
3			7		*******<br />
4			11		***********<br />
5			9		*********<br />
6			13		*************<br />
7			5		*****<br />
8			17		*****************<br />
9			1		*</p></div>
<p><a class="tooltip descargacodigo" title="Histogramas en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Histograma+C+Sharp">Descargar código fuente</a></p>
<h3>Estadisticas de notas de estudiantes</h3>
<p><strong>Sinopsis</strong>: apartir de un arreglo de notas (puntajes) identificar la frecuencia de cada una de ellas entre todos los estudiantes.</p>
<pre class="brush: csharp; title: ; notranslate">using System;
class EncuestaEstudiantes
{
  // metodo Main
  static void Main( string[] args )
  {
     int[] respuestas = { 1, 2, 6, 4, 8, 5, 9, 7, 8, 10, 1,
        6, 3, 8, 6, 10, 3, 8, 2, 7, 6, 5, 7, 6, 8, 6, 7,
        5, 6, 6, 5, 6, 7, 5, 6, 4, 8, 6, 8, 10 };

     int[] frecuencia = new int[ 11 ];
     string salida = &quot;&quot;;

     // incrementar la frecuecia de para cada respuesta
     for ( int j = 0; j &lt; respuestas.Length; j++ )
        ++frecuencia[ respuestas[ j ] ];

     salida += &quot;Puntaje\tFrecuencia\n&quot;;

     // resultados
     for ( int puntaje = 1; puntaje &lt; frecuencia.Length; puntaje++ )
        salida += puntaje + &quot;\t\t&quot; + frecuencia[ puntaje ] + &quot;\n&quot;;

     Console.WriteLine( salida);

  } // fin Main

} // fin de la clase EncuestaEstudiantes</pre>
<p><strong>Resultado&#8230;</strong></p>
<div class="consola">Puntaje	Frecuencia<br />
1		2<br />
2		2<br />
3		2<br />
4		2<br />
5		5<br />
6		11<br />
7		5<br />
8		7<br />
9		1<br />
10		3</div>
<p><a class="tooltip descargacodigo" title="Encuesta Estudiantes en C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Estudiantes+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/ejercicios-basicos-manejo-arreglos-c-sharp/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Arreglos en C#</title>
		<link>http://casidiablo.net/arreglos-en-c-sharp/</link>
		<comments>http://casidiablo.net/arreglos-en-c-sharp/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 20:51:40 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[.net]]></category>
		<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[programación]]></category>
		<category><![CDATA[arreglos]]></category>
		<category><![CDATA[C++]]></category>
		<category><![CDATA[ejemplo]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=2179</guid>
		<description><![CDATA[La creación y manipulación de arrays en C# es similar a la de cualquier otro lenguaje de programación, aunque difiere un poco en cuanto a sintaxis (desde la perspectiva de un programador en Java). Tenemos entoces 2 maneras básicas de iniciar un arreglo: Al asignarle un tamaño estamos iniciándolo con los valores por defecto (en [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Farreglos-en-c-sharp%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Arreglos%20en%20C%23%22%20%7D);"></div>
<p>La creación y manipulación de arrays en C# es similar a la de cualquier otro lenguaje de programación, aunque difiere un poco en cuanto a sintaxis (desde la perspectiva de un programador en Java).</p>
<p>Tenemos entoces 2 maneras básicas de iniciar un arreglo:</p>
<ul>
<li>Al asignarle un tamaño estamos iniciándolo con los valores por defecto (en el caso de enteros, es cero)</li>
<li>En el momento de la declaración podemos asignar directamente los valores, poniéndolos dentro de corchetes ({ &#8230; }), separados por comas.</li>
</ul>
<h3>Ejemplo&#8230;</h3>
<p><span id="more-2179"></span></p>
<pre class="brush: csharp; title: ; notranslate">using System;
class InitArray
{
	// metodo main
	static void Main( string[] args )
	{
	   string salida = &quot;&quot;;
	   int[] x;            // declarar el array
	   x = new int[ 10 ];  // y asignarle un tamanio
     // iniciar un arreglo con tamanio y datos especificos
	   int[] y = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
	   const int TAMANIO_ARRAY = 10; // crear una constante
	   int[] z;                   // declarar un array de enteros
	   // asignar el tammanio con la constante
	   z = new int[ TAMANIO_ARRAY ];
	   // asignar valores al array
	   for ( int i = 0; i &lt; z.Length; i++ )
	      z[ i ] = 2 + 2 * i;
	   salida += &quot;Indice\tArray x\tArray y\tArray z\n&quot;;
	   // poner los valores del array en el string de salida
	   for ( int i = 0; i &lt; TAMANIO_ARRAY; i++ )
	      salida += i + &quot;\t\t&quot; + x[ i ] + &quot;\t\t&quot; + y[ i ] +
	         &quot;\t\t&quot; + z[ i ] + &quot;\n&quot;;
	Console.WriteLine(salida);
	} // fin de Main
} // fin de la clase IniciarArray</pre>
<h3>Salida del programa&#8230;</h3>
<div class="consola"><code>Indice Array x Array y Array z<br />
0      0      32      2<br />
1      0      27      4<br />
2      0      64      6<br />
3      0      18      8<br />
4      0      95      10<br />
5      0      14      12<br />
6      0      90      14<br />
7      0      70      16<br />
8      0      60      18<br />
9      0      37      20</code></div>
<h3>Descargar código fuente</h3>
<p><a class="tooltip descargacodigo" title="Iniciar Arrays C#::Contiene archivo fuente .cs, proyecto para Visual Studio y Proyecto para Monodevelop" href="http://casidiablo.net/descargar/Iniciar+Arreglos+C+Sharp">Descargar código fuente</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/arreglos-en-c-sharp/feed/</wfw:commentRss>
		<slash:comments>46</slash:comments>
		</item>
	</channel>
</rss>

