Popular Post

Archive for 2014

Imprimir la primer columna

By : Unknown
Crear y cargar una matriz de 3 filas por 4 columnas. Imprimir la primer fila. Imprimir la última fila e imprimir la primer columna.

Programa:

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

namespace Matriz3
{
    class Matriz3
    {
        private int[,] mat;

        public void Cargar() 
        {
            mat=new int[3,4];
            for(int f = 0; f < 3; f++) 
            {
                for(int c = 0; c < 4; c++) 
                {
                    Console.Write("Ingrese componente:");
                    string linea;
                    linea = Console.ReadLine();
                    mat[f,c]=int.Parse(linea);
                }
            }
        }

        public void PrimerFila() 
        {
         Console.WriteLine("Primer fila de la matriz:");
            for(int c = 0; c < 4; c++) 
            {
                Console.WriteLine(mat[0,c]);
            }
        }

        public void UltimaFila() 
        {
         Console.WriteLine("Ultima fila de la matriz:");
            for(int c = 0; c < 4; c++) 
            {
                Console.WriteLine(mat[2,c]);
            }
        }

        public void PrimerColumna() 
        {
         Console.WriteLine("Primer columna:");
            for(int f = 0; f < 3; f++) 
            {
                Console.WriteLine(mat[f,0]);
            }
        }

        static void Main(string[] args)
        {
            Matriz3 ma = new Matriz3();
            ma.Cargar();
            ma.PrimerFila();
            ma.UltimaFila();
            ma.PrimerColumna();
            Console.ReadKey();
        }
    }
}
Creamos una matriz de 3 filas y 4 columnas:
            mat=new int[3,4];
Luego de cargarla el primer método que codificamos es el que imprime la primer fila. Disponemos un for para recorrer las columnas, ya que la fila siempre será la cero. Como son cuatro los elementos de la primer fila el for se repite esta cantidad de veces:
         Console.WriteLine("Primer fila de la matriz:");
            for(int c = 0; c < 4; c++) 
            {
                Console.WriteLine(mat[0,c]);
            }
Para imprimir la última fila el algoritmo es similar, disponemos un for que se repita 4 veces y en el subíndice de la fila disponemos el valor 2 (ya que la matriz tiene 3 filas):
         Console.WriteLine("Ultima fila de la matriz:");
            for(int c = 0; c < 4; c++) 
            {
                Console.WriteLine(mat[2,c]);
            }
Para imprimir la primer columna el for debe repetirse 3 veces ya que la matriz tiene 3 filas. Dejamos constante el subíndice de la columna con el valor cero:
         Console.WriteLine("Primer columna:");
            for(int f = 0; f < 3; f++) 
            {
                Console.WriteLine(mat[f,0]);
            }

Imprimir la diagonal principal

By : Unknown
Crear y cargar una matriz de 4 filas por 4 columnas. Imprimir la diagonal principal.
              x    -    -    -
              -    x    -    -
              -    -    x    -
              -    -    -    x

Programa:

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

namespace Matriz2
{
    class Matriz2
    {
        private int[,] mat;

        public void Cargar() 
        {
            mat=new int[4,4];
            for(int f = 0; f < 4; f++) 
            {
                for(int c = 0; c<4; c++) 
                {
                    Console.Write("Ingrese componente:");
                    string linea;
                    linea = Console.ReadLine();
                    mat[f, c] = int.Parse(linea);
                }
            }
        }

        public void ImprimirDiagonalPrincipal() 
        {
            for(int k = 0; k < 4; k++) 
            {
                Console.Write(mat[k,k]+" ");
            }
            Console.ReadKey();
        }

        static void Main(string[] args)
        {
            Matriz2 ma = new Matriz2();
            ma.Cargar();
            ma.ImprimirDiagonalPrincipal();
        }
    }
}
La definición, creación y carga de la matriz no varían con el ejemplo anterior.
Para imprimir la diagonal principal de la matriz lo más conveniente es utilizar un for que se repita 4 veces y disponer como subíndice dicho contador (los elementos de la diagonal principal coinciden los valores de la fila y columna):
            for(int k = 0; k < 4; k++) 
            {
                Console.Write(mat[k,k]+" ");
            }

Imprimir la matriz completa y la última fila

By : Unknown
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir la matriz completa y la última fila.

Programa:

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

namespace Matriz5
{
    class Matriz5
    {
        private int[,] mat;

        public void Cargar() 
        {
            Console.Write("Cuantas fila tiene la matriz:");
            string linea;
            linea=Console.ReadLine();
            int filas=int.Parse(linea);
            Console.Write("Cuantas columnas tiene la matriz:");
            linea=Console.ReadLine();
            int columnas=int.Parse(linea);
            mat=new int[filas,columnas];
            for(int f = 0; f < mat.GetLength(0); f++) 
            {
                for (int c = 0; c < mat.GetLength(1); c++)
                {
                    Console.Write("Ingrese componente:");
                    linea = Console.ReadLine();
                    mat[f,c] = int.Parse(linea);
                }
            }
        }

        public void Imprimir() 
        {
            for(int f = 0; f < mat.GetLength(0); f++)
            {
                for(int c = 0; c < mat.GetLength(1); c++)
                {
                    Console.Write(mat[f,c]+" ");
                }
                Console.WriteLine();
            }
        }

        public void ImprimirUltimaFila() 
        {
         Console.WriteLine("Ultima fila");
            for(int c = 0; c < mat.GetLength(1); c++)
            {
                 Console.Write(mat[mat.GetLength(0)-1,c]+" ");
            }
        }

        static void Main(string[] args)
        {
            Matriz5 ma = new Matriz5();
            ma.Cargar();
            ma.Imprimir();
            ma.ImprimirUltimaFila();
            Console.ReadKey();
        }
    }
}
En este ejemplo cada vez que se ejecute el programa el tamaño de la matriz lo define el usuario, para ello ingresamos por teclado dos enteros y seguidamente procedemos a crear la matriz con dichos valores:
            Console.Write("Cuantas fila tiene la matriz:");
            string linea;
            linea=Console.ReadLine();
            int filas=int.Parse(linea);
            Console.Write("Cuantas columnas tiene la matriz:");
            linea=Console.ReadLine();
            int columnas=int.Parse(linea);
            mat=new int[filas,columnas];
Ahora las estructuras repetitivas las acotamos preguntando a la misma matriz la cantidad de filas y la cantidad de columnas:
            for(int f = 0; f < mat.GetLength(0); f++) 
            {
                for (int c = 0; c < mat.GetLength(1); c++)
                {
                    Console.Write("Ingrese componente:");
                    linea = Console.ReadLine();
                    mat[f,c] = int.Parse(linea);
                }
            }
El algoritmo de impresión es idéntico al visto anteriormente con la modificación de las condiciones de los for:
            for(int f = 0; f < mat.GetLength(0); f++)
            {
                for(int c = 0; c < mat.GetLength(1); c++)
                {
                    Console.Write(mat[f,c]+" ");
                }
                Console.WriteLine();
            }
Para imprimir la última fila debemos disponer un valor fijo en el subíndice de la fila (en este caso no podemos disponer un número fijo sino preguntarle a la misma matriz la cantidad de filas y restarle uno ya que las filas comienzan a numerarse a partir de cero: mat[mat.GetLength(0)-1,c]
También la condición del for debemos preguntar a la matriz la cantidad de columnas mat.GetLength(1):
         Console.WriteLine("Ultima fila");
            for(int c = 0; c < mat.GetLength(1); c++)
            {
                 Console.Write(mat[mat.GetLength(0)-1,c]+" ");
            } 

Numero mayor matriz

By : Unknown
Crear una matriz de n * m filas (cargar n y m por teclado) Imprimir el mayor elemento y la fila y columna donde se almacena.

Programa:

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

namespace Matriz6
{
    class Matriz6
    {
        private int[,] mat;

        public void Cargar() 
        {
            Console.Write("Cuantas fila tiene la matriz:");
            string linea;
            linea=Console.ReadLine();
            int filas=int.Parse(linea);
            Console.Write("Cuantas columnas tiene la matriz:");
            linea=Console.ReadLine();
            int columnas=int.Parse(linea);
            mat=new int[filas,columnas];
            for(int f = 0; f < mat.GetLength(0); f++)
            {
                for(int c = 0; c  mayor) 
                    {
                        mayor=mat[f,c];
                        filamay=f;
                        columnamay=c;
                    }
                }
            }
            Console.WriteLine("El elemento mayor es:"+mayor);
            Console.WriteLine("Se encuentra en la fila:"+filamay+ " y en la columna: "+columnamay);
            Console.ReadLine();
        }

        static void Main(string[] args)
        {
            Matriz6 ma = new Matriz6();
            ma.Cargar();
            ma.ImprimirMayor();
        }
    }
}
Para obtener el mayor elemento de la matriz y la fila y columna donde se ubica debemos inicializar una variable mayor con el elemento de la fila cero y columna cero (esto lo hacemos suponiendo que en dicha posición se almacena el mayor):
         int mayor=mat[0,0];
         int filamay=0;
         int columnamay=0;
Luego mediante dos for recorremos todos los elementos de la matriz y cada vez que encontramos un elemento mayor al actual procedemos a actualizar la variable mayor y la posición donde se almacena:
            for(int f = 0; f < mat.GetLength(0); f++)
            {
                for(int c = 0; c < mat.GetLength(1); c++) 
                {
                    if (mat[f,c] > mayor) 
                    {
                        mayor=mat[f,c];
                        filamay=f;
                        columnamay=c;
                    }
                }
            }

Nombres

By : Unknown
using System;

namespace Arrays
{
    class ArraysApp
    {
        static void Main()
        {
            string[] nombres; // Declaración del array
            ushort num=0;

            do
            {
                try
                {
                    Console.Write("¿Cuántos nombres vas a introducir? ");
                    num=UInt16.Parse(Console.ReadLine());
                }
                catch
                {
                    continue;
                }
            } while (num==0);

            nombres=new string[num]; // Instanciación del array

            for (int i=0; i<num; i++)
            {
                Console.Write("Escribe el nombre para elemento {0}: ", i);
                nombres[i]=Console.ReadLine();
            }

            Console.WriteLine("Introducidos los {0} nombres", num);
            Console.WriteLine("Pulsa INTRO para listarlos");

            string a=Console.ReadLine();

            for (int i=0; i<num; i++)
            {
                Console.WriteLine("Elemento {0}: {1}", i, nombres[i]);
            }

            a=Console.ReadLine();
        }
    }
}

Veamos ahora la salida en la consola (en rojo, como siempre, lo que se ha escrito durante la ejecución del programa):

¿Cuántos nombres vas a introducir? 3
Escribe el nombre para el elemento 0: Juanito
Escribe el nombre para el elemento 1: Jaimito
Escribe el nombre para el elemento 2: Joselito
Introducidos los 3 nombres
Pulsa INTRO para listarlos
Elemento 0: Juanito
Elemento 1: Jaimito
Elemento 2: Joselito

En este pequeño programa hemos declarado un array y lo hemos instanciado después de haber preguntado al usuario cuántos elementos iba a tener. Como veis, hemos utilizado un bucle for para recoger todos los valores que hay que meter en el array. Quiero que prestéis especial atención a cómo hemos introducido los valores en el array: en la línea "nombres[i] = Console.ReadLine()" lo que hacemos es que al elemento "i" del array le asignamos lo que devuelva el método ReadLine. Como "i" tomará valores entre 0 y el número total de elementos menos uno rellenaremos el array completo (fijaos en la condición del bucle, que es i<num, es decir, que si i es igual a num el bucle ya no se itera). Después tenemos otro bucle for para recorrer todo el array y escribir sus valores en la consola. En definitiva, para acceder a un elemento del array se usa la sintaxis "array[índice]".

Numero mayor

By : Unknown
Ahora se trata de un método que recibe un array de numeros enteros y devuelve un numero entero, que será el mayor de los elementos del array. 
public static int Mayor(int[]numeros)
{
    // Primero asignamos al entero mayor el primer
    // elemento del array
    int mayor = numeros[0];
    //Ahora recorremos el array como en el ejemplo 1
    for(int i = 0 ; i< numeros.Length ; i++)
    // Vamos preguntando en cada posicion del array si el elemento que contiene es mayor que la variable "mayor".
    if(numeros[i] > mayor)
    // Si se cumple, entonces asignamos a mayor este nuevo elemento.
         mayor = numeros[i];
    // Cuando terminamos de recorrer el array, retornamos la variable mayor.
    return mayor;
}
 
Podríamos usar este método de la siguiente forma:
int [] numeros = {6,1,5,6,4,8,6,9,7,4,14,26};
int max = Mayor(numeros);
Console.WriteLine(max);
Bueno, hasta aquí este breve introducción sobre el manejo de arrays. Si quieres seguir aprendiendo, puedes ver unos cuantos ejecicios resueltos de array en C# que he ido publicando en este mismo blog. Si tienen alguna pregunta en los comentarios.
 

Buscar número entero

By : Unknown
Hagamos un método o función, que diga si un número entero está o no dentro de un array. para lo cual debe estar creado previamente el vector y llenado todas sus posiciones 

public static bool Pertenece (int numero, int [] array)
{
    // Recorremos todas las posiciones del array desde
    // 0 hasta "array.Lenght", que nos da la longitud.
    for(int i=0; i<array.Length; i++)
    {
        // Preguntamos si el elemento en la posición i del array es igual al número que buscamos.
        if(array[i]==numero)
        // En caso de que encontremos el número devolvemos true.
             return true;
     }
    // Retornamos false si no está el número
    return false
}
 
Para probar este método podemos escribir algo así:
int [] numeros = {6,1,5,6,4,8,6,9,7,4,14,26};
bool dime= Pertenece(8, numeros);
Console.WriteLine(dime);
Esto imprimirá en la consola true, ya que 8 está en el array.
 

Cadenas nulas y cadenas vacías

By : Unknown
Una cadena vacía es una instancia de un objeto System.String que contiene cero caracteres. Las cadenas vacías se utilizan habitualmente en distintos escenarios de programación para representar un campo de texto en blanco. Puede realizar llamadas a métodos en cadenas vacías porque son objetosSystem.String válidos. Las cadenas vacías se inicializan tal y como se indica a continuación:
string s = String.Empty;
Por el contrario, una cadena nula no hace referencia a una instancia de un objeto System.String y cualquier intento de llamar a un método en una cadena nula provoca una excepción NullReferenceException. Sin embargo, puede utilizar cadenas nulas en operaciones de concatenación y comparación con otras cadenas. Los ejemplos siguientes muestran algunos casos en los que se hace referencia a una cadena nula y no se produce una excepción:
static void Main()
{
    string str = "hello";
    string nullStr = null;
    string emptyStr = String.Empty;

    string tempStr = str + nullStr;
    // Output of the following line: hello
    Console.WriteLine(tempStr);

    bool b = (emptyStr == nullStr);
    // Output of the following line: False
    Console.WriteLine(b);

    // The following line creates a new empty string.
    string newStr = emptyStr + nullStr;

    // Null strings and empty strings behave differently. The following
    // two lines display 0.
    Console.WriteLine(emptyStr.Length);
    Console.WriteLine(newStr.Length);
    // The following line raises a NullReferenceException.
    //Console.WriteLine(nullStr.Length);

    // The null character can be displayed and counted, like other chars.
    string s1 = "\x0" + "abc";
    string s2 = "abc" + "\x0";
    // Output of the following line: * abc*
    Console.WriteLine("*" + s1 + "*");
    // Output of the following line: *abc *
    Console.WriteLine("*" + s2 + "*");
    // Output of the following line: 4
    Console.WriteLine(s2.Length);
}

Tener acceso a los caracteres individuales

By : Unknown
Puede utilizar la notación de matrices con un valor de índice para obtener acceso de sólo lectura a caracteres individuales, como en el ejemplo siguiente:
string s5 = "Printing backwards";

for (int i = 0; i < s5.Length; i++)
{
    System.Console.Write(s5[s5.Length - i - 1]);
}
// Output: "sdrawkcab gnitnirP"


Si los métodos String no proporcionan la funcionalidad necesaria para modificar caracteres individuales en una cadena, puede utilizar un objeto StringBuilderpara modificar los caracteres individuales "en contexto" y crear a continuación una nueva cadena para almacenar los resultados mediante los métodosStringBuilder. En el ejemplo siguiente, suponga que debe modificar la cadena original de una forma determinada y almacenar a continuación los resultados para su uso futuro:
string question = "hOW DOES mICROSOFT wORD DEAL WITH THE cAPS lOCK KEY?";
System.Text.StringBuilder sb = new System.Text.StringBuilder(question);

for (int j = 0; j < sb.Length; j++)
{
    if (System.Char.IsLower(sb[j]) == true)
        sb[j] = System.Char.ToUpper(sb[j]);
    else if (System.Char.IsUpper(sb[j]) == true)
        sb[j] = System.Char.ToLower(sb[j]);
}
// Store the new string.
string corrected = sb.ToString();
System.Console.WriteLine(corrected);
// Output: How does Microsoft Word deal with the Caps Lock key?            

Subcadenas

By : Unknown
Una subcadena es cualquier secuencia de caracteres incluida en una cadena. Utilice el método Substring para crear una nueva cadena a partir de un segmento de la cadena original. Puede buscar una o más apariciones de una subcadena con el método IndexOf. Utilice el método Replace para reemplazar todas las apariciones de una subcadena especificada por una cadena nueva. Al igual que el método Substring, Replace devuelve en realidad una cadena nueva y no modifica la cadena original. Para obtener más información, vea Cómo: Buscar cadenas mediante los métodos String (Guía de programación de C#) y Cómo: Modificar el contenido de cadenas (Guía de programación de C#).
string s3 = "Visual C# Express";
System.Console.WriteLine(s3.Substring(7, 2));
// Output: "C#"

System.Console.WriteLine(s3.Replace("C#", "Basic"));
// Output: "Visual Basic Express"

// Index values are zero-based
int index = s3.IndexOf("C");
// index = 7

- Copyright © Programación #5 - Date A Live - Powered by Blogger - Designed by Johanes Djogan -