Você está na página 1de 70

1

2
INTRODUCCIN



La principal habilidad que identifica al Ingeniero de Sistemas, es su capacidad de
abstraccin y sntesis frente a un problema de la vida real. Esta capacidad se
manifiesta en el proceso de anlisis del caso, deteccin de los procedimientos
principales, representacin de estos procedimientos mediante estructuras de control
predefinidas, y finalmente la presentacin de una solucin lgica al problema, fcil
de programar o implementar en cualquier lenguaje o herramienta software,
disponible en el mercado.



Este texto presenta en forma gradual y ordenada, de acuerdo con el desarrollo del
curso de Introduccin a los Computadores, una serie de ejercicios que le permiten al
estudiante desarrollar progresivamente, las habilidades bsicas del Ingeniero de
Sistemas.



Por cada uno de los temas desarrollados en el curso de Introduccin a los
Computadores, se presentan una serie de ejercicios, claramente explicados y
solucionados, que facilitan la asimilacin y puesta en prctica de los conocimientos
impartidos en dicho curso.



Adicionalmente al diagrama de flujo que soluciona el problema planteado, se
presenta la codificacin de dicho diagrama, utilizando un seudocdigo en espaol,
muy semejante al lenguaje Pascal, con el fin de facilitar al estudiante su trnsito hacia
la programacin en un lenguaje formal.




En forma complementaria, se presenta solo el enunciado de algunos ejercicios, para
que el estudiante los solucione por su cuenta, y as poder confrontar su progreso en
los conocimientos impartidos, o los vacos que le han quedado al final de cada tema
desarrollado.



3
PRESENTACIN



Siguiendo la estructura del curso de Introduccin a los Computadores, los ejercicios
y problemas de este texto sern agrupados por temas, y presentados en forma
progresiva de acuerdo a su dificultad.



PRIMERA PARTE


La primera parte contiene los ejercicios correspondientes a las estructuras de control
bsico a saber:

Pgina

Estructuras de control lineal ........................... 06


Estructuras de control de seleccin ........................... 07

- Completa

- Incompleta


Estructura de control de repeticin .............................09

- Hacer mientras

- Repetir hasta

- Para ...............................................................24



Con estas herramientas se desarrolla la primera parte del texto.



4

SEGUNDA PARTE




La segunda parte se refiere a la aplicacin de las anteriores herramientas, en el
manejo de arreglos.


Pgina


Manejo de subndices en una dimensin. (Vectores).......... 37



Manejo de subndices en dos dimensiones. (Matrices)....... 52




Finalmente se presentan ejercicios que combinan todas las herramientas estudiadas
en el curso.



A lo largo del desarrollo de este texto, se presentan cuarenta y tres (43) ejercicios
totalmente explicados y solucionados en forma didctica, junto con su respectivo
diagrama de flujo y programa en seudocdigo.



Adicionalmente se presentan doce (12) ejercicio que se dejan propuestos, cada uno
en su correspondiente seccin, para que el estudiante los solucione por su propia
cuenta.






5

6
ESTRUCTURAS DE CONTROL LINEAL


Ejercicio:

Hacer el diagrama y el programa en seudocdigo que lea cuatro datos: El cdigo de
un estudiante y las notas de los tres previos de una materia cualquiera; y que calcule
e imprima la nota final de la materia, junto con el cdigo del estudiante.

Solucin:

Variables de entrada: cod = cdigo del estudiante, notal = nota del primer previo,
nota2 = nota del segundo previo, nota3 = nota del tercer previo.

Variables de proceso: notafin = nota final del estudiante.





Teniendo en cuenta que esta estructura de control es la ms sencilla, considera que un
solo ejemplo es suficiente.



7

ESTRUCTURAS DE CONTROL DE SELECCIN

Ejercicio:

Hacer el diagrama y el programa en seudocdigo, que lea el nmero de cdula y el
salario bruto de un empleado. Que calcule su salario neto sabiendo que si gana ms
de $500.000 pesos se le hace un descuento del 10%, de lo contrario solo se le
descuenta el 5%. Se debe imprimir: la cdula, el salario bruto, el descuento y el
salario neto.

Solucin:

Variables de entrada: cc = cdula de ciudadana, sb = salario bruto.

Variables de proceso: des = descuento, sn = salario neto.



8


Ejercicio:


Hacer el diagrama y el programa en seudocdigo, que lea tres nmeros diferentes, (a,
b, y c), y que averige e imprima cul es el mayor, junto con el comentario: el mayor
es ___ .


Solucin:


Variables de entrada: a, b y c = corresponden a los tres nmeros.

Variables de proceso: no se crea ninguna variable, pues el proceso se limita a hacer
comparaciones entre los datos ledos, y a imprimir los resultados.






9
ESTRUCTURAS DE CONTROL DE REPETICIN

Inicialmente estudiaremos dos estructuras: Hacer Mientras y Repetir Hasta, las
cuales se utilizan cuando el nmero de ciclos de repeticin no se conoce, y
generalmente depende de una condicin inherente al problema.

Ejercicio:

Hacer el diagrama y el programa en seudocdigo, que lea un capital C, y que
averige e imprima en cuntos meses se duplica, si lo colocamos a un inters
compuesto del 5% mensual.

Solucin
Variables de entrada : C = capital ledo
Variables de proceso : B = el doble del capital, n = nmero de meses





10
Ejercicio:

Una pelota se deja caer desde una altura H, y en cada rebote sube el 10% menos del
anterior. Hacer el diagrama y el programa en seudocdigo, que lea H, y que calcule e
imprima en cul rebote la pelota no alcanza a subir la quinta parte de la altura inicial.

Solucin:

Variables de entrada: H = altura inicial

Variables de proceso : Q = quinta parte de la altura. n = nmero de rebotes





11
Ejercicio:

En 1980 la ciudad A tena 3.5 millones de habitantes y una rata de crecimiento del
7% anual; y la ciudad B tena 5 millones y una rata de crecimiento del 5% anual. Si
el crecimiento poblacional se mantiene constante en las dos ciudades, hacer el
diagrama y el programa que calcule e imprima en qu ao la poblacin de la ciudad
A es mayor que la de la ciudad B.

Solucin

Como todos los datos se encuentran definidos en el enunciado, no se requiere leer
ninguna informacin, solo asignar los tres datos iniciales a las respectivas variables
as: A = poblacin de la ciudad A , B = poblacin de la ciudad B , n = ao inicial
(1980).





12
REGISTRO CENTINELA



Se dice que un ejercicio utiliza el Registro Centinela, cuando el ltimo dato de
entrada tiene caractersticas especiales, es decir se diferencia de todos los dems, de
modo tal que puede ser utilizado para determinar cundo termina el proceso
repetitivo que involucra la entrada de datos.



Ejercicio:


Vamos a hacer de nuevo el primer ejercicio ( Pag. 6 ), de modo tal que se pueda
utilizar para ms de un estudiante, y que informe cuantos perdieron la materia.

Hacer el diagrama y el programa en seudocdigo que por cada estudiante lea el
cdigo y las notas de los tres previos de una materia, y que calcule e imprima el
cdigo y la nota final de cada estudiante. No sabemos cuantos estudiantes son, pero
despus de la informacin del ltimo, se introducen ceros en el campo
correspondiente al cdigo, de modo tal que sirva como Centinela, para indicar
cuando terminan los datos de entrada. Tambin se debe informar al final cuntos
estudiantes perdieron la materia.


Solucin:


Utilizaremos la estructura Hacer Mientras, efectuando la primera lectura fuera del
ciclo repetitivo, y las dems dentro de l, antes de retomar.


Para llevar la cuenta de cuntos estudiantes perdieron la materia, utilizaremos la
variable con, la cual servir como contador. Este tipo de variables se inicializa en
ceros fuera del ciclo repetitivo, y se incrementan dentro de l, en este caso de a uno
en cada ciclo ( con = con +1).






13
Diagrama y programa








14
Divisin entera: Se indica mediante corchetes, y su funcin es truncar la parte
decimal. Ej: d = [ 27 / 5 ], entonces d = 5 .


Resto: Es el nmero equivalente a la parte decimal truncada.
Ej: r = 27 - ( d * 5 ), entonces r = 2 .


Ejercicio:


Hacer el diagrama y el programa en seudocdigo, que lea nmeros enteros y
positivos (uno en cada lectura), y que averige e imprima cuntos son pares y
cuntos son impares. Para terminar utilizaremos el registro centinela, cuando el valor
del nmero ledo sea cero.


Solucin:

Variables de entrada: n = nmero ledo.

Variables de proceso:


Se requieren dos contadores ( par e impar ), los cuales se inicializan en cero fuera
del ciclo, y se incrementan en uno, cada vez que se encuentre un nmero de su clase
(par o impar).


d = resultado de la divisin entera entre el nmero n y 2.

r = resto de la divisin entera.











15
Diagrama y programa:






16
Ejercicio:

Hacer el diagrama y el programa que lea un nmero entero, n , positivo de cuatro
dgitos, que calcule su nmero inverso, y que lo imprima junto con el nmero ledo.
Ej: n =1234, entonces su nmero inverso es ni = 4321.


Solucin:

Variables de entrada: n = nmero ledo
Variables de proceso: d1 , d2 , d3 y d4 = corresponden a cada uno de los dgitos del
nmero ledo, rl y r2 = son el resto de las primeras dos divisiones enteras. ni = es el
nmero inverso calculado.






17
Ejercicio:

Hacer el diagrama y el programa en seudocdigo, que lea un nmero ( n ), entero y
positivo, de cualquier nmero de dgitos, que calcule la suma de sus dgitos y que la
imprima junto con el nmero ledo.
Ej: n = 53471, entonces la suma de sus dgitos es sum = 20.

Solucin: Como no se conoce el nmero de dgitos, utilizaremos divisiones enteras
por 10, en forma sucesiva, hasta que el resultado de la ltima sea cero.
Variables de entrada: n = nmero ledo.
variables de proceso: m == copia del nmero ledo, para imprimirla al final, ya que el
valor de n se modifica durante el proceso, d = resultado de la divisin entera, r =
resto de la divisin entera, sum = suma de los dgitos.






18
Ejercicio:

Hacer el diagrama y el programa en seudocdigo que lea un nmero entero y
positivo, de cualquier nmero de dgitos, que le calcule su nmero inverso, y que lo
imprima Junto con el nmero ledo.

Solucin:
Al igual que en el anterior ejercicio, utilizaremos las divisiones enteras sucesivas por
10, recortando en cada ciclo el valor de n en su ltima cifra, y terminando cuando el
valor de n sea cero.
Variables de entrada: n = nmero ledo.
Variables de proceso: m = copia del nmero ledo. ni = nmero inverso calculado.
d = resultado de la divisin entera. r = resto de dicha divisin.





19
Ejercicio

La Serie de Fibonacci es una secuencia numrica, en la cual cada elemento es la
suma de los dos anteriores, as: 0,1,1,2,3,5,8,13,21, .... etc.
Tomando como variables iniciales los dos primeros elementos, a = O , y b = 1 , hacer
el programa y el diagrama en seudocdigo, que calcule e imprima, a partir del
tercero, todos los elementos de la Serie de Fibonacci que sean menores de mil.

Solucin:

En este ejercicio todos los datos estn definidos en el enunciado, por lo tanto se
requiere leer informacin.
Las variables a utilizar son: a = 0 , b = 1 , y c = al nmero calculado.






20
Ejercicio:

El cajero de un banco solo dispone de billetes de $10.000, $2.000 y $100. Su funcin
es cambiar los cheques a los clientes, dndoles el menor nmero posible de billetes.
Asumiendo que todos los cheques son mltiplos de $100, hacer el diagrama y el
programa que reciba el valor del cheque a cambiar y que le informe al cajero cuantos
billetes de cada denominacin debe entregar, Como no se sabe cuantos clientes
vienen en un da, el programa debe terminar cuando reciba ceros como valor del
cheque, y al final del da debe informar cuntos billetes de cada denominacin se
gastaron.

Solucin: variables a utilizar: CH = valor cheque, Bl = Billetes de $10.000,
B2 = Billetes de $2.000, B3 = Billetes de $100. TB1 = Total billetes de $10.000,
TB2 = Total billetes de $2.000, y TB3 = Total billetes de $100.





21
Ejercicio:



Tenemos la informacin de un grupo de estudiantes de la UIS, no sabemos cuantos.
Por cada uno de ellos hay un registro que contiene el Cdigo, la Edad y el Promedio
Acumulado. El ltimo registro trae grabados ceros en el Cdigo. Hacer el diagrama y
el programa en seudocdigo que imprima el cdigo, la edad y el promedio
acumulado de los estudiantes de Sistemas mayores de 21 aos que estn
condicionales, tambin debe imprimir al final cuntos son. Asuma que el cdigo de
la carrera de sistemas es 11.




Solucin:


Este es un caso de Registro Centinela, donde el valor de cdigo es el que define
cundo se terminan los datos de entrada, por lo tanto utilizaremos la estructura de
control Hacer Mientras. Como el cdigo de la carrera que estudia el alumno se
encuentra en los dos dgitos centrales ( tercero y cuarto ) del cdigo del estudiante, se
utiliza la divisin entera y el Resto, para separarlos.


Variables de estrada : cod = cdigo del estudiante, ed = edad del estudiante,
pro = promedio del estudiante.


Variables de proceso: con = contador que llevar la cuenta de los estudiantes
condicionales que solicita el problema. d = resultado de la divisin entera. r = resto
de la divisin entera. ca = cdigo de la carrera que cursa el estudiante.



En la siguiente pgina se presenta el diagrama de flujo que soluciona este problema,
y el respectivo programa en seudocdigo.






22
Diagrama y Programa:




23
Ejercicios propuestos:



1. Hacer el diagrama y el programa en seudocdigo que lea nmeros enteros y
positivos (uno en cada lectura), y que averige e imprima: a) Los nmeros cuya suma
de dgitos sea impar , y decir cuntos, b) Los nmeros que terminen en siete ( 7 ), y
cuntos, c) Todos los nmeros que tengan ms de cuatro dgitos.
Como no sabemos cuntos nmeros se van a procesar, el programa debe tener en
cuenta que el ltimo nmero ledo debe ser cero.






2. Pedro tiene un capital de cl pesos, y Juan uno de c2 pesos. Uniendo los dos no les
alcanza para hacer un negocio que requiere una inversin de c3 pesos. Deciden
colocar cada uno su capital a ganar inters. Pedro lo coloc a un inters compuesto
del 3% mensual, y Juan al 4% mensual. Hacer el diagrama y el programa que
averige e imprima en cuantos meses, uniendo los dos capitales, pueden hacer el
negocio que desean.






3. Tenemos la informacin de las personas mayores de edad que viven en un barrio
X. Por cada una de ellas hay un registro con tres datos: el nombre, la edad y el sexo
(H=hombre, M=mujer). No sabemos cuantos son, pero en el ltimo registro el campo
edad es igual a cero. Hacer el diagrama y el programa que averige e imprima:
a) Cuantos hombres y cuantas mujeres hay en el barrio, b) El nombre y la edad de
todas las ancianas (mayores de 70 aos), y cuantas hay en el barrio.









24
Estructura de Repeticin PARA.
Esta estructura se utiliza cuando conocemos de antemano el nmero de ciclos que se
van a necesitar, para solucionar el problema planteado.

Ejercicio:
Hacer el diagrama y el programa en seudocdigo, que lea cien nmeros enteros (uno
en cada lectura), y que averige e imprima cuntos son pares y cuntos son impares.
Solucin:
Este ejercicio ya se hizo anteriormente (pgina 14), solo que all no sabamos cuantos
nmeros se iban a procesar. Ahora ya sabemos que son cien, por lo tanto podemos
utilizar un ciclo repetitivo PARA , de uno a cien, con incrementos de a uno, de modo
tal que permita leer y procesar todos los datos de entrada. Utilizaremos las mismas
variables del ejercicio anterior, mas una nueva llamada i, la cual ser usada por el
PARA como el indicador de ciclos.
Compare las dos soluciones.



25
Ejercicio:



Hacer el diagrama y el programa que averige e imprima cuntos mltiplos de siete,
y cuantos mltiplos de nueve hay en los nmeros comprendidos entre el 1000 y el
5000.



Solucin:


A diferencia del ejercicio anterior, en el cual la variable i del Para, solo cumpla la
funcin de hacer que el ciclo se repitiera 100 veces, en este caso cumple dos
funciones, pues adems de servir para que el ciclo se repita cierto nmero de veces,
los valores que tome la variable i son los que se van a procesar dentro del ciclo
repetitivo.

Debido a que todos los datos se encuentran explcitos en el enunciado, no hay
necesidad de leer ninguna informacin.

Las variables a utilizar son:

m7 = contador de los nmeros mltiplos de 7.
m9 = contador de los nmeros mltiplos de 9.
i = variable del Para que tomar uno a uno los valores de los nmeros comprendidos
entre 1000 y 5000.
d = resultado de la divisin entera.
r = resto de dicha divisin.


Note que utilizaremos las mismas variables, d y r , tanto en el proceso de clculo de
los mltiplos de siete, como en el de los mltiplos de nueve. Esto se debe a que
despus de cada proceso, esos valores no se necesitan mas.


El diagrama de flujo y el programa en seudocdigo que solucionan este ejercicio se
presentan en la siguiente pgina.




26
Diagrama y Programa.







27
Ejercicio:

Hacer el diagrama y el programa que calcule e imprima la sumatoria de los primeros
veinte trminos de la siguiente serie:
1/3 , 2/5 , 9/7 , 64/9 , 625/11 ,............ etc.

Solucin:

Primero hay que deducir la secuencia a la cual equivale la serie, y luego establecer la
frmula que la representa as:

1
0
, 2
1
, 3
2
, 4
3
, 5
4
, . . . , 20
19
. Esto equivale a la frmula n
n-1

3 5 7 9 11 41 2n-1


Como podemos ver, se debe crear una secuencia en la cual la variable n tome los
valores desde uno hasta 20, y se utiliza la frmula deducida para calcular cada
trmino y sumarlo en el acumulador sum.






28
Ejercicio:

Hacer el diagrama y el programa que lea un nmero entero y positivo, que le calcule
su factorial y que lo imprima junto con el nmero ledo.
Ej: El factorial de cinco == 5! = 5x4x3x2x1 = 2x3x4x5 =120
En general N! = 2x3x4x5x6x7x .... xN

Solucin:

Como podemos damos cuenta, despus de leer el nmero N , debemos generar una
variable que tome los valores 2, 3, 4, 5,... N, esto se hace con un Para, y en cada valor
se debe multiplicar con el acumulado de productos anteriores.
Utilizaremos la variable fac como acumulador de productos, el cual a diferencia del
acumulador de sumas o contador, se debe inicializar con el valor de uno, fuera del
ciclo, ya que durante el proceso se actualiza a s mismo con la instruccin
fac = fac*i, donde i es la variable del Para.





29
Ejercicio:

Hacer el diagrama y el programa que lea dos nmeros enteros y positivos, N1 y N2 ,
donde N2 es mayor que N1 . Que calcule el factorial de los nmeros comprendidos
entre ellos, incluyndolos, y lo imprima junto con el nmero correspondiente.

Solucin:

Se dice que hay Ciclos Anidados, cuando un Para externo, contiene uno o ms Paras
internos. En estos casos se debe tener el cuidado de utilizar diferente nombre de
variable en cada uno de los Paras anidados.
Una forma de solucionar este ejercicio, es utilizando dos Paras anidados, uno externo
que se encarga de generar los nmeros entre N1 y N2 , y otro interno que se utiliza
para calcular el factorial del nmero generado en el Para externo.
Variables de entrada : N1 = lmite inferior. N2 = lmite superior.
Variables de proceso : M = indicador del Para externo, que vara entre N1 y N2 .
fac = almacena el valor del factorial . i = indicador del Para interno, que vara entre 2
y M .







30
Ejercicio:

Generalmente los ejercicios tienen varias soluciones, y en la mayora de los casos
una es ms eficiente que las otras. Veamos este ejemplo.

Si tenemos en cuenta que el factorial de N es igual al factorial de N-l multiplicado
por N, ( ej: 6! = 5! x 6 ), la solucin planteada en el anterior ejercicio, aunque luce
aparentemente clara y sencilla, es muy ineficiente cuando N1 y N2 son nmeros
grandes. Por ejemplo, si N1 = 50000, para calcular su factorial hay que hacer casi
50000 multiplicaciones, pero si ya tenemos ese valor calculado, solo se requiere una
multiplicacin mas para calcular el factorial de 50001, y no como en la solucin
anterior, donde se realizan otras 50000 multiplicaciones, y as sucesivamente con
cada uno dlos nmeros siguientes.

Vamos a hacer nuevamente el ejercicio anterior, teniendo en cuenta esta
optimizacin




31
Ejercicio:

El nmero de combinaciones de m elementos, tomados en grupos de n , est dado por
la frmula:
C = m! / ( n! ( m-n )! )

Hacer el diagrama y el programa que lea m y n , que calcule C y qu imprima los tres
datos.



32
Ejercicio.


En el plano cartesiano, tenemos un crculo de radio R y centro en el origen, y una
recta (Y=AX+B) que lo corta. Disponemos de 101 registros de entrada de datos, en el
primero vienen grabados los tres datos bsicos del ejercicio, A , B , y R . En cada uno
de los cien siguientes vienen grabados dos datos, que corresponden a las coordenadas
( X y Y), de un punto en el plano.


Hacer el diagrama y el programa que leyendo los datos bsicos (R, A y B), imprima
por cada uno de los 100 puntos, los valores de X y Y, y el indicador Pl, P2,....... o P6,
de acuerdo con las siguientes instrucciones:


Pl: Cuando el punto est sobre la recta y dentro del crculo.
P2: Cuando el punto est sobre la recta y sobre el crculo.
P3: Cuando el punto est sobre la recta y fuera del crculo.
P4: Cuando el punto est fuera de la recta y dentro del crculo.
P5: Cuando el punto est fuera de la recta y sobre el crculo.
P6: Cuando el punto est fuera de la recta y fuera del crculo.



Solucin:


Podemos ver que por cada punto ledo hay que analizar dos situaciones, una si est o
no sobre la recta y la otra si est dentro, sobre o fuera del crculo.

Para la primera situacin solo basta reemplazar la X y la Y ledas en la ecuacin
Y = AX + B , y si la igualdad se cumple, el punto estar sobre la recta, de lo
contrario estar fuera de ella.

Para la segunda situacin la clave est en averiguar la distancia del punto ledo al
origen, utilizando Pitgoras, y comparar esta distancia con el radio del crculo, as
podemos deducir si esta dentro, sobre o fuera de l.

En la pgina siguiente presentamos la grfica del problema claramente explicada, el
diagrama de flujo y el programa en seudocdigo que solucionan este ejercicio.



33
Grfico, Diagrama y Programa




34
Ejercicio:

Hacer el diagrama y el programa que lea un nmero N , entero y positivo, y que
averige e imprima si es o no nmero Primo.

Solucin:

Un nmero es Primo, cuando solo es divisible por si mismo y por la unidad, en otras
palabras, cuando no es divisible por ningn nmero menor que l, excepto el 1. Por
lo tanto, hacemos un ciclo repetitivo Para, con la i variando desde 2 hasta N-l, y
probamos si el nmero es divisible por i.

Es bueno resaltar el uso de la variable sw (switch), la cual sirve para controlar si al
menos una vez, N fue divisible por la variable i , lo que significara que no es nmero
Primo. Este control se debe implementar, debido a que el punto de salida del Para es
el mismo en los dos casos, y solo el estado de la variable sw nos indica si N es o no
nmero Primo, ya que si sw, despus del Para, mantiene el mismo valor con que fue
inicializada, significa que ninguno de los valores numricos que tom la variable i
fue divisor de N , o sea que N es un nmero primo.




35
Ejercicios Propuestos:


1. Optimizar el ejercicio anterior, teniendo en cuenta que cuando N es muy grande,
se pueden ahorrar muchas operaciones para saber si es o no nmero Primo, por
ejemplo:

Considerando que todos los nmeros pares (excepto el 2), no son nmeros Primos,
nos evitamos la mitad del trabajo si hacemos esta prueba primero. Si el nmero es
impar, nunca ser divisible por un nmero par, por lo tanto podemos ahorrar trabajo
si los divisores son solo los nmeros impares. Esto se hace con un Para que inicia en
3 y tiene incrementos de a 2. Si tenemos en cuenta, que una vez el divisor sea mayor
que la mitad de N, es imposible que lo divida en forma exacta, entonces el Para debe
ir desde 3 hasta ( N/2), de a dos en dos. Finalmente, cuando N sea divisible por
primera vez, ya no es nmero Primo, y no hay necesidad de seguir probando por los
nmeros que falten, por lo tanto despus de la instruccin sw = 1, incrementamos la i
hasta ms all de su lmite (i == N), y as terminaremos el ciclo repetitivo.





2. Tenemos 100 registros, en cada uno vienen tres datos a , b y c , que corresponden
a los coeficientes de la ecuacin cuadrtica ax
2
+ bx + c = 0 . Hacer el diagrama y el
programa que calcule las races XI y X2 , y las imprima junto con los respectivos
coeficientes. Cuando las races sean imaginarias, solo debe imprimir los respectivos
coeficientes y el comentario " races imaginarias", y al final informar en cuantos
casos se presentaron races imaginarias.





3. Suponga que en la UIS hay 5000 estudiantes. Por cada uno de ellos tenemos un
registro con el Cdigo, el Nombre y el Promedio Acumulado. Hacer el diagrama y el
programa que: a) Imprima el Cdigo y el Nombre de los estudiantes de sistemas
(cdigo 11), que tengan promedio acumulado igual o mayor a 4.0, y cuntos fueron,
b) Imprima el cdigo y el nombre de los estudiantes que ingresaron a la UIS antes de
1990, y que estn condicionales, decir cuantos fueron.




36







SEGUNDA PARTE








MANEJO DE ARREGLOS






Vectores y Matrices









37
MANEJO DE SUBNDICES EN UNA DIMENSIN (VECTORES).




Ejercicio:

Una empresa tiene 250 empleados, por cada uno de ellos tenemos un registro que
trae grabado dos datos, el nombre del empleado, y su correspondiente salario
mensual.
Hacer el diagrama y el programa que averige e imprima, cuntos empleados ganan
ms del promedio salarial de la empresa.



Solucin:

Una de las ventajas de los vectores, es permitir almacenar informacin que se va a
necesitar posteriormente, la cual se perdera si utilizamos variables planas durante el
proceso repetitivo de lectura.

Por ejemplo, en este ejercicio, para calcular el promedio salarial de la empresa
necesitamos leer los 250 registros, y luego comparar este promedio contra cada uno
de los salarios. Esto sera imposible de hacer, si durante la lectura de los 250
registros no guardamos el dato correspondiente a cada salario, de forma tal que
posteriormente lo podamos accesar fcilmente, para compararlo contra el promedio
salarial de la empresa. La forma ms sencilla de hacerlo es utilizando un vector o
arreglo S(i) de 250 elementos, que almacene esta informacin a medida que los va
leyendo.



Variables:

sum = acumula la suma de los 250 salarios, con = contador de los que ganan ms
del promedio, nom = nombre del empleado (esta variable no tiene ningn uso, pero
hay que leerla debido a que su informacin se encuentra antes del dato del salario),
sal = salario del empleado, pro = promedio salarial de la empresa.

S(i) = Vector de 250 elementos donde se almacenar uno a uno a medida que se vaya
leyendo, c/u de los 250 salarios.


38
Diagrama y Programa:






39
Ejercicio:

Hacer el diagrama y el programa que lea un vector A de n elementos, grabados en un
solo registro, que averige e imprima cual es el mayor y en que posicin se
encuentra, y cual es el menor y en que posicin se encuentra.

Solucin:

Cuando se dice que los elementos vienen grabados en un mismo registro, para leerlos
y almacenarlos como un vector, se debe utilizar un ciclo repetitivo Para,
exclusivamente para esta funcin.
La variable n es el primer dato que se lee, pues es el que indica cuantos elementos va
a tener el vector A .
May = el mayor elemento. pl = posicin de may . men = el menor elemento.
p2 = posicin de men. Inicialmente asumimos que el primer elemento es tanto el
mayor como el menor.



40
Ejercicio:

Hacer el diagrama y el programa que lea un vector A de n elementos, grabados en un
solo registro. Estos elementos son nmeros enteros y positivos. Debe crear dos
nuevos vectores, B y C , de modo tal que en el vector B queden todos los nmeros
impares, y en el vector C todos los mltiplos de 3. Al final debe imprimir los tres
vectores, cada uno en un rengln diferente, de tal forma que todos los elementos de
un vector queden en un mismo rengln.

Solucin:
Como no sabemos en qu forma van creciendo los vectores B y C , ni de que tamao
quedarn, utilizamos dos variables, j y k , que se inicializan en cero, y sirven como
contadores y como subndices de los dos vectores.



41
Ejercicio:

Hacer el diagrama y el programa que lea un vector A de n elementos,
grabados en un solo registro, y que calcule e imprima el valor de la siguiente
sumatoria:
S = A(l) + A(2) + A(4) + A(7) + A(l 1) + A(16) + A(22) + A(29) + . ... etc.
Solucin:
Se debe analizar la forma en que aumenta el subndice en la sumatoria, y
deducir esa secuencia. En este caso el incremento del subndice es: +1 , +2 ,
+3 , +4 , . . . etc. Como el incremento del subndice no es constante, se debe
utilizar un ciclo repetitivo diferente al Para. Utilizaremos el Repetir Hasta,
para controlar el crecimiento del subndice, que no puede ser mayor al nmero de
elementos ( n ) del vector.



42
Ejercicio:

En un curso de 70 alumnos, el profesor no hace previos, hace 16 quices en el
semestre. Para calcular la nota definitiva se elimina el peor quiz. Por cada alumno
tenemos un registro que trae grabado el cdigo del estudiante y las 16 notas. Hacer el
diagrama y el programa que calcule la definitiva de cada estudiante y la imprima
junto con el respectivo cdigo, e informe cuntos perdieron la materia.

Solucin:

Utilizamos un ciclo repetitivo Para, externo, para controlar la lectura de los 70
registros. Cada registro se lee como un vector A de 17 elementos, y utilizamos un
ciclo repetitivo Para, interno, para eliminar el peor quiz y calcular la definitiva de
cada estudiante.



43
Ejercicio


Los estudiantes de primer nivel de la Carrera X de la UIS, son 90. Asuma que todos
ven las mismas ocho materias. Al final del semestre tenemos 91 registros, con la
informacin acadmica de estos estudiantes as: El primer registro trae grabados
ocho datos, que corresponden al creditaje de cada una de las materias, en un orden
preestablecido. Cada uno de los restantes 90 registros, trae grabados nueve datos, que
corresponden al cdigo del estudiante y las ocho notas finales de las materias
cursadas, conservando el mismo orden utilizado en el primer registro.


Hacer el diagrama y el programa que calcule el promedio semestral de cada uno de
los 90 estudiantes y que lo imprima junto con el respectivo cdigo, e informe cuantos
quedaron PFU, y cuantos quedaron condicionales.

El promedio semestral de cada estudiante se calcula de la siguiente forma: La nota
final de cada materia se multiplica por su respectivo creditaje, estos productos se
suman, y el resultado se divide por el total de crditos cursados por el estudiante en
el semestre, que en este caso es igual para todos.

Un estudiante es considerado PFU cuando su promedio acumulado es menor
de 2.60.

Se considera que un estudiante est condicional cuando su promedio acumulado es
menor de 3.20 y no qued PFU.

Debido a que son estudiantes de primer nivel, el promedio acumulado es el mismo
promedio semestral.



Solucin:


El primer registro se lee como un vector A de ocho elementos, y se calcula la suma
de los crditos cursados en el semestre. Con el fin de leer los restantes 90 registros
utilizamos un ciclo repetitivo extemo Para. Cada registro se lee como un vector B de
9 elementos, y utilizamos un ciclo repetitivo interno Para, con el fin de calcular el
promedio semestral.



44
Diagrama y Programa:




45
Ordenamiento de un Vector


Ejercicio:


Hacer el diagrama y el programa que lea dos vectores as: Un vector A de m
elementos que contiene el cdigo de todos los estudiantes que perdieron Calculo I , y
un vector B de n elementos con cdigo de los estudiantes que perdieron lgebra.
Crear un nuevo vector C con el cdigo de todos los estudiantes que perdieron las dos
materias, ordenarlo de mayor a menor e imprimirlo.


Solucin:

Si un estudiante perdi las dos materias, su cdigo debe aparecer en los dos vectores,
por lo tanto debemos comparar cada elemento de un vector con todos los del otro
vector. Esto se hace por medio de dos ciclos anidados, de modo tal que mientras el
ndice del ciclo externo identifica un elemento del vector A , el ndice del ciclo
interno va recorriendo uno a uno todos los elementos del vector B, comparndolos
con el elemento del vector A. Cuando se encuentre que son iguales, se debe pasar ese
cdigo al vector C. Esto se hace mediante el contador j que se inicializa en cero fuera
de los ciclos, y se incrementa en uno cada vez que aparecen cdigos iguales,
entonces se utiliza como subndice del vector C. Al final de este proceso el tamao
del vector C estar en el contador j.

Una vez conformado el vector C, debemos proceder a ordenarlo antes de imprimirlo.
Para esto utilizaremos el mtodo de la Burbuja, el cual consiste en comparar el
primer elemento del vector con todos los dems y cada vez que aparezca uno mayor
se pasa a la primera posicin, y el que estaba en la primera se pasa a la posicin que
ocupaba el elemento que result ser mayor. Una vez terminada esta comparacin
tendremos en la primera posicin el mayor de todos, entonces repetimos el anterior
procedimiento olvidndonos del primer elemento, y partiendo desde el segundo,
luego partiendo desde el tercero, y as sucesivamente hasta ordenar el vector.

Lo anterior se hace mediante dos ciclos anidados, de modo tal que mientras el ndice
del ciclo externo se ubica en un elemento del vector, el ndice del ciclo interno
recorre los dems elementos comparndolos entre si e intercambindolos de posicin
cuando sea requerido.




46
Diagrama y Programa:




47
Ejercicio:
Hacer el diagrama y el programa que lea un vector A de n elementos. Dichos
elementos pueden ser cualquier clase de carcter. Asuma que el vector tiene muchos
elementos repetidos. El programa debe crear e imprimir un nuevo vector B que
contenga todos los elementos de A, sin que haya repetidos. Por ejemplo, si el
elemento x aparece cinco veces en el vector A, debe aparecer una sola vez en el
vector B.
Solucin:
El vector B se inicializa con el primer elemento del vector A, y a medida que va
creciendo, cada elemento de A se compara con todos los de B para ver si ya est
incluido. Esto se logra mediante dos ciclos anidados, donde el ciclo externo maneje
el vector A, y el ciclo interno controle el vector B, teniendo el cuidado que el tamao
de B es variable. Tambin utilizamos un switch (sw) para detectar si el elemento del
vector A, en estudio, est ya incluido en el vector B, o de lo contrario incluirlo.



48
Ejercicio:
En un curso de 70 alumnos la nota definitiva se calcula as: La nota de quices vale el
10%, el primer previo vale el 20%, el segundo previo vale el 30%, y el tercer previo
vale el 40%. Por cada estudiante hay un registro que trae grabados cinco datos: El
cdigo del estudiante, y las cuatro notas en el orden antes descrito. Hacer el diagrama
y el programa que calcule la nota definitiva de cada alumno y la imprima en forma
ordenada de mayor a menor, junto con el respectivo cdigo.
Solucin: Se deben crear dos vectores de 70 elementos. El vector A con los cdigos
de los estudiantes, y el vector B con la correspondiente nota definitiva de cada uno,
de modo tal que la nota B(i), sea la del estudiante cuyo cdigo es A(i). Como el
proceso de lectura se debe hacer registro a registro, aprovechamos para calcular la
nota definitiva de cada estudiante, e ir creando los dos vectores. Una vez terminada la
lectura ya tenemos creados los dos vectores, entonces le aplicamos el proceso de
ordenamiento al vector B, teniendo el cuidado de hacer los mismos movimientos en
el vector A.

49
Ejercicio:


Hacer el diagrama y el programa que lea dos vectores: A de m elementos, y B de n
elementos, donde m puede ser mayor, igual o menor que n.

Crear un nuevo vector C de m+n elementos, que sea el resultado de intercalar los
vectores ledos, empezando por A.
Cuando un vector sea mas grande que el otro, los elementos que no alcanzan a ser
intercalados se deben colocar al final del vector C, en el mismo orden que se
encuentren.

El programa debe solucionar satisfactoriamente las tres opciones que se presentan:
m>n , m=n y m<n .
Finalmente debe imprimir el vector C.


Solucin:

Para facilitar el trabajo debemos manejar en forma independiente cada una de las tres
opciones que se presentan, por lo tanto la primera accin que se toma, despus de la
lectura de los datos, es comparar entre si las variables m y n , o sea los tamaos de
los vectores.

Tambin se debe tener en cuenta que el crecimiento del vector C en independiente
del ndice que recorra los vectores A y B , por lo tanto utilizaremos la variable k
como subndice del vector C , inicializndola en cero antes de las comparaciones, e
incrementndola en dos oportunidades dentro de los ciclos repetitivos de
intercalamiento, ya que en cada ciclo el vector C recibe dos elementos.

Se debe tener en cuenta que cuando m no es igual a n , la parte final de un vector
sobra despus del intercalamiento. Esta parte debe ser incluida en el vector C a
continuacin del ltimo elemento intercalado, conservando el mismo orden que tena
en el vector original.

Lo anterior se logra con un simple Para, que va desde m+1 hasta n, cuando n es
mayor que m , o desde n+1 hasta m cuando m es mayor n , y en cada ciclo se
incrementa en uno la variable k , para ser utilizada como subndice del vector C .

Finalmente imprimimos el vector C , sabiendo que su tamao es m+n o simplemente
k , ya que estos dos valores deben coincidir.


50
Diagrama y Programa:





51
Ejercicios propuestos:

1. Tenemos n registros, en cada uno de ellos viene grabado un nmero. Hacer el
diagrama y el programa que calcule e imprima la Desviacin Standar ( Y ) de los
nmeros ledos.




2. Juego de Bolos:

Una lnea consta de diez turnos(entradas) por jugador. En cada entrada se pueden
hacer un mximo de dos lanzamientos, excepto en la dcima que pueden ser tres. En
una lnea puede haber un mximo de 21 lanzamientos y un mnimo de 11.

Clculo del puntaje:

Si en el primer lanzamiento de una entrada se derriban todos los bolos (diez), se
llama moona y el puntaje de esa entrada es igual a 10 ms los bolos que derribe en
los dos lanzamientos siguientes. En esta entrada no hay mas lanzamientos.

Si con los dos lanzamientos de una entrada logra derribar todos los bolos (diez), se
llama media moona , y el puntaje de esa entrada es igual 10 mas los bolos que
derribe en el siguiente lanzamiento.

Si en los dos lanzamientos de una entrada derriba menos de diez bolos, el puntaje
de esa entrada ser igual al nmero de bolos derribados.

Datos de entrada:
Asuma que los jugadores son 15, y que cada uno jug una lnea. Por cada jugador
tenemos un registro que trae grabados el nmero de bolos derribados en cada uno de
los n lanzamientos realizados en la lnea. Recuerde que n es menor o igual a 21 y
mayor o igual a 11.

Hacer el diagrama y el programa que imprima por cada jugador el resultado de las
diez entradas as: nmero de la entrada, puntaje de esa entrada, y el acumulado
respectivo.

52
MATRICES

Debido a que la posicin dentro de una matriz se define mediante la utilizacin de
dos subndices, cuando se necesite recorrer uno a uno sus elementos, se requiere la
utilizacin de dos ciclos Para anidados, de modo tal que mientras un ndice se
desplaza sobre las filas, el otro lo hace sobre las columnas, simulando la secuencia
lgica de los subndices de cada elemento.

Ejercicio:
Hacer el diagrama y el programa que lea una matriz A de diez filas y 20 columnas.
Los datos vienen grabados en forma de matriz, o sea en diez registros y en cada
registro 20 datos. Los elementos son nmeros enteros positivos. Crear e imprimir dos
vectores as: El vector B que contenga todos los nmeros pares de la matriz A , y el
vector C que contenga los nmeros impares.




53
Ejercicio:

Hacer el diagrama y el programa que lea una matriz A de m filas y n columnas, los
datos vienen grabados en forma de matriz. Calcular e imprimir la suma de cada una
de sus filas, y cada una de sus columnas. Junto con el resultado de la suma imprimir
la palabra fila o columna, y el su nmero correspondiente.
Solucin:
Como m no es necesariamente igual a n, se requiere recorrer dos veces la matriz. La
primera, para calcular la suma de las filas, se hace horizontalmente, o sea que el
ndice del ciclo externo se utiliza para las filas, y el del ciclo interno para las
columnas. Para calcular la suma de las columnas recorremos la matriz verticalmente,
el ndice del ciclo externo para las columnas, y el del interno para las filas. Los
resultados se imprimen a la salida del ciclo interno.



54
Ejercicio:


Hacer el diagrama y el programa que lea una matriz cuadrada A de m filas y m
columnas, los datos vienen grabados en forma de matriz. Calcular e imprimir la suma
de: Diagonal Principal (DP), Triangular Inferior (TI), Triangular Superior (TS), y
Diagonal secundaria (DS).



Solucin:

Los elementos que conforman cada una de las cuatro reas de la matriz
solicitadas en el enunciado, tienen su propia caracterstica que los identifican.
Si identificamos las filas de la matriz con la variable i, y las columnas con la variable
k , entonces cualquier elemento de la matriz se identifica A(i,k).

Los elementos que pertenecen a la Diagonal Principal (DP), tienen la caracterstica
que i = k .

Los elementos que pertenecen a la Triangular Superior (TS), son los que se
encuentran bajo la Diagonal Principal, y se caracterizan porque i > k.

Los elementos de la Triangular Inferior (TI), son los que se hallan sobre la Diagonal
Principal, y se caracterizan porque i < k.

Los elementos de la Diagonal Secundaria (DS), son los que van desde la esquina
superior derecha de la matriz, hasta la esquina inferior izquierda y se identifican
porque i+k= m+1.

De acuerdo con lo anterior, utilizamos los dos ciclos anidados para recorrer la matriz,
uno con la variable i como ndice, y el otro con la variable k. Entonces en cada uno
de los ciclos internos comparamos los dos ndices y de acuerdo con el resultado
obtenido lo vamos sumando en el correspondiente acumulador.

Durante el proceso de comparacin hay que tener en cuenta que los tres primeros
casos son excluyentes, o sea que ningn elemento puede estar en ms de uno de
ellos. Solo en el caso de la Diagonal Secundaria se presenta la posibilidad que
cualquiera de sus elementos puede estar en cualquiera de los otros tres casos, por lo
tanto esta ltima comparacin se debe hacer independiente de las otras-



55
Diagrama y Programa:




56
Ejercicio:

Hacer el diagrama y el programa que lea una matriz A de m filas y n
columnas, los datos vienen grabados en forma de matriz. Calcular e imprimir
la suma de todos los elementos perifricos: A(1,1)+A(1,2)+A(1,3)+... + A(l,n) +
A(2,l) + A(2,n) + A(3,l) + A(3,n) + A(4,l) + A(4,n) + ..... + A(m,l) + A(m,2) +
A(m.3) +...+ A(m,n).

Solucin:

Esta suma se puede calcular mediante dos pasadas sobre la matriz as: Un primer
ciclo donde el ndice se desplaza horizontalmente, o sea con la i desde 1 a n, que se
utiliza para sumar los elementos de la filas 1 y m. Un segundo ciclo que se desplace
verticalmente desde 2 hasta m-1, y se utiliza para sumar los elementos de la columna
1 y n, exceptuando los de las cuatro esquinas, que ya fueron sumados en el anterior
ciclo.



57
Ordenamiento de una matriz


Cuando se est manejando informacin procedente de un archivo, los datos
contenidos dentro de un mismo registro pertenecen a un mismo elemento, por lo
tanto no se puede perder esa unidad informativa.


Lo anterior puede ocurrir cuando almacenamos dicho archivo como una matriz,
donde cada registro es una fila y cada campo es una columna, e intentamos ordenarla
sin tener en cuenta esta unidad.


Para ordenar correctamente una matriz de, este tipo, primero hay que definir cual es
el concepto que utilizaremos para comparar, y en que columna se encuentra. Luego
aplicamos el mtodo de la Burbuja, tomando los elementos de esta columna como
punto de comparacin, y cuando se requieran intercambiar de posicin dos de estos
elementos, tambin se deben intercambiar entre si las filas en que cada uno est
ubicado.


Lo anterior se logra mediante la utilizacin de tres ciclos anidados, los dos primeros
se manejan igual que en el caso del ordenamiento de un vector, solo que aqu se
requieren dos subndices. Luego se efecta la comparacin entre los elementos de la
columna con base en la cual se va a ordenar la informacin, y finalmente se utiliza un
tercer ciclo interno para facilitar el proceso de intercambio de todos los elementos de
las dos filas, de modo tal que conserven su unidad de informacin.


Al igual que en el caso del ordenamiento de un vector, aqu tambin se maneja el
concepto de una variable temporal que permite almacenar el dato que va a ser
reemplazado, de modo tal que esta informacin no se pierda.


Ejercicio:


Hacer el diagrama y el programa que lea una matriz A de m filas y n columnas, los
datos vienen grabados en forma de matriz. Ordenarla de mayor a menor de acuerdo
con la informacin contenida en la columna L.
Imprimirla en forma de matriz.


58
Diagrama y Programa:






59
Ejercicio:


Tenemos el archivo de estudiantes de la Universidad (5000 estudiantes), por cada
uno hay un registro que contiene: El Cdigo de estudiante, el Nombre, los crditos
aprobados, el promedio del semestre y el Promedio Acumulado.
Hacer el diagrama y el programa que imprima un listado que contenga el Cdigo, el
Nombre y el Promedio Acumulado de todos los estudiantes, ordenados de mayor a
menor segn el Promedio Acumulado.



Solucin:


Para poder imprimir el listado que se est pidiendo, se requiere conformar
previamente una matriz A de 5000 filas por tres columnas, o sea una fila por cada
estudiante y las tres columnas corresponden al Cdigo, al Nombre y al Promedio
Acumulado. Una vez conformada la matriz A , se le aplica el mtodo de la Burbuja,
utilizando los elementos de la columna tres para realizar las comparaciones. Una vez
ordenada se imprime en forma de matriz, o sea una fila (los tres datos) en cada lnea
de impresin.

La conformacin de la matriz se realiza durante el proceso de lectura, pues a medida
que se lee cada registro, se van almacenando solo los tres datos que se necesitan as:
En A(i,l) el Cdigo, en A(,2) el Nombre, y en A(i,3) el Promedio Acumulado, los
dems datos (el nmero de crditos aprobados y el promedio del semestre) no se
almacenan pues no se requieren para la solucin del problema.

El proceso de lectura se hace mediante la utilizacin de un ciclo repetitivo de uno a
cincomil, leyendo un registro por cada ciclo. Es de anotar que los tres datos a
almacenar se pueden leer directamente como elementos de la matriz A , sin
necesidad de leerlos previamente como una variable plana, para posteriormente
almacenarlos en la matriz.



En la siguiente pgina se presenta el diagrama de flujo y el programa en seudocdigo
que soluciona este ejercicio-




60
Diagrama y Programa:







61
Ejercicio :

En la Universidad se efectu la eleccin del representante de los estudiantes ante el
Consejo Superior. Se presentaron 30 candidatos, y cada uno se identific con un
nmero del 1 al 30. Asumiendo que los 5000 estudiantes votaron, despus de la
eleccin tendremos 5000 registros, donde cada uno contiene dos datos: el cdigo del
estudiante, y el nmero del candidato (del 1 al 30) por el cual vot. Hacer el
diagrama y el programa que imprima:

1. Un listado ordenado de mayor a menor, segn el nmero de votos obtenidos por
cada candidato, imprimiendo el nmero del candidato y los votos logrados.

2. El cdigo de todos los estudiantes que votaron por el candidato ganador.


Solucin:

Para responder al primer punto, se requiere conformar una matriz B de 30 filas (una
por cada candidato), y dos columnas. En la primera columna debe estar el nmero del
candidato, y en la segunda la cantidad de votos obtenidos por ese candidato. Una vez
conformada as la matriz B , se ordena de mayor a menor segn la segunda columna,
y se imprime.

Para conformar la matriz B de acuerdo con lo expresado en el anterior prrafo, esta
requiere ser creada e inicializada al principio del programa, de modo tal que en la
primera columna quedan los nmeros del 1 al 30, y la segunda se inicializa con
ceros, pues ser utilizada como acumulador de votos. Esto se hace con un Para donde
i va de uno a 30, colocando en la primera columna la i , y en la segunda un cero,

En cada registro de entrada viene grabado el cdigo del estudiante (cod), y el nmero
del candidato por el cual vot ( n ). Este nmero n tambin nos indica la fila de la
matriz B que corresponde al candidato n , entonces simplemente le sumamos uno al
segundo elemento de esa fila: B(n,2) = B(n,2) + 1, y as vamos acumulando uno a
uno los votos de cada candidato.

Para responder al segundo punto se necesita almacenar toda la informacin de
entrada, mediante una matriz A de 5000 filas y dos columnas, de modo tal que en la
columna uno quede cod , y en la dos quede n , as una vez conocido el nmero del
candidato ganador, recorremos la matriz A buscando este nmero en la segunda
columna, y cada vez que lo encontremos imprimimos el correspondiente elemento de
la columna uno, o sea el cdigo del estudiante que vot por el candidato ganador.


62
Diagrama y Programa:






63
Ejercicio:

El examen de admisin en una Universidad, consta de dos pruebas, una de
conocimientos generales llamada Pl, que consta de 25 preguntas, y otra de
conocimientos matemticos llamada P2, que consta de 15 preguntas.
Las preguntas son de escogencia mltiple, con cinco opciones numeradas del 1 al 5.
No conocemos el nmero de aspirante, pero se sabe que siempre se presentan ms de
cien, y que la Universidad solo recibe los cincuenta mejores puntajes (Un punto por
cada respuesta correcta).
Despus de realizado el examen, tenemos un archivo con la siguiente informacin:
En el primer registro vienen 25 nmeros (comprendidos entre el 1 y el 5), que
corresponden a las 25 respuestas correctas de la prueba Pl. En el segundo registro
vienen las 15 respuestas correctas de la prueba P2. Luego viene un registro por cada
aspirante, cada uno de estos registros trae 41 datos as: El primero corresponde al
nmero de la credencial del aspirante, los siguientes 25 corresponde a sus respuestas
a la prueba Pl, y las restantes 15 a sus respuestas a la prueba P2.
El ltimo registro trae grabado ceros en el nmero de la credencial.
Hacer el diagrama y el programa que imprima un listado ordenado de mayor a menor
segn el puntaje obtenido, de los cincuenta aspirantes aceptados, imprimiendo el
nmero de la credencial y el puntaje.


Solucin:

Para poder imprimir el listado solicitado en el ejercicio, necesitamos conformar un
matriz A cuyo nmero de filas ser igual al nmero de aspirantes(n), y el nmero de
columnas igual a dos, donde la primera contenga el nmero de la credencial, y la
segunda el puntaje obtenido. Una vez conformada as la matriz A , se ordena de
mayor a menor segn la segunda columna, y se imprimen las primeras cincuenta
filas.

No se requiere utilizar matrices en la lectura de los datos: El primer registro lo
leemos como un vector Pl de 25 elementos, y el segundo registro como un vector P2
de 15 elementos. Debido a que no sabemos cuantos aspirantes son, y teniendo en
cuenta que la terminacin del archivo se controla mediante el registro centinela,
utilizaremos la estructura de repeticin Hacer Mientras.

Cada registro correspondiente a cada aspirante, se lee como un vector B de 41
elementos, utilizaremos la variable n para llevar la cuenta de cuantos registros son. el
primer elemento del vector B corresponder al nmero de la credencial, el cual se
pasa a la primera columna de la matriz A as: A(n,l) = B(l), luego se calcula el
puntaje obtenido por el aspirante y el resultado se pasa a la segunda columna de la
matriz A, y as logramos conformarla.
64
Diagrama y Programa:



65
Ejercicio:

La cadena de almacenes X tiene 20 almacenes en todo el pas, cada uno identificado
con un nmero del 1 al 20. Mensualmente se registran las ventas de cada almacn, de
modo tal que al final de ano tenemos 240 registros, cada uno con tres datos as; El
nmero del almacn (del 1 al 20), el nmero del mes (del 1 al 12), y el total de ventas
durante ese mes. Hacer el diagrama y el programa que averige e imprima: l) Cul
fue el almacn que tuvo las mejores ventas en el ao y a cunto ascendieron. 2) En
qu mes logr las mejores ventas, el almacn que menos vendi durante el ao, y
cunto vendi en ese mes. 3) En qu mes se lograron las mejores ventas en todo el
pas, y a cunto ascendieron.
Solucin:
Para poder responder a la segunda pregunta, necesitamos almacenar la informacin
en forma de una matriz A de 20 filas (una por cada almacn) y 12 columnas (una por
cada mes). Esto se logra si al momento de la lectura utilizamos el nmero del
almacn y el nmero del mes, como subndices de la matriz A, para guardar en ella la
venta mensual de cada almacn. Una vez conformada la matriz A , realizamos el
procedimiento de suma de filas, y con los resultados se conforma un vector B de 20
elementos. A este vector le aplicamos el procedimiento para hallar el mayor y el
menor y en que posicin se encuentran. Imprimiendo el mayor y su posicin,
respondemos a la primera pregunta. Conociendo ya cual fue el almacn que menos
vendi, vamos a su correspondiente fila en la matriz A y all buscamos cual fue el
mes en que ms vendi, imprimiendo el nmero del almacn que menos vendi en el
ao, el nmero del mes en que ms vendi ese almacn, y cuanto vendi en ese mes,
respondemos a la segunda pregunta. Para la tercera pregunta, realizamos el proceso
de suma de columnas, y con los resultados conformamos un vector C de 12
elementos, luego hallamos el mayor de ese vector y en que posicin se encuentra, y
los imprimimos.
Diagrama y programa




66


67
Ejercicio:

Una cadena internacional de almacenes tiene sucursales en 30 pases y maneja cinco
clases de almacenes en todos los pases. Los pases se identifican con un nmero del
1 al 30, y los almacenes con un nmero del 1 al 5 as:
1 -Comestibles , 2.Ferretera , 3.Ropas , 4.Drogas , y 5.Artculos Deportivos.
La informacin del nmero de empleados de cada clase de almacn en cada pas,
viene organizada como una matriz A de 30 filas, una por cada pas, y cinco
columnas, una por cada clase de almacn; de modo tal que si el elemento A(15,2) es
igual a 44, significa que tienen 44 empleados en las ferreteras del pas nmero 15.

El salario que se paga a los empleados, - en cada pas es diferente. Esta informacin
viene organizada como un vector B de 30 elementos, de modo tal que si el elemento
B(17) es igual a 1250, significa que el salario de sus empleados en el pas nmero 17,
es de $1250.00 dlares al mes.

Hacer el diagrama y el programa que lea la matriz A y el vector B, y calcule e
imprima : 1 .Cul es el tipo de almacn que tiene la nmina ms costosa, a cunto
asciende, y cuantos empleados hay. 2. A cunto asciende la nmina total de la
empresa, y cuntos empleados tiene.


Solucin:

Para responder a la primera pregunta debemos recorrer la matriz A por columnas, al
hacerlo verticalmente el ndice i del ciclo interno coincide con el ndice del vector B ,
que contiene los salarios, entonces hacemos el producto A(i,k) x B(i), y lo
acumulamos, y a la salida del ciclo interno lo almacenamos en un nuevo vector N
utilizando el ndice k del ciclo externo, de modo tal que N ser un vector de cinco
elementos, que corresponden a la nmina de cada clase de almacn. De igual forma
creamos un vector E de cinco elementos, que corresponden al total de empleados de
cada clase de almacn, el cual utilizaremos posteriormente, una vez conocido el
almacn con la nmina ms costosa, para imprimir directamente cuantos empleados
tena.

Para responder a la segunda pregunta usamos una variable nt en la cual, a la salida
del ciclo interno, vamos acumulando los elementos del vector N, de modo tal que al
final del proceso tendremos en nt el valor de la nmina total de la empresa. De la
misma forma manejamos la variable te , para que al final del proceso tengamos en te
el nmero total de empleados de la empresa. Finalmente, hallamos el mayor del
vector N y en qu posicin (pl) se encuentra, entonces se imprime la posicin (pl), el
mayor, y elemento pl del vector E. Posteriormente se imprime las variables nt y te
que corresponden a la segunda pregunta.
68
Diagrama y Programa:




69
Ejercicios propuestos:



1. Hacer el diagrama y el programa que lea una matriz A de m filas y n columnas,
que la ordene ascendentemente elemento a elemento, o sea que el elemento menor
quede en la posicin A(l,l), es siguiente en tamao en la posicin A(l,2), el siguiente
en A(l,3), y as sucesivamente de modo tal que el mayor quedar en A(m,n).



2. Una Ca. area tiene 25 aviones, identificados cada uno con un nmero del 1 al 25,
y efecta vuelos en 15 rutas, identificadas cada una con un nmero del 1 al 15.
Durante el ao pasado, por cada vuelo realizado, se grab un registro con cuatro
datos as: El nmero del avin (del 1 al 25), el nmero de la ruta (del 1 al 15), el
nmero del mes (de1 1 al 12), y el nmero de pasajeros transportados en ese vuelo.
Al final del ao tenemos todos los registros grabados, sin ningn orden, y no
sabemos cuantos son, por lo tanto el ltimo registro trae grabado ceros en el nmero
del avin. Hacer el diagrama y el programa que averige e imprima: a) Cul fue el
avin que ms pasajeros transport en el ao, y cuntos, b) Cul fue la ruta de mayor
flujo de pasajeros en el ao, y cuntos, c) Cul fue el mes en que viajaron ms
pasajeros, y cuntos.



3. Hacer el diagrama y el programa que lea dos matrices, A de m filas y n columnas,
y B de n filas y columnas. Que realice el producto matricial en entre A y B ,
generando una nueva matriz C de m filas y columnas.
As: A(m,n) x B(n,) = C(m,).
Imprimir las tres matrices.



4. Hacer el diagrama y el programa que lea una matriz cuadrada A de m filas y m
columnas, imprimirla, y generar sobre ella misma su matriz transpuesta, e
imprimirla. La matriz transpuesta se obtiene intercambiando las filas y las columnas.







70
BIBLIOGRAFA


El presente texto es el resultado de ms de cuatro aos de experiencia en la
enseanza de esta asignatura en la UIS.

La mayora de los ejercicios aqu planteados, son fruto de la continua bsqueda de
casos reales, que se pudieran presentar en forma didctica al estudiante, y que le
permitiera entender, cmo aplicar los conocimientos adquiridos a situaciones de la
vida real.

La importancia de este Problemario radica en que tiene una cobertura total sobre los
contenidos que se estn dictando actualmente en el curso de Introduccin a los
Computadores, pues los textos existentes sobre estos temas solo los cubren
parcialmente, y en una forma que no es la ms adecuada, de acuerdo con la
metodologa utilizada en el curso.

Sin embargo en forma complementaria podramos citar los siguientes textos:

Programacin el Pascal a travs del seudocdigo, de la editorial McGraw Hill.

Programacin libre y estructurada, de la coleccin Schaum.

Diagramacin y Programacin. L. Lozano. Publicaciones Universidad Central
de Bogot.

Você também pode gostar