You are on page 1of 30

Ejercicio 30:

Dada las matrices A y B con nmeros enteros y positivos generados


Randomicamente, de igual nmeros 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 estaramos
simulando la suma de matrices de n filas x n columnas.
Solucin:
Miremos primero como se efecta la suma de matrices. Supongamos que se
tienen las siguientes matrices A y B, que se muestran a continuacin, 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 efecta 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 dems 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 subndices 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: Aplicacin Consola


Nuevamente nos dirigimos al men Archivo, Nuevo, Proyecto. Al hacerlo nos
muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicacin 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


Despus de esto tendremos la pantalla en donde podremos digitar el cdigo
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 mtodo 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 depuracin 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 continuacin 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 posicin 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 posicin C [1,2], se hace exactamente igual solo que
la operacin 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 subndices 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: Aplicacin Consola

Nuevamente nos dirigimos al men Archivo, Nuevo, Proyecto. Al hacerlo nos


muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicacin 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


Despus de esto tendremos la pantalla en donde podremos digitar el cdigo
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 mtodo 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 depuracin 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 multiplicacin de estas dos y el resultado
almacenarlo en la matriz C, tal y como se muestra a continuacin 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, sern nmeros enteros y positivos los cuales
debern ser ingresados por el teclado. Despus 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 grficamente 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 dems
filas y columnas. Veamos ahora como quedara nuestro diagrama de flujo.
Solucin:
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 subndices de las matrices A y transpuesta.


Inicio

A[n]

i= 1, n

j= 1, n

transpuesta [j, i]=A [i, j]

A [j, i]
transpuesta [j, i]

Fin

 PRIMERA PARTE: Aplicacin Consola


Nuevamente nos dirigimos al men Archivo, Nuevo, Proyecto. Al hacerlo nos
muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicacin 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


Despus de esto tendremos la pantalla en donde podremos digitar el cdigo
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 mtodo 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 depuracin 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 continuacin 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 grficamente como se
representa cada uno de los casos existentes.
|

|
2

--

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 cdigo que permitira 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 travs 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 cdigo que genera
una matriz espiral envolvente de 6X6.

Si observamos detenidamente el anterior cdigo, 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 nmeros, en este caso por tratarse de 6x6, significa que la variable z deber
llegar hasta el numero 36, con la cual se generan los nmeros de 1 a 36 que son
los que se almacenan en la matriz. Tambin vemos una variable f que es
inicializada con el mismo valor de n, el cual controla el alcance de los ciclos for.
Vemos que tambin que existe una variable llamada v, que es inicializada con la
multiplicacin de nxn, para el caso de que n es igual a 6, entonces quiere decir
que v inicializara 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
ejecucin de los ciclos for sea menor a v en este caso 36, se ejecuta el ciclo
while. Tambin 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 dems casos que veremos a continuacin.
Bucle foreach
Existe esta sentencia de control de flujo, especialmente diseada para este tipo de
estructuras, donde se manejan listas de elementos, todos del mismo tipo. Foreach
depende de la definicin previa de un arreglo de elementos del mismo tipo, los
cuales puede recorrer individualmente sin conocer el tamao, explcitamente
(como se requiere en otras instrucciones, por ejemplo en el for).
Usted amigo lector se preguntara por que estoy definiendo el bucle foreach
despus de haber visto el tema de array y no cuando vimos todos los bucles
existentes. Pues la razn es muy sencilla, el bucle foreach es utilizado para
recorrer grandes grupos de informacin o mejor colecciones, por esta razn
considere que era mejor dejar este bucle para despus de haber visto el concepto

de array, aunque no quiere decir con esto que no se pueda utilizar en otro tipo de
situacin.
Veamos ahora la sintaxis general del bucle foreach.
foreach (<tipo> <variable> in <arreglo>) {
<instrucciones>
}
Donde:




<tipo> es el tipo bsico 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 iteracin.

La coleccin que se recorre se especifica como una coleccin que en este caso,
es un array. Cabe anotar que la variable de iteracin 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 iteracin.
Ahora veamos algunos ejemplos en donde se puede utilizar este bucle.
Ejercicio 34:
Se tiene un arreglo llamado enteros, que contiene nmeros enteros previamente
definidos al momento de declarar el array. Se desea conocer cuantos de estos
nmeros son pares y cuantos impares. Veamos el cdigo 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 cdigo. Vemos que para recorrer la coleccin de


nmeros del array es mucho ms sencillo que si lo hiciramos 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 coleccin. Tambin
se observa que al momento de imprimir el array es de gran utilidad este bucle,
hace ms sencilla la instruccin.
Ejercicio 35:
Se tiene un vector de 240 posiciones, el cual contiene los nombres de los
pasajeros del avin de Avianca HK7000, que viaja de Bogota Colombia, con
destino Madrid Espaa. Hacer el diagrama y el programa que permita conocer e
imprimir si cierto pasajero viaja en el avin y el nmero del asiento en el avin.
Solucin:
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 avin 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 subndices del bucle for y foreach.
puesto= Variable que almacenara el numero del asiento del pasajero encontrado
en el avin.
viaja= Variable booleana, que tomara el valor de verdadero true o falso
false dependiendo si encontr o no el pasajero en el avin.

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 Avin.

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
posicin 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: Aplicacin Consola
Nuevamente nos dirigimos al men Archivo, Nuevo, Proyecto. Al hacerlo nos
muestra la pantalla de nuevo proyecto, escogemos Visual C#, Aplicacin 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


Despus de esto tendremos la pantalla en donde podremos digitar el cdigo
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 mtodo 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 depuracin o F5, el cual nos permite ir a la
pantalla en donde podremos digitar los nombres de los pasajeros que viajan en el
avin y que son almacenados en el vector pasajeros, luego se digita el nombre del
pasajero a buscar dentro del avin 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 continuacin.

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 nmeros enteros tal y como se muestra a continuacin 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

You might also like