tema: “matrices y cadenas en c#”....tema: “matrices y cadenas en c#”. implementar arreglos...
Post on 25-Jan-2020
16 Views
Preview:
TRANSCRIPT
251
Facultad: Ingeniería
Escuela: Ingeniería en Computación
Asignatura: Programación I
Tema: “Matrices y Cadenas en C#”.
Implementar arreglos de dos dimensiones.
Resolver problemas aplicando matrices.
Mostrar la implementación y el uso de cadenas de texto.
Identificar las funciones de tratamiento de cadenas en C#.
Arreglos Multidimensionales
Los arreglos multidimensionales de dos dimensiones se utilizan con frecuencia para representar tablas
de valores, que consisten en información ordenada en filas y columnas.
Para identificar una tabla en particular debemos especificar dos índices. Por convención, el primero
identifica la fila del elemento y el segundo su columna.
Los arreglos que requieren dos índices para identificar un elemento específico se llaman arreglos
bidimensionales.
Sintaxis para declarar y crear los arreglos bidimensionales
Aprendamos la declaración de matrices a través de un ejemplo. Como recordamos, cuando trabajamos
con arreglos vamos a hacer uso de los signos de agrupación llamados corchetes, ya que con ello le
Objetivos
Introducción
252
especificamos al compilador que estamos trabajando con variables de tipo arreglo que han sido
instanciados mediante la palabra clave new.
Los tipos de datos que se pueden utilizar en los arreglos son los que hemos estudiando en las prácticas
anteriores, por lo tanto en este ejemplo utilizamos un tipo de dato int:
int [,] b;
b = new int[ 3,4 ]
En el ejemplo anterior estamos creando una matriz de 3 filas y 4 columnas.
Al igual que en los arreglos de una dimensión se utilizaba un bucle (generalmente for) para cargar u
operar los elementos de un vector, así también en las matrices vamos a utilizar bucles, con la diferencia
que ahora utilizaremos un for para las filas y otro for para las columnas (for anidados).
Cadenas en C#
Una definición de cadena es la siguiente: Serie de caracteres tratados como una sola unidad.
Una cadena puede incluir letras, dígitos y varios caracteres especiales (+, -, *, /, $, entre otros). Una
cadena en C# es una matriz de caracteres que se declara utilizando la palabra clave String. Un literal de
cadena se declara utilizando las comillas, como se muestra en el siguiente ejemplo:
String S = “Estamos en la guía 10”;
Los objetos de cadena son inmutables, lo que significa que no se pueden cambiar una vez creados. Los
métodos que actúan sobre las cadenas, devuelven los nuevos objetos de cadena.
En muchas ocasiones es preciso trabajar con cadenas de caracteres en las diferentes aplicaciones que
se desarrollan, por eso es muy necesario conocer algunas de las funciones más utilizadas para el
tratamiento de estas estructuras.
253
Guía de laboratorio No. 10.
Computadora con Visual Studio 2013 o superior.
Dispositivo de almacenamiento (USB).
Programa que carga una matriz de una dimensión establecida y muestra los
valores en pantalla.
1 {
2 Console.Title = "Ejemplo1 de una matriz 3x4";
3 int[,] Matrix = new int[3,4];
4 //Cargar y visualizar una matriz
5 for (int filas=0; filas<3; filas++)
6 {// for externo para filas
7 for (int columnas=0; columnas<4; columnas++)
8 {// for interno para columnas
9 Console.Write("Ingrese el valor de la posición [" + filas + "," + columnas + "]: ");
10 Matrix[filas,columnas]=int.Parse(Console.ReadLine());
11 }
12 }
13 Console.Write("\n");
14 Console.Write("Ahora visualizamos la matrix digitada....");
15 Imprimir(Matrix);
16 Console.ReadKey();
17 }
18 static void Imprimir(int[,] Matrix)
19 {
20 for (int filas = 0; filas < 3; filas++)
21 {
22 Console.Write("\n");
23 for (int columnas = 0; columnas < 4; columnas++)
24 {
25 Console.Write("\t" + Matrix[filas, columnas] + "\t");
26 }
27 }
28 }
Material y Equipo
Procedimiento
Ejemplo1
254
Programa que suma dos matrices de 2 x 3.
1 {
2 Console.Title = "Ejemplo2 Sumando 2 matrices 2x3";
3 //Declarando las matrices
4 int[,] Matriz1 = new int[2,3];
5 int[,] Matriz2 = new int[2,3];
6 int[,] Matriz3= new int[2,3];
7 //Digitamos la primer matriz
8 Console.Write("Digitamos la primer matriz [1]");
9 Console.Write("\n");
10 for (int i = 0; i < 2; i++)
11 {// for externo para filas
12 for (int j = 0; j < 3; j++)
13 {// for interno para columnas
14 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");
15 Matriz1[i,j] = int.Parse(Console.ReadLine());
16 }
17 }
18 Console.Write("\n");
19 //Digitamos la segunda matriz
20 Console.Write("Digitamos la segunda matriz [2]");
21 Console.Write("\n");
22 for (int i = 0; i < 2; i++)
23 {// for externo para filas
24 for (int j = 0; j < 3; j++)
25 {// for interno para columnas
26 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");
27 Matriz2[i, j] = int.Parse(Console.ReadLine());
28 }
29 }
30 Console.Write("\n");
31 //Realizamos el cálculo de la suma de las 2 matrices
Ejemplo2
255
32 Console.Write("Sumando las 2 matrices anteriores");
33 Console.Write("\n");
34 for (int i = 0; i < 2; i++)
35 {// for externo para filas
36 for (int j = 0; j < 3; j++)
37 {// for interno para columnas
38 Matriz3[i,j] = Matriz1[i,j] + Matriz2[i,j];
39 }
40 }
41 //Llamamos a un procedimiento para visualizar el resultado
42 Mostrar(Matriz3);
43 Console.ReadKey();
44 }
45 static void Mostrar(int[,] Matriz3)
46 {
47 for (int i = 0; i < 2; i++)
48 {
49 Console.Write("\n");
50 for (int j = 0; j < 3; j++)
51 {
52 Console.Write("\t" + Matriz3[i,j] + "\t");
53 }
54 }
55 }
256
Se tiene la siguiente información:
Nombres de 4 operarios.
Ingresos en concepto de sueldo, cobrado por cada operario, en los últimos 3 meses.
Realizar un programa para:
a. Realizar el ingreso de la información mencionada.
b. Generar un vector que contenga el ingreso acumulado en sueldos en los últimos 3 meses para
cada operario.
c. Mostrar por pantalla el total pagado en sueldos a todos los operarios en los últimos 3 meses.
d. Obtener el nombre del operario que tuvo el mayor ingreso acumulado
1 {
2 Console.ForegroundColor = ConsoleColor.Black;
3 Console.BackgroundColor = ConsoleColor.White;
4 Console.Title = "Ejemplo3 de matrices con vectores";
5 Console.Clear();
6 String[] empleados = new String[4];
7 int[,] sueldos = new int[4,3];
8 int[] sueldostot = new int[4];
9 int x = empleados.Length;
10 Console.WriteLine("el valor de x es: " + x);
11 //Primera Parte
12 for (int f=0; f<x; f++)
13 {
14 Console.Write("Ingrese el nombre del operario "+(f+1)+": ");
15 empleados[f] = Console.ReadLine();
16 int y = sueldos.GetLength(1); // devuelve el tamaño de la columna
17 for (int c=0; c<y; c++)
18 {
19 Console.Write("Ingrese sueldo " + (c + 1) + ": ");
20 sueldos[f,c] = int.Parse(Console.ReadLine());
21 }
22 }
23 //Segunda Parte
24 int z = sueldos.GetLength(0); // devuelve el tamaño de la fila
25 for (int f=0;f<z;f++)
26 {
27 int suma=0;
28 int e = sueldos.GetLength(1);
29 for (int c=0;c<e;c++)
30 {
31 suma = suma + sueldos[f, c];
32 }
33 sueldostot[f] = suma;
34 }
35 //Tercera Parte
Ejemplo3
257
36 Console.WriteLine("\n");
37 Console.WriteLine("-----Estadistica de Sueldos-----");
38 Console.WriteLine("Total de sueldos pagados por Operario.");
39 for (int f = 0; f< sueldostot.Length; f++)
40 {
41 Console.WriteLine(empleados[f] + " -> " + "\t $" + sueldostot[f]);
42 }
43 //Cuarta Parte
44 int may = sueldostot[0];
45 string nom = empleados[0];
46 for (int f = 0; f < sueldostot.Length; f++)
47 {
48 if (sueldostot[f] > may)
49 {
50 may = sueldostot[f];
51 nom = empleados[f];
52 }
53 }
54 Console.WriteLine("El operario con mayor sueldo es " + nom + " que tiene un sueldo de
$" + may);
55 Console.ReadKey();
56 }
258
Hacer un programa o algoritmo que permita eliminar un alumno de un salón de
clase, dada una posición indicada.
Por ejemplo tenemos una matriz 3 x 3
1 1 1
1 1 1
1 1 1
Y queremos eliminar la posición [0,2], nos daría la siguiente respuesta:
1 1 0
1 1 1
1 1 1
1 {
2 Console.Title = "Ejemplo4 de Matrices";
3 Console.ForegroundColor = ConsoleColor.Black;
4 Console.BackgroundColor = ConsoleColor.White;
5 Console.Clear();
6 int f,c;
7 int[,] M = new int[3,3];
8 Console.Write("Digitamos la matriz");
9 Console.Write("\n");
10 for(int i=0;i<3;i++)
11 {
12 for(int j=0;j<3;j++)
13 {
14 Console.Write("Ingrese el elemento [" + i + "," + j + "]: ");
15 M[i, j] = int.Parse(Console.ReadLine());
16 }
17 }
18 Console.WriteLine("\n");
19 for (int i = 0; i < 3; i++)
20 {
21 Console.Write("\t\t");
22 for (int j = 0; j < 3; j++)
23 {
24 Console.Write(M[i,j] + " ");
25 }
26 Console.WriteLine("\n");
27 }
28 Console.WriteLine("Ingrese la posicion del alumno a eliminar");
29 Console.Write("Ingresa fila: ");
30 f = int.Parse(Console.ReadLine());
31 Console.Write("Ingresa columna: ");
32 c = int.Parse(Console.ReadLine());
33 M[f,c]=0;
34 Console.WriteLine("\n");
35 for (int i = 0; i < 3; i++)
Ejemplo4
259
36 {
37 Console.Write("\t\t");
38 for (int j = 0; j < 3; j++)
39 {
40 Console.Write(M[i, j] + " ");
41 }
42 Console.WriteLine("\n");
43 }
44 Console.ReadKey();
45 }
Función de comparación de cadenas Equals().
Este programa comprueba que el usuario y contraseña sean los correctos; de lo
contrario, al tercer intento cierra el programa.
1 static void Main(string[] args)
2 {
3 Login();
4 Console.ReadKey();
5 }
6 static void Login()
7 {
8 String Usuario = "user";
9 String Password = "123456";
10 Console.Title = "L O G I N";
11 // Con la siguiente funcion mostramos fecha y hora del sistema
12 Console.WriteLine("Fecha y hora del sistema: [" + DateTime.Now.ToString() + "]");
13 Console.ReadLine();
Ejemplo5
260
14 for (int i = 0; i < 3; i++)
15 {
16 Console.Clear();
17 Console.WriteLine("Intento: [" + (i + 1) + "]");
18 Console.Write("Usuario: ");
19 String User = Console.ReadLine();
20 Console.Write("Contraseña: ");
21 String Pass = Console.ReadLine();
22 if ((User.Equals(Usuario)) && (Pass.Equals(Password)))
23 {
24 Console.WriteLine("\n");
25 Console.WriteLine("BIENVENID@ AL PROGRAMA.... ");
26 break;
27 }
28 else
29 {
30 Console.WriteLine("\n");
31 Console.WriteLine("Saliendo del programa...intente más tarde...");
32 }
33 }
34 }
261
En este ejemplo, utilizamos la función Replace() para sustituir un carácter
específico por otro carácter.
1 {
2 String cadena, cambio, opcion;
3 do
4 {
5 Console.Clear();
6 Console.WriteLine("Escribe una oracion: ");
7 cadena = Console.ReadLine();
8 cambio = cadena.Replace("a", "*");
9 Console.WriteLine("\t" + cambio);
10 Console.WriteLine("Desea ingresar otra oracion? (s/n)");
11 opcion = Console.ReadLine();
12 }while (opcion=="S" || opcion=="s");
13 Console.ReadKey();
14 }
15 }
En este ejemplo vamos a desarrollar una pequeña aplicación que verifica si una
frase ingresada es palíndroma. Una frase palíndroma es aquella que se lee igual
de izquierda a derecha y viceversa.
1 {
2 Console.Title = "Digitar una palabra para averiguar si es palindroma";
3 String op;
4 do
5 {
6 Console.Clear();
7 Palindroma();
8 Console.WriteLine("Desea verificar otra frase? (s/n)");
9 op = Console.ReadLine();
10 } while (op == "S" || op == "s");
11 Console.ReadKey();
12 }
13 static void Palindroma()
14 {
15 String cadena1 = "", cadena2 = "";
16 Console.WriteLine("Escribe una palabra: ");
17 cadena1 = Console.ReadLine();
18 for (int i = cadena1.Length - 1; i >= 0; i--)
19 {
20 cadena2 = cadena2 + cadena1[i];
21 }
22 Console.WriteLine("La cadena invertida es: " + cadena2);
23 if (String.Equals(cadena1, cadena2))
24 {
25 Console.WriteLine("La cadena " + cadena1 + " es palindroma...");
Ejemplo6
Ejemplo7
262
26 }
27 else
28 {
29 Console.WriteLine("La cadena " + cadena1 + " no es palindroma...");
30 }
31 }
32 }
Funciones para convertir cadenas a mayúsculas y minúsculas. Además utilizamos
la función que calcula el número de caracteres de una frase cualquiera (incluye
espacios en blanco como caracteres).
1 {
2 Console.Title = "Programa que convierte una oración";
3 String cad1, cad2, cad3;
4 int largo;
5 Console.WriteLine("Digitar una frase que tenga letras mayúsculas y
minúsculas: ");
6 cad1 = Console.ReadLine();
7 // la siguiente función calcula el número de caracteres
8 largo = cad1.Length;
9 Console.WriteLine("La frase [" + cad1 + "] tiene [" + largo + "]
caracteres.");
10 // la siguiente función convierte la frase a letras minúsculas
11 cad2 = cad1.ToLower();
12 Console.WriteLine("La frase en letras minúsculas es : " + cad2);
13 // la siguiente función convierte la frase a letras minúsculas
14 cad3 = cad1.ToUpper();
15 Console.WriteLine("La frase en letras mayúsculas es : " + cad3);
16 Console.ReadKey();
17 }
18 }
1. Desarrollar una aplicación que pida al usuario la dimensión de una matriz, la cargue y le diga cuántos
de los elementos ingresados fueron positivos, negativos y ceros.
2. Desarrollar una aplicación que busque el mayor y el menor elemento en una matriz.
3. Escriba un programa que realice la captura de datos de una matriz de números enteros con (3x4)
elementos y luego saque el promedio de la matriz.
4. Comparar dos cadenas de caracteres haciendo uso de la función Compare().
5. Concatenar cuatro cadenas de caracteres utilizando la función Concat().
6. Invertir los elementos de un vector tipo String.
Análisis de Resultados
Ejemplo8
263
1. Desarrollar una aplicación utilizando funciones o procedimientos para buscar cualquier elemento
dentro de una matriz y mencione además la posición en donde se encuentra.
2. Utilizando un vector tipo carácter y una matriz numérica, realice un programa que lea los nombres
de un grupo de alumnos y 3 notas, almacena las notas en la matriz. Calcule el promedio para cada
alumno y luego muestre el listado de los alumnos con las notas respectivas.
Deitel, Harvey M. y Paul J. Deitel, Cómo Programar en C#, Segunda Edición, México, 2007.
Investigación Complementaria
Bibliografía
top related