Ejercicio 30: Dada las matrices A y B con números enteros y positivos generados Randomicamente, de igual números de filas y columnas. Hacer el diagrama y el programa que permita crear e imprimir la suma de las dos matrices, y el resultado almacenarlo en una nueva matriz llamada C. De esta manera estaríamos simulando la suma de matrices de n filas x n columnas. Solución: Miremos primero como se efectúa la suma de matrices. Supongamos que se tienen las siguientes matrices A y B, que se muestran a continuación, y observemos el proceso de la suma. Matriz A 1 8 9 3 10 7 5 15 8 Matriz B 6 20 0 + 15 2 6 12 3 7 13 4 8 Matriz C 1 5 9 = 16 10 15 15 13 14 18 19 16 7 25 9 La suma se efectúa de la siguiente manera: C [1,1]=A [1,1]+B [1,1]=1+15= 16; C [1,2]=A [1,2]+B [1,2]=3+12= 15; C [1,3]=A [1,3]+B [1,3]=5+13= 18; C [1,4]=A [1,4]+B [1,4]=6+1= 7; Y así sucesivamente hasta terminar con las demás filas. Variables de entrada de datos f,c= Variables que identifican el numero de filas y de columnas de las matrices A y B. Variables de proceso A[i,j]= Matriz que almacenara numeros enteros y positivos generados aleatoriamente, numeros comprendidos en un rango de 0 a 99. B[i,j]= Matriz que almacenara numeros enteros y positivos generados aleatoriamente, numeros comprendidos en un rango de 0 a 99. C[i,j]= Matriz que almacenara la suma de los numeros de las matrices A y B. i, j = Variables subíndices de las matrices A,B,C. num= Variable que almacena temporalmente el numero generado aleatoriamente. Inicio Random num= Random f,c A [f, c] =num (0, 99) B [f, c] =num (0, 99) A [f, c] B [f, c] i= 1, f j= 1, c C [i, j]=A [i, j]+B [i, j] Matriz C [i, j] Fin PRIMERA PARTE: Aplicación Consola Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola, le damos el nombre al proyecto, en este caso “suma_matrices_consola”, luego aceptar, tal y como se muestra en la siguiente pantalla. Pantalla nuevo proyecto Visual csharp Después de esto tendremos la pantalla en donde podremos digitar el código correspondiente para el ejercicio que estamos trabajando. La pantalla es la siguiente. Pantalla proyecto suma_matrices_consola Visual csharp Nos ubicamos dentro de las llaves que encierran al método static void Main(string[] args) y digitamos el siguiente codigo. int f,c;//Indican el numero de filas y columnas de las matrices int i, j;//Variables de los subindices de la matriz // Definimos las matrices int[,] A = new int[100, 100];//Matriz A de cien posiciones int[,] B = new int[100, 100];//Matriz B de cien posiciones int[,] C = new int[100, 100];//Matriz C de cien posiciones //Definimos la semilla para la generacion de los numeros aleatorios Random num = new Random(DateTime.Now.Millisecond); //Definimos el titulo del proyecto Console.Title = "Suma de Matrices en CSharp"; Console.WriteLine("\n"); //Ingresamos el numero de filas de las matrices Console.Write("Ingrese el numero de filas: "); f = int.Parse(Console.ReadLine()); //Ingresamos el numero de columnas de las matrices Console.Write("Ingrese el numero de columnas: "); c = int.Parse(Console.ReadLine()); //Hacemos el llenado de la matriz A Randomicamente for (i = 1; i <=f; i++) { for (j = 1; j <=c; j++) { A[i, j] = num.Next(0, 99); } } //Hacemos el llenado de la matriz B Randomicamente for (i = 1; i <= f; i++) { for (j = 1; j <= c; j++) { B[i, j] = num.Next(0, 99); } } Console.WriteLine(); Console.WriteLine("Matriz A Generada Inicialmente"); Console.WriteLine("------------------------------"); //Imprimimos la matriz A for (i = 1; i <=f; i++) { for (j = 1; j <=c; j++) { Console.Write(" {0 } ", A[i, j]); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Matriz B Generada Inicialmente"); Console.WriteLine("------------------------------"); //Imprimimos la matriz B for (i = 1; i <= f; i++) { for (j = 1; j <= c; j++) { Console.Write(" {0 } ", B[i, j]); } Console.WriteLine(); } Console.WriteLine(); //Efectuamos el recorrido de las matrices para hallar la suma for (i = 1; i <=f; i++) { for (j = 1; j <=c; j++) { //Realizamos la suma de A + B en C C[i,j] = A[i, j]+B[i, j]; } } Console.WriteLine(); //Imprimimos la matriz C Console.WriteLine( "Matriz C"); Console.WriteLine("------------------------------"); for (i = 1; i <= f; i++) { for (j = 1; j <= c; j++) { Console.Write(" {0 } ", C[i, j]); } Console.WriteLine(); } Console.ReadLine(); Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la pantalla en donde podremos digitar el numero de filas y de columnas de las matrices A y B, para luego realizar las suma de estas dos y ser almacenada en la matriz C, tal y como se muestra a continuación en la siguientes pantallas. Pantalla proyecto suma_matrices_consola Visual csharp Pantalla proyecto suma_matrices_consola Visual csharp Ejercicio 31: Con las mismas matrices del ejercicio anterior, desarrollaremos el proceso de multiplicar dos matrices y su resultado sera almacenado en otra matriz. Solucion: Veamos primero como se dearrolla el proceso de multiplicacion de matrices. Si bien es cierto que tiene algo de parecido a la suma, no es igual, el procedimiento es diferente, ademas debe existir un requisito especial, el cual consiste en que el numero de columnas de la matriz A debe ser igual al numero de filas de la matriz B. Pasemos a ver como se veria esta situacion graficamente. Fila i matriz A . . . . . . Columna k matriz B Matriz A (3x3) Matriz B (3x4) 2 8 4 3 1 2 X 5 7 8 Es decir que para sacar el debe hacer lo siguiente: 1 4 0 3 2 56 20 0 2 2 1 3 30 4 = 0 8 1 2 5 98 22 resultado de la primera posición de la C [i, k]=0; j=1; C [i, k] = C [i, k] + A [i, j] * B [j, k] C [1, 1] = 0 + 2 * 1=2 J=2 C [i, k] = C [i, k] + A [i, j] * B [j, k] C [1, 1] = 2 + 8 * 0=2 J=3 Matriz C (3x4) 22 14 38 matriz C [1,1] se C [i, k] = C [i, k] + A [i, j] * B [j, k] C [1, 1] = 2 + 4 * 0=2 De esta manera se obtiene el primer termino de la matriz C [1,1]. Para obtener el termino de la posición C [1,2], se hace exactamente igual solo que la operación se hace entra la misma fila de la matriz A con la segunda columna de la matriz B y así sucesivamente, hasta terminar de llenar la matriz C. Variables de entrada de datos fa= Variable que identifican el numero de filas de la matriz A. ca= Variable que identifican el numero de filas de la matriz A. fb= Variable que identifican el numero de filas de la matriz B. cb= Variable que identifican el numero de filas de la matriz B. Variables de proceso A[i,j]= Matriz que almacenara numeros enteros y positivos generados aleatoriamente, numeros comprendidos en un rango de 0 a 99. B[i,j]= Matriz que almacenara numeros enteros y positivos generados aleatoriamente, numeros comprendidos en un rango de 0 a 99. C[i,k]= Matriz que almacenara el resultado de la multiplicacion de la matriz A por la matriz B. i, j, k = Variables subíndices de las matrices A, B, C. num= Variable que almacena temporalmente el numero generado aleatoriamente. Inicio Random num= Random fa, ca, fb, cb A [fa, ca] =num (0, 99) B [fb, cb] =num (0, 99) A [fa, ca] B [fb, cb] i= 1, fa k= 1, cb C [i, k]=0 j= 1, ca C [i, k] =C [i, k] + A [i, j]*B [j, k] Matriz C [i, j] Fin PRIMERA PARTE: Aplicación Consola Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola, le damos el nombre al proyecto, en este caso “producto_matrices_consola”, luego aceptar, tal y como se muestra en la siguiente pantalla. Pantalla nuevo proyecto Visual csharp Después de esto tendremos la pantalla en donde podremos digitar el código correspondiente para el ejercicio que estamos trabajando. La pantalla es la siguiente. Pantalla proyecto producto_matrices_consola Visual csharp Nos ubicamos dentro de las llaves que encierran al método static void Main(string[] args) y digitamos el siguiente codigo. int fa, fb, ca, cb;//Indican el numero de filas y columnas de las matrices A y B int i, j, k;//Variables de los subindices de la matrices // Definimos las matrices int[,] A = new int[100, 100];//Matriz A de cien posiciones int[,] B = new int[100, 100];//Matriz B de cien posiciones int[,] C = new int[100, 100];//Matriz C de cien posiciones //Definimos la semilla para la generacion de los numeros aleatorios Random num = new Random(DateTime.Now.Millisecond); //Definimos el titulo del proyecto Console.Title = "Multiplicacion de Matrices en CSharp"; Console.WriteLine("\n"); //Ingresamos el numero de filas de la matriz A Console.Write("Ingrese el numero de filas de la matriz A: "); fa = int.Parse(Console.ReadLine()); //Ingresamos el numero de columnas de la matriz A Console.Write("Ingrese el numero de columnas de la matriz A: "); ca = int.Parse(Console.ReadLine()); //Ingresamos el numero de filas de la matriz B Console.Write("Ingrese el numero de filas de la matriz B: "); fb = int.Parse(Console.ReadLine()); //Ingresamos el numero de columnas de la matriz B Console.Write("Ingrese el numero de columnas de la matriz B: "); cb = int.Parse(Console.ReadLine()); //Hacemos el llenado de la matriz A Randomicamente for (i = 1; i <= fa; i++) { for (j = 1; j <= ca; j++) { A[i, j] = num.Next(0, 99); } } //Hacemos el llenado de la matriz B Randomicamente for (i = 1; i <= fb; i++) { for (j = 1; j <= cb; j++) { B[i, j] = num.Next(0, 99); } } Console.WriteLine(); Console.WriteLine("Matriz A Generada Inicialmente"); Console.WriteLine("------------------------------"); //Imprimimos la matriz A for (i = 1; i <= fa; i++) { for (j = 1; j <= ca; j++) { Console.Write(" {0 } ", A[i, j]); } Console.WriteLine(); } Console.WriteLine(); Console.WriteLine(); Console.WriteLine("Matriz B Generada Inicialmente"); Console.WriteLine("------------------------------"); //Imprimimos la matriz B for (i = 1; i <= fb; i++) { for (j = 1; j <= cb; j++) { Console.Write(" {0 } ", B[i, j]); } Console.WriteLine(); } Console.WriteLine(); //Efectuamos el recorrido de las matrices para hallar la multiplicacion for (i = 1; i <= fa; i++)//Ciclo que reccorre las filas de la matriz A { for (k = 1; k <= cb; k++)//Ciclo que reccorre las columnas de la matriz B { //Incializamos la matriz C en cero C[i, k] = 0; for (j = 1; j <= ca; j++)//Ciclo que reccorre las columnas de la matriz A { //Realizamos la suma de A + B en C C[i, k] = C[i, k] + A[i, j] * B[j, k]; } } } Console.WriteLine(); //Imprimimos la matriz C Console.WriteLine("Matriz C"); Console.WriteLine("------------------------------"); for (i = 1; i <= fb; i++) { for (k = 1; k <= cb; k++) { Console.Write(" {0 } ", C[i, k]); } Console.WriteLine(); } Console.ReadLine(); Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la pantalla en donde podremos digitar el numero de filas y de columnas de las matrices A y B, para luego realizar las multiplicación de estas dos y el resultado almacenarlo en la matriz C, tal y como se muestra a continuación en la siguientes pantallas. Pantalla proyecto producto_matrices_consola Visual csharp Pantalla proyecto producto_matrices_consola Visual csharp Ejercicio 32: Hacer el diagrama y el programa, que permita leer una matriz A, de n filas por n columnas. Los datos de la matriz A, serán números enteros y positivos los cuales deberán ser ingresados por el teclado. Después de ingresar los datos en la matriz A, se deberá crear una nueva matriz llamada transpuesta, la cual consiste en convertir las filas en columnas y las columnas en filas de la matriz A. Pero mejor veamos gráficamente como es una matriz transpuesta. Matriz A (3x3) 2 3 5 8 1 7 4 2 8 Matriz Transpuesta (3x3) 2 8 4 3 1 2 5 7 8 Si observamos detenidamente la fila 1 (2, 8, 4), ahora es columna 1 (2, 8, 4), y la columna 1(2, 3, 5), ahora es fila 1(2, 3, 5), y así sucesivamente con las demás filas y columnas. Veamos ahora como quedaría nuestro diagrama de flujo. Solución: Variables de entrada de datos n= Variable que identifican el orden de la matriz A. Variables de proceso A[i,j]= Matriz que almacenara numeros enteros y positivos digitados por el teclado. transpuesta[i,j]= Matriz que almacenara el intercambio de filas por columnas y columnas por filas de la matriz A. i, j = Variables subíndices de las matrices A y transpuesta. Inicio n A[n] i= 1, n j= 1, n transpuesta [j, i]=A [i, j] A [j, i] transpuesta [j, i] Fin PRIMERA PARTE: Aplicación Consola Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola, le damos el nombre al proyecto, en este caso “matriz_transpuesta_consola”, luego aceptar, tal y como se muestra en la siguiente pantalla. Pantalla nuevo proyecto Visual csharp Después de esto tendremos la pantalla en donde podremos digitar el código correspondiente para el ejercicio que estamos trabajando. La pantalla es la siguiente. Pantalla proyecto matriz_transpuesta_consola Visual csharp Nos ubicamos dentro de las llaves que encierran al método static void Main(string[] args) y digitamos el siguiente codigo. int n;//Indican el orden de la matriz A int i, j;//Variables de los subindices de la matrices // Definimos las matrices int[,] A = new int[100, 100];//Matriz A de cien posiciones int[,] transpuesta = new int[100, 100];//Matriz transpuesta de cien posiciones //Definimos el titulo del proyecto Console.Title = "Matriz Transpuesta en CSharp"; Console.WriteLine("\n"); //Ingresamos el orden de la matriz A Console.Write("Ingrese el orden de la matriz A: "); n = int.Parse(Console.ReadLine()); //Leemos la matriz A desde el teclado Console.WriteLine("Ingrese los valores de la matriz A "); Console.WriteLine(); for (i = 1; i <= n; i++) { Console.WriteLine("\tFila {0}:", i); for (j = 1; j <= n; j++) { Console.Write("\t\t Columna {0}:", j); A[i, j] = int.Parse(Console.ReadLine()); } } Console.WriteLine(); //Efectuamos el recorrido de las matriz A para hallar la transpuesta for (i = 1; i <= n; i++)//Ciclo que reccorre las filas de la matriz A { for (j = 1; j <= n; j++)//Ciclo que reccorre las columnas de la matriz A { //Efectuamos el cambio de filas por columnas y columnas por filas transpuesta[j, i] = A[i,j]; } } Console.WriteLine(); //Imprimimos la matriz A Console.WriteLine("Matriz A Leida Inicialmente"); Console.WriteLine("------------------------------"); for (i = 1; i <= n; i++) { for (j = 1; j <= n; j++) { Console.Write(" {0 } ", A[i, j]); } Console.WriteLine(); } Console.WriteLine(); //Imprimimos la matriz Transpuesta de A Console.WriteLine("Matriz Transpuesta"); Console.WriteLine("------------------------------"); for (j = 1; j <= n; j++) { for (i = 1; i <= n; i++) { Console.Write(" {0 } ", transpuesta[j, i]); } Console.WriteLine(); } Console.ReadLine(); Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la pantalla en donde podremos digitar el orden de la matriz A, para luego realizar el cambio de filas por columnas y las columnas por filas “transpuesta de A”, tal y como se muestra a continuación en la siguiente pantalla. Pantalla proyecto matriz_transpuesta_consola Visual csharp Matriz Espiral Una matriz de n filas por n columnas, se puede llenar y recorrer de varias formas. En los siguientes ejercicios se tratara los casos existentes para una matriz en este caso la llamada espiral envolvente. Pero mejor veamos gráficamente como se representa cada uno de los casos existentes. | | 2 3 -- 1 <---5 -- 8 <---4 ^ ^ |7 | 6 Matriz Espiral Envolvente caso 1 Para este caso el llenado se hace de la siguiente manera, tal y como se muestra en la siguiente grafica. 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 13 5 24 25 26 27 12 6 7 8 9 10 11 6X6 Ahora veamos cual seria el código que permitiría el llenado de esta matriz de n filas por n columnas. Le recuerdo amigo lector que este tipo de matriz el llenado no se hace desde el teclado sino que se hace necesario que a través del software se haga el llenado respectivo. Console.Write("Digite el orden de la matriz:"); n = int.Parse(Console.ReadLine()); //Inicializamos las variables utilizadas en el llenado de la matriz z = i = 1; v = n * n; f = n; while (z < v) { for (x = i; x <= f - 1; x++) { espiral[i, x] = z; z++; } for (x = i; x <= f - 1; x++) { espiral[x, f] = z; z++; } for (x = f; x >= i + 1; x--) { espiral[f, x] = z; z++; } for (x = f; x >= i + 1; x--) { espiral[x, i] = z; z++; } //Incrementamos la variable i i++; //Disminuimos la variable f f--; }//Cerramos el cilco while //Imprimimos la matriz espiral Console.WriteLine("\n"); Console.WriteLine("\t\t CASO UNO"); Console.WriteLine("---------------------------------------------------------"); for (x = 1; x <= n; x++) { Console.Write("| "); // Se imprime un separador for (y = 1; y <= n; y++) { Console.Write("\t {0} ",espiral[x,y]); } Console.WriteLine("\t| "); // Se imprime un separador } Console.WriteLine(“---------------------------------------------------------“); Ahora miremos como seria la salida en pantalla del anterior código que genera una matriz espiral envolvente de 6X6. Si observamos detenidamente el anterior código, se ha utilizado un ciclo while, y dentro de este ciclo encontramos cuatro ciclos for, que permite el llenado de la matriz. Vemos que se utiliza una variable llamada z que controla la secuencia de los números, en este caso por tratarse de 6x6, significa que la variable z deberá llegar hasta el numero 36, con la cual se generan los números de 1 a 36 que son los que se almacenan en la matriz. También vemos una variable f que es inicializada con el mismo valor de n, el cual controla el alcance de los ciclos for. Vemos que también que existe una variable llamada v, que es inicializada con la multiplicación de nxn, para el caso de que n es igual a 6, entonces quiere decir que v inicializaría su valor en 36, lo cual permite controlar el ciclo while, es decir que mientras z que se inicializa en uno y se va incrementado mediante la ejecución de los ciclos for sea menor a v en este caso 36, se ejecuta el ciclo while. También observamos que la variable i que se arranca en uno se incrementa al final de los ciclos for, y la variable f se disminuye. En general este el procedimiento que se utiliza para los demás casos que veremos a continuación. Bucle foreach Existe esta sentencia de control de flujo, especialmente diseñada para este tipo de estructuras, donde se manejan listas de elementos, todos del mismo tipo. Foreach depende de la definición previa de un arreglo de elementos del mismo tipo, los cuales puede recorrer individualmente sin conocer el tamaño, explícitamente (como se requiere en otras instrucciones, por ejemplo en el for). Usted amigo lector se preguntara por que estoy definiendo el bucle foreach después de haber visto el tema de array y no cuando vimos todos los bucles existentes. Pues la razón es muy sencilla, el bucle foreach es utilizado para recorrer grandes grupos de información o mejor colecciones, por esta razón considere que era mejor dejar este bucle para después de haber visto el concepto de array, aunque no quiere decir con esto que no se pueda utilizar en otro tipo de situación. Veamos ahora la sintaxis general del bucle foreach. foreach (<tipo> <variable> in <arreglo>) { <instrucciones> } Donde: <tipo> es el tipo básico de los elementos contenidos en el arreglo. <arreglo> es el arreglo de elementos a revisar. <variable> es un identificador de una variable local del foreach () que se usará para ver un elemento del arreglo en cada iteración. La colección que se recorre se especifica como una colección que en este caso, es un array. Cabe anotar que la variable de iteración es de solo lectura en lo que respecta al array. Por lo tanto, no se puede cambiar el contenido del array asignando un nuevo valor a la variable de iteración. Ahora veamos algunos ejemplos en donde se puede utilizar este bucle. Ejercicio 34: Se tiene un arreglo llamado enteros, que contiene números enteros previamente definidos al momento de declarar el array. Se desea conocer cuantos de estos números son pares y cuantos impares. Veamos el código para este ejercicio. //Definimos las variables contador par e impar; int par = 0, impar = 0; //Definimos y el array enteros int[] enteros = new int[] { 1, 2, 5, 7, 9, 12, 13, 15, 18, 20, 22, 25, 30 }; //Definimos el titulo al proyecto Console.Title="Uso del Bucle foreach con Array"; //Efectuamos el recorrido del array mediante bucle foreach foreach (int i in enteros) { if (i % 2 == 0) par++; else impar++; } Console.WriteLine("\n"); Console.WriteLine("Array de enteros"); Console.WriteLine(); //Imprimimos el array enteros foreach (int i in enteros) { Console.Write(" {0} ", i); } Console.WriteLine(); //Ahora imprimamos cuantos son pares y cuantos impares Console.WriteLine("\n"); Console.WriteLine("Hay {0}pares y {1} impares.", par, impar); Console.ReadLine(); Al ejecutar este codigo, se obtendra la siguiente salida en pantalla, la cual se muestra a continuacion. Ahora analicemos el anterior código. Vemos que para recorrer la colección de números del array es mucho más sencillo que si lo hiciéramos utilizando el bucle for, debido a que solo se necesita la variable, en este caso i y el array llamado enteros, y no se necesita conocer cuantos elementos tiene la colección. También se observa que al momento de imprimir el array es de gran utilidad este bucle, hace más sencilla la instrucción. Ejercicio 35: Se tiene un vector de 240 posiciones, el cual contiene los nombres de los pasajeros del avión de Avianca HK7000, que viaja de Bogota Colombia, con destino Madrid España. Hacer el diagrama y el programa que permita conocer e imprimir si cierto pasajero viaja en el avión y el número del asiento en el avión. Solución: El objetivo de este ejercicio es que mediante el bucle foreach y digitando el nombre del pasajero, se verifique si en realidad viaja o no en el avión y en que puesto esta ubicado. Variables de entrada de datos pasajeros[i]= Vector de 240 posiicones, que almacenara los nombres de las personas que viajan en el avion HK7000. nombre= Variable utilizada para leer el nombre del pasajero a buscar en el avion. Variables de proceso i, x = Variables subíndices del bucle for y foreach. puesto= Variable que almacenara el numero del asiento del pasajero encontrado en el avión. viaja= Variable booleana, que tomara el valor de verdadero “true” o falso “false” dependiendo si encontró o no el pasajero en el avión. Inicio i= 1, 240 Vector pasajeros[i] nombre viaja =falso; puesto=0 x, in pasajeros x=nombre NO SI viaja=verdadero puesto=puesto+1 viaja=verdadero NO SI nombre, “No viaja en el Avión.” nombre, “Viaja y esta ubicado en el puesto:”, puesto Fin Si observamos detenidamente el diagrama, vemos que para conocer el numero del puesto en donde se encuentra ubicado el pasajero encontrado en el vector, se utilizo una variable tipo contador llamada puesto, ¿por que contador?, esto es debido a que como el vector es tipo string, y el recorrido se hace con bucle foreach, no hay posibilidades de definir una variable tipo entera y asociarla a la posición del vector debido a que este es de tipo string, por ese motivo se define como entera y a su vez como contador. PRIMERA PARTE: Aplicación Consola Nuevamente nos dirigimos al menú Archivo, Nuevo, Proyecto. Al hacerlo nos muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicación consola, le damos el nombre al proyecto, en este caso “foreach_pasajeros_consola”, luego aceptar, tal y como se muestra en la siguiente pantalla. Pantalla nuevo proyecto Visual csharp Después de esto tendremos la pantalla en donde podremos digitar el código correspondiente para el ejercicio que estamos trabajando. La pantalla es la siguiente. Pantalla proyecto foreach_pasajeros_consola Visual csharp Nos ubicamos dentro de las llaves que encierran al método static void Main(string[] args) y digitamos el siguiente codigo. //Definimos las variables a utilizar en el programa; int i, puesto=0; //Definimos y el array pasajeros string[] pasajeros = new string[300];//Defunimos el array de 300 posiciones //Definimos la variable string llamada nombre string nombre; //Definimos la variable viaja bool viaja=false; //Definimos el titulo al proyecto Console.Title="Pasajeros Avion HK7000 de Avianca"; //Leemos cada uno de los nombres de los pasajeros y //los almacenamos en el vector pasajeros Console.WriteLine("\n"); Console.WriteLine("\t\tPasajeros del HK7000 de Avianca"); Console.WriteLine(); for(i=1; i<=240; i++) { Console.Write("Digite el nombre del pasajero Nº. [ " + i + "]:"); pasajeros[i]=Console.ReadLine(); } Console.WriteLine(); //Ahora digitamos el nombre del pasajero a buscar en el vector Console.Write("Digite el nombre del pasajero a buscar en el avion: "); nombre=Console.ReadLine(); Console.WriteLine(); //Efectuamos el recorrido del array mediante bucle foreach //para hallar el pasajero y su respectivo puesto en el avion foreach (string x in pasajeros) { if (x ==nombre) { viaja=true; break;//Fuerza a salir del bucle } //Incrementamos el contador para saber el puesto del pasajero puesto++; } //Efectuamos la pregunta para saber si fue encontrado o no el pasajero if (viaja ==true) { Console.WriteLine("{0} es ocupante del Avion y se encuentra ubicada en el puesto Nº. {1}",nombre, puesto); } else Console.WriteLine(" {0} No viaja en el Avion", nombre); Console.ReadLine(); Ahora le damos Depurar, Iniciar depuración o F5, el cual nos permite ir a la pantalla en donde podremos digitar los nombres de los pasajeros que viajan en el avión y que son almacenados en el vector pasajeros, luego se digita el nombre del pasajero a buscar dentro del avión o mejor dentro del vector, para hacer la prueba del ejercicio se hará con veinte pasajeros, igual debe funcionar para 240 pasajeros que es en realidad la capacidad que se tiene para el ejercicio. Las pantallas se muestran a continuación. Pantalla proyecto foreach_pasajeros_consola Visual csharp Pantalla proyecto foreach_pasajeros_consola Visual csharp Ejercicio 36: Hacer el diagrama y el programa que permita crear una matriz de cinco filas por cinco columnas, y hallar la suma de todos los elementos de la matriz. La matriz deberá ser creada con números enteros tal y como se muestra a continuación en la siguiente grafica. Aclaro que la matriz no se debe llenar por le teclado, ni tampoco de forma Aleatoria (Randomicamente). Veamos la grafica de la matriz. Columnas Filas 1 2 3 4 5 2 4 6 8 10 3 6 9 12 15 4 8 12 16 20 5 10 15 20 25