Sei sulla pagina 1di 37

Algoritmos y Estructura de Datos ST 221 Docente MSc.

Cordova Neri, T

1
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Arreglos: problemas
1.- Diseñar un programa que permita
almacenar datos de n alumnos código
(UNICO y de 3 dígitos), Nombres y
Edad(20..90), luego generar los
siguientes reportes:
a.- Reporte de alumnos y sus datos
respectivos, asimismo la posición de
cad registro.

b.-Listado Ordenado de alumnos por


Nombres y forma ascendente
conservando su posición original.

2.- Diseñar un programa que permita calcular el

promedio de practicas p (p:1..5), k


Asignaturas(k:1..8) correspondientes n (n<=1000)
alumnos, donde por cada promedio de asignatura
se debe especificar el nombre del alumno
respectivo. En las siguientes figuras se ilustra los
reportes.

3..- Diseñar un programa que permita leer datos


de n alumnos por Nombres y edad (n<=1000),
luego genere los siguientes reportes mostrados según
las graficas:
a.- Lectura del total de alumnos e ingreso sus de datos
respectivos
b.- Reporte de datos de alumnos incluyendo la ubicación inicial.
c.-Reporte de alumnos ordenados por nombre en
forma ascendente(fig 3).
d.- Modulo para buscar alumno(s) según nombre. Si
repiten, debe mostrase el total. Asimismo, el modulo
debe ser interactivo con usuario

2
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

e.- Modulo de de inserción. Solicita datos de


alumnos y también es interactivo
f.- Reporte después de la inserción de datos
i.- Reporte Ordenado después de la Inserción
j.- Mostrar reporte de alumnos que sus edades no
se repitan

4.-. Diseñar un programa que permite leer el

grado n>0 de un Polinomio, luego leer los


coeficientes y un valor donde se debe evaluar,
mostrar el Mayor Coeficiente y su posición
respectiva, encontrar el valor del polinomio
evaluado en x, en su primera y segunda
derivada. En la siguiente figura, se observa los
procedimientos de entrada y salida
respectivamente.

5.- Diseñar un programa que permita leer un


numero entero n>0 y luego mostrarlo en forma
binaria.

3
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

6.- Diseñar un programa que permita leer

dimensión de una matriz y luego leer datos de


tipo enteros. Realizar las siguientes
operaciones: reporte de datos ingresados,
matri ordenada por columnas, mayor
elemento y su numero de apariciones de este.

7.- Diseñar un programa que permita leer

dimensión de una matriz y luego leer datos de


tipo enteros, mostrar los elementos de la
matriz en forma inverida. Indicar mayor y
menor elemento y sus posiciones respectivas.

8.- Diseñar un programa que permita leer

numero de Secciones, por cada sección leer


numero de alumnos y por cada alumno leer
numero de Practicas , luego calcular y
mostrar el proemdio de cada alumno. En la
siguiente figura se ilustra los procesos .

9.- Diseñar un programa que permita

inicializar en estructuras la siguiente


información:
5 Secciones(A,B,C,D,E),
5 Asignaturas (“Basicas","Fisica I","Ingles I","Ecologia","Analisis) y
20 alumnos Marcos ","Jose ","Ana","Abel","Pedro","Betty","Estela","Luz ","Arturo","Robert",
"Manuel","Bryan ","Kike ","Daniel","Leonel","Alfredo","Anais","Julio ","Pepe ","Margot” y 3
practicas(5..15).
Luego en forma Aleatoria debe asignarse la correspondencia de los datos respectivos para
generar los siguientes:

4
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

a).- Reporte de datos de alumnos:

b).- Reporte de Nombres de alumnos, su


promedio en su asignatura y sección
respectiva, así como promedio por sección.

5
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

c).- Reporte de sección con mayor promedio

d) Reporte de información de alumnos pero ordenados en forma scendente según sección.


En la figura adjunta se ilustra reporte

10.- Diseñar un programa que permita

leer n y m elementos para vectores A y B


de tamaño 100 respectivamente, luego
genera reporte que permita mostrar los
elementos que interceptados y su posición
que ocupa el elemento en cada vector.
Procedimientos:
En la siguiente interface se ilustra la
lectura de datos de los vectores A y B,
asimismo los resultados solicitados.

11.- - Diseñar un programa que permita calcular el área de bajo una curva y=f(x) mediante

Método de trapecio, para lo cula se debe leer llimite inferior el limite superior , el numero de
iteraciones. Asi mismo debe calcular el error de calculo de area cometido.

12.- Diseñar un programa que permita almacenar en una matriz, datos de n alumnos(n<=100)
por nombre y luego por cada alumno ingrese p practicas(p<=5), asimismo sus exámenes parcial,
final y sustitutorio, evaluaciones con datos en rango de 0..20.

6
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Para procesar los datos se considera los siguientes vectores:


vpos[ ] : vector que guarda la posición de cada registro.
vsp[ ] : vector que acumula notas de practicas
vmen[ ] : vector que guarda la Menor nota por alumno
vpp[ ] : vector que guarda Promedio de practica por alumno
vpf[ ] : vector que guarda Promedio final por alumno
Considere que examen Final tiene peso doble
El programa debe emitir los siguientes reportes:
1.-Listado de alumnos por nombre, promedio de practicas y promedio final (Sin considerar
Examen Sustitutorio) y Estado (Aprobado/ Desaprobado).
2.- Listado de alumnos por nombre, notas de practicas, menor nota de practica , notas de
exámenes, promedio de practicas y promedio final(considerando que alumno rinde examen
sustitutorio cuando esta desaprobado), promedio de practicas y promedio final ( considerar
Examen Sustitutorio) y Estado (Aprobado/ Desaprobado).
3.- Listado de alumnos ordenados por Nombre en forma ascendente, promedio de practicas,
promedio final, la posición inicial de cada registro y el Estado.
Ejemplo
Ana …………….
Abel…………….
Este reporte no esta ordenado correctamente debido al segundo carácter. Debe considerar estos
casos.

7
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Para procesar los datos se considera los siguientes vectores:


vpos[ ] : vector que guarda la posición de cada registro.
vsp[ ] : vector que acumula notas de practicas
vmen[ ] : vector que guarda la Menor nota por alumno
vpp[ ] : vector que guarda Promedio de practica por alumno
vpf[ ] : vector que guarda Promedio final por alumno
Considere que examen Final tiene peso doble
El programa debe emitir los siguientes reportes:
1.-Listado de alumnos por nombre, promedio de practicas y promedio final (Sin considerar
Examen Sustitutorio) y Estado (Aprobado/ Desaprobado).
2.- Listado de alumnos por nombre, notas de practicas, menor nota de practica , notas de
exámenes, promedio de practicas y promedio final(considerando que alumno rinde examen
sustitutorio cuando esta desaprobado), promedio de practicas y promedio final ( considerar
Examen Sustitutorio) y Estado (Aprobado/ Desaprobado).
3.- Listado de alumnos ordenados por Nombre en forma ascendente, promedio de practicas,
promedio final, la posición inicial de cada registro y el Estado.
Ejemplo
Ana …………….
Abel…………….
Este reporte no esta ordenado correctamente debido al segundo carácter. Debe considerar estos
casos.

7
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

El programa debe ser interactivo con el usuario.

16.- Se escribirá un programa que permita jugar al Master Mind. Para ello se escribirá el

Programa de la siguiente forma:


• Generar cuatro valores enteros aleatorios entre 0 y 9 distintos entre si.
• Preguntar al usuario por cuatro valores enteros.
• Considerando ambas combinaciones, indicar cuántos números comunes están en la misma
posición y cuántos valores comunes están en distinta posición.
Ejemplo: 3786 y 8760 → uno colocado (el 7) y dos descolocados (8 y 6)
• Se terminará el programa cuando el jugador acierte la combinación o haya
agotado sus intentos (constante MAXINTENTOS con valor 10)

17.-Dada una matriz bidimensional n x n, crear otra de las mismas dimensiones, donde el valor
de cada elemento, sea el promedio del elemento en la misma posición de la primera matriz y de
los vecinos que lo rodean (nueve o menos).

9
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

18.- Matriz con entradas en diagonal:


Dados dos enteros m y n, diseñar un programa que construya una matriz con m filas y n columnas
cuyas entradas sean los números 1, 2, ..., m*n acomodados en diagonal, comenzando con el 1 en
la entrada que esta en la esquina superior izquierda, siguiendo con el 2 a la derecha del 1 y el 3
abajo
del 1, y así sucesivamente.

Entrada: Dos números enteros 2 ≤ m, n ≤ 100, separados por un espacio.


Salida: La matriz requerida

19.- Una matriz binaria tiene todas sus entradas iguales a 0 o a 1. Dos matrices A y B tienen

una entrada común si Aij = Bij. Si además permitimos que esas matrices se giren o reflejen de
todas las formas posibles, entonces la cantidad de entradas comunes puede cambiar. Escribe un
programa que lea dos matrices binarias cuadradas y que encuentre la cantidad máxima p y mínima

10
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

q de entradas comunes cuando se permite girar o reflejar cualquiera de las dos matrices de
cualquiera de las formas posibles.

Entrada: Un numero entero n seguido de dos matrices A y B de n ´ n. Puedes suponer que 1 ≤ n


≤ 100.
Salida: Un numero entero p y un numero entero q.

20.- Imagina que estas parado en el punto (0, 0) de un plano cartesiano. A partir de allí,
puedes dar un paso de tamaño 1 en alguna dirección, luego un paso de tamaño 2 en alguna
dirección, después un paso de tamaño 3 en alguna dirección, etc. Las cuatro direcciones posibles
son arriba, abajo, izquierda y derecha. El objetivo es que llegues al punto de coordenadas (a, b)
en la menor cantidad n de pasos que te sea posible. Diseñe un programa que te ayude a
encontrar un posible camino de (0, 0) a (a, b) que cumpla esas condiciones.

Entrada: Dos números enteros a y b tales que -1,000 ≤ a, b ≤ 1,000.


Salida: Un numero entero n seguido de n parejas de enteros xi, yi separados por espacios, las
cuales corresponden con los n puntos a los que llegas después de cada paso.

Evaluación: 1 punto si la n pasa indicada cumplen las condiciones pedidas. En ese caso, 5m/n
puntos adicionales, donde m es la cantidad mínima de pasos necesaria para llegar de (0, 0) a (a,
b). El primer ejemplo recibiría 1+5*3/3 = 6 puntos mientras que el segundo recibiría 1+5*3/7 =
3 puntos.

11
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

21.- Matriz con entradas en espiral


Dados dos enteros m y n, diseñe un programa que construya una matriz con m filas y n columnas
cuyas entradas sean los números 1, 2, ..., m*n acomodados en espiral, comenzando con el numero
1 en la entrada que esta en la esquina superior izquierda, siguiendo hacia la derecha, luego hacia
abajo, luego hacia la izquierda, luego hacia arriba, y asi sucesivamente.
Entrada: Dos números enteros m, n, separados por un espacio, cuyos valores están entre 1 y 100
(incluyéndolos).
Salida: La matriz requerida (para mayor detalle, ver el ejemplo de salida,
aunque no se requiere exactamente el mismo espaciado, solo el orden.

22.- Cuadrados de colores


Una cuadrícula de m por n tiene pintado cada uno de sus cuadritos de alguno de k colores. Estos
cuadritos a veces forman cuadrados más grandes donde todos los cuadritos son del mismo color.
Escribe un programa que determine la longitud g del lado más grande de cualquiera de estos
cuadrados. Además, tu programa deberá determinar la cantidad c de cuadrados de ese tamaño y
el número d de colores distintos en los que existan cuadrados de ese tamaño. El ejemplo mostrado
abajo tiene g = 2. Los cuadrados correspondientes son uno de color 1 y tres de color 3 (por lo que
c = 4 y d = 2).
Entrada: Tres números enteros m, n y k en el intervalo 1 a 100 (incluyéndolos) seguidos de m
renglones con n enteros cada uno en el intervalo 1 a k (incluyéndolos).
Salida: Tres números enteros g, c y d.

23.- Puntos dentro de un triángulo

Considera un triangulo T dado por sus tres vértices (a, b), (c, d) y (e, f) con coordenadas enteras.
Algunos puntos de coordenadas enteras están sobre los lados de T y otros puntos de coordenadas

12
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

enteras están dentro de T. Escribe un programa que encuentre las cantidades s y t de puntos sobre
los lados y dentro de T, respectivamente.
Por ejemplo, si los vértices de T tienen las coordenadas (0, 1), (4, 3) y (2, 5) entonces s = 6 y t =
4 ya que los 6 puntos (0, 1), (2, 2), (4, 3), (3, 4), (2, 5) y (1, 3) están sobre los lados de T mientras
que los 4 puntos (1, 2), (2, 3), (2, 4) y (3, 3) están dentro de T.
Entrada: Seis números enteros a, b, c, d, e, f separados por espacios y todos ellos en el intervalo
de -1000 a 1000 (incluyéndolos). Puedes suponer que los tres vértices de T no están alineados y
por lo tanto forman un triangulo.
Salida: Dos números enteros s y t separados por un espacio.

24.- Diseñar un programa que permita

ingresar caracteres(letras) desde teclado.


Luego mostrar:
a).- El número de veces que se repite la letra
“ a”.
b).- El número de veces que se repite la
palabra “ uni”
c).- Elementos vector sin repetirse.

25.- Diseñar un programa que permita ingresar números enteros y almacenarlo en un vector de

longitud n(n definido por el usuario), luego mostrar:


Reporte de elementos ingresados
Opciones en un menú para :
a).- Insertar elementos al inicio del vector
b).- Insertar según posición espefificada por usuario
c).- Insertar al final, cuando los datos están ordenados

13
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

26.- Diseñar un programa que permita leer n alumnos (n>0 y n<=100) por código y nota

respectivamente, los códigos están formados solo por tres dígitos y las notas solo son validas de
0..20, inclusive. Luego genere los siguientes reportes para conocer:
a) Mayor nota
b) Código, posición y número de veces que se repite la mayor nota
c) Secuencia de códigos y secuencia de notas respectivas (de la mayor).
Análogamente identificar la menor nota y realice los procesos anteriormente solicitados para la
menor nota.

Ejemplo. Considere los datos de la siguiente tabla:


Resultados
Solución.-En la siguiente figura se ilustra la entrada de datos de cuatro alumnos por código y
nota respectivamente. Se valida para que los códigos deben ser solo de tres dígitos y las notas
comprendidas en el rango 0..20
REPORTES DE LA MAYOR y MENOR NOTA.- Se observa que la nota mayor es 16 y esta
se

14
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

repite DOS veces, asignado a los alumnos de códigos 400 y 200, ocupando las posiciones 4 y 2
respectivamente; asimismo, se forma la secuencia de códigos: 400200 y la secuencia de
repetición de la nota mayor: 1616. Asimismo, para la nota menor, tal como se observa en la

gráfica de identificación de menor nota.

15
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

27.- Diseñar un programa que te permita ingresar los precios (en formato real y hasta tres cifras
decimales) de distintos productos pertenecientes a distintos almacenes en una matriz de n
filas(tipos de productos) y m columnas (número de almacenes), donde n, m es definido por el
usuario. Los datos ingresados deben procesarse y ser presentados solo en formato entero, para lo
cual debe aplicar Reglas de Redondeo.-El programa debe realizar y presentar lo siguiente, tal
como se ilustra en la siguiente figura:
1.- Almacenar en un vector Total en Almacén[ ] los totales en almacén.
2.- Almacenar en un vector Total para Producto Tipo[] los totales por producto.
3.- Mostrar en un vector los elementos todos tipos enteros tanto para Total en Almacen[ ] como
para Total para ProductoTipo[ ].
4.-Según la parte 3, mostrar los elementos repetidos, los elementos que quedan y la secuencia.

28.- El cartero de una zona campestre debe de entregar cartas en n casas de una región. Para
ello, desea armarse un recorrido que le permita entregar todas las cartas y regresar a su oficina
queriendo que el trayecto entre dos casas consecutivas sea siempre recto.
Como le gusta pasear pretende, además, que el recorrido no se corte a sí mismo, entonces el
problema consiste en escribir un programa que le permita el ingreso de las coordenadas (x,y)de

16
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

repite DOS veces, asignado a los alumnos de códigos 400 y 200, ocupando las posiciones 4 y 2
respectivamente; asimismo, se forma la secuencia de códigos: 400200 y la secuencia de
repetición de la nota mayor: 1616. Asimismo, para la nota menor, tal como se observa en la

gráfica de identificación de menor nota.

15
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

29.- Diseñe un programa que permita al usuario ingresar número de filas(n) y columnas (m) para
que en una matriz de dimensión n*m se
almacene en forma Aleatoria números
enteros solo en el rango de 10.99, luego
genere reportes para conocer:
a).- Elementos de la matriz
b).-Elementos de la matriz en forma
invertida.
c).- La suma de los elementos de la matriz
invertida
d).- El resultado de c), mostrarlo en forma
invertida
e).- Verificar si el resultado según parte c) es un número capicúa.

30.- Diseñe un programa que permita " Simular una Base de Datos " compuesta por un

conjunto(n<=100) de ítems (productos), donde cada ítem es un producto caracterizado por:


Nombre (cadena (20 letras)), Código (entero) y Precio (real). Después de finalizar con el
almacenamiento de los ítems en la Base de Datos, se puede iniciar el proceso de ventas, para lo
cual el usuario ingresa el número (cant) de ítem a vender, iniciando así la recuperación de datos
bajo las siguientes características:
Ingresar código de producto: el sistema recupera su nombre y precio, a la vez que solicita que
ingrese la cantidad a vender. Inmediatamente, el sistema debe calcular y mostrar el total de ventas
por el producto respectivo. Finalmente, se
debe mostrar el acumulado total de ventas
Procedimientos:
1.- El sistema solicita que el usuario ingresa
cantidad de ítems(productos ) a guardarse
en la BASE de DATOS, en nuestro caso 3
productos.
2.- El sistema envía el mensaje indicando
el número de ítems a ingresar y luego solicita sus atributos del producto. Después de ingresar la
Cantidad de productos a la Base de Datos, el sistema solicita al usuario que ingrese el numero de
productos a vender, en nuestro caso 4, asimismo le muestra el formulario donde se recupera el
producto por sus atributos y otros procesos.

18
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

3.- En el formulario, debe ingresar el código del producto con el cual se recupera
automáticamente el nombre de producto y su precio respectivamente. A continuación el sistema
le solicita que ingrese la cantidad de productos a vender, mostrando inmediatamente el total de
la venta del producto.

4.-El sistema, finalmente reporta el acumulado de las ventas( para el ultimo producto, cantidad
=3 ).
Observación: El usuario debe modificarse para que permita almacenar cantidad de productos por
tipo y luego para hacer ventas primero debe validar si estos existen.

31.- Diseñar un programa que permita


almacenar en un arreglo tridimensional
s secciones, por cada s sección leer a
alumnos y por cada alumno leer p
practicas,. Luego generar un reporte
para conocer:a).- Promedio por alumno
en cada sección
b).- promedio por sección
Observación.- Se deja al lector,
eliminar la menor nota de cada
alumno y luego calcule su
promedio, asimismo calcule el
promedio de todas las secciones
32.- Se tiene una población
estudiantil de n alumnos, donde cada alumno es evaluado con p practicas calificadas (n, p debe
ingresar el usuario), se pide almacenar las practicas de cada alumno en un vector y calcule se

19
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

promedió, asimismo, el promedio de cada alumno almacenarlo en un vector, finalmente genere


un reporte de promedios ordenados en forma ascendente (ver información en la siguiente
grafica).

33.- Diseñe un programa que permita almacenar notas de n alumnos (n<=100) en un vector y
luego genere un reporte respectivo para conocer número de notas repetidas, numero de notas
mayor y menor. Asimismo su posición respectiva. También realizar los siguientes procesos:
Insertar (al inicio, cualquier posición, al final).
Ordenar en forma ascendente
Eliminar elementos (usuario lee índice a eliminar)

34.- Diseñe un programa que permita almacenar números enteros positivos en la matriz A y B
de orden n*m. luego en una tercera matriz almacenar la suma de los elemento matriz A+B. En
esta matriz invertir sus elementos y mostrar el mayor. Finalmente, almacene en un vector estos
elementos y mostrar vector sin elementos repetidos
Reporte 1.- Solicita que ingrese datos en cada matriz y luego genera reportes de la suma de las
dos matrices.

20
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Reporte 2- Ilustra los elementos de la matriz en forma invertida y el mayor elemento.

35.- Diseñe un programa que permita almacenar Apellidos y notas de n alumnos en una matriz

de dimensión n*m, luego mostrar los apellidos de alumnos y sus notas en orden de lectura
respectivas. Asimismo, por cada alumno su nota menor, promedio de alumno eliminando la
menor nota y finalmente los promedios ordenados, con sus respectivos Apellidos, el estado
Aprobado o Desaprobado, alumnos que pertenecen al tercio superior .
ingreso de notas Reportes

21
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

promedió, asimismo, el promedio de cada alumno almacenarlo en un vector, finalmente genere


un reporte de promedios ordenados en forma ascendente (ver información en la siguiente
grafica).

33.- Diseñe un programa que permita almacenar notas de n alumnos (n<=100) en un vector y
luego genere un reporte respectivo para conocer número de notas repetidas, numero de notas
mayor y menor. Asimismo su posición respectiva. También realizar los siguientes procesos:
Insertar (al inicio, cualquier posición, al final).
Ordenar en forma ascendente
Eliminar elementos (usuario lee índice a eliminar)

34.- Diseñe un programa que permita almacenar números enteros positivos en la matriz A y B
de orden n*m. luego en una tercera matriz almacenar la suma de los elemento matriz A+B. En
esta matriz invertir sus elementos y mostrar el mayor. Finalmente, almacene en un vector estos
elementos y mostrar vector sin elementos repetidos
Reporte 1.- Solicita que ingrese datos en cada matriz y luego genera reportes de la suma de las
dos matrices.

20
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Ejemplo: Generar código de 2 empleados, código registrado en la Base de Datos del Sistema de
Planilla de la Universidad
I.- Empleado 1: Monzon
Ingrese código: 838509
Suma de Factores = 8*2 +3*3+ 8*4 +5*5+0*6+9*7 = 145
Modulo11 = 145%11 = 2 Asignación de letra = ‘C’
Código Generado: 838509C
II.- Empleado 2: Córdova
Ingrese código : 848139
Suma de Factores = 8*2 +4*3+ 8*4 +1*5+3*6+9*7 =146
Modulo11 = 164%11 = 3 Asignación de letra = ‘D’
Código Generado: 848139D
Modulos:
1.- longitud() : Para registrar el numero de Empleados
2.- lectura() : permite leer códigos de empleados sin repetirse
2.- Modulo11() : función que devuelve letra
Procedimientos:
1.-Lectura de total de empleados
2.-Registrar de Empleados por código y Apellidos.
En este modulo se valida el código y luego se busca
el resto del modulo 11 y usando la función modulo11(), se asigna la letra correspondiente. En las
siguientes interfaces se ilustra los resultados

23
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

38.- CARTERO-CIUDAD.- Una empresa dedicada a entregar correspondencias (cartas) en


diferentes Distritos de una ciudad X, en particular Lima, para el recorrido del

cartero se requiere disponer del plano de la


ciudad donde se tiene las distancias entre
distritos, por tanto, en la Municipalidad de
Lima y según gráfica, nos han i nformado que
hay 43 distritos, donde las distancias viene
expresado en kilómetros, asimismo están
comprendidas entre 10..99 Km. Diseñar un
programa que cumpla con los siguientes
procedimientos:
El programa solicitará al usuario el total de distritos y luego la distancia desde un distrito a todos
los demás. Hay que tener en cuenta, que cada una de las combinaciones se pedirá una sola vez
y que no se pedirá la distancia de un distrito consigo mismo. Es decir:
a) Si ha preguntado la distancia del distrito 1 al distrito 2, no se va a preguntar la distancia
del distrito 2 al distrito 1.
b).- Tampoco se va a pedir, la distancia desde el distrito 1 al distrito 1. Etc.
Según estas restricciones, diseñar un programa que permita leer total de distritos (ver figura 2).
Después de leer distancias, hacer las siguientes consultas mostradas en la figura 3):

24
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

39- Diseñar un programa que permita leer n notas en el rango 10...20, luego genere los siguientes
reportes:
1.- Listado de potas ingresadas
formando un número (secuencia)
2.- Nota máxima y su posición.
3.- Nota mínima y su posición.
4.- La Media.
5.- Notas ordenadas en forma
ascendente.
Los resultados se ilustran en la siguiente
interface.

40- Se tiene un vector de notas de n alumnos (10<n≤100) donde se almacena promedios (reales
con un decimal). Se pide diseñar un programa que halle lo siguiente:

25
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

a) De las notas almacenados en el vector, queden solamente las notas aprobadas (11≤
nota-aprobadas≤ 20) y las notas desaprobadas en otro vector(0 ≤ nota_ desaprobado<10)
b) Presentar la nota desaprobada con menor frecuencia.

41- Se tiene n almacenes ubicados en un plano cartesiano, donde la posición de cada


almacén es (Xi, Yi ) donde 0 ≤ i ≤ n, asuma que el almacén cero es el origen de donde se
inicia la repartición de mercadería a los demás almacenes
Diseñar un programa que determine la ruta a seguir considerando que desde un almacén
siempre debe ir al más cercano en distancia, sin repetir la visita a un almacén.

42- Diseñar un programa que reciba los datos de una matriz cuadrada de números
enteros positivos de orden n, donde n es impar y mayor que 4 y determine cuanto
suman los números primos que se ubican en el diamante de la matriz. En el ejemplo
siguiente la zona sombreada es el diamante de la matriz. (7Puntos.)

3 4 7 9 10
12 8 5 17 15
9 7 11 12 18
21 23 14 19 12
13 19 27 29 31

En este ejemplo la suma de los primos en el diamante de la matriz seria 75


(7+5+17+7+11+23+19)

43- Desarrollar un algoritmo, que dada una matriz de orden n impar, de números
enteros positivos de 3 cifras, determine la suma de todos los elementos
que sean cubos mágicos y que no pertenezcan a las dos diagonales
principales de la matriz.
Un número de 3 cifras es un cubo mágico si la suma de los cubos de sus cifras
equivale al número dado. Ejemplo 370 es cubo mágico porque 370 = 33 + 73 + 03
Utilice una función para determinar si un número de tres cifras es un cubo mágico
y otra función para determinar la potencia de un número entero a elevado al
exponente b, donde b es entero. Ejemplo:
103 203 370 200 401
410 370 140 202 702
905 121 153 207 151

26
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

38.- CARTERO-CIUDAD.- Una empresa dedicada a entregar correspondencias (cartas) en


diferentes Distritos de una ciudad X, en particular Lima, para el recorrido del

cartero se requiere disponer del plano de la


ciudad donde se tiene las distancias entre
distritos, por tanto, en la Municipalidad de
Lima y según gráfica, nos han i nformado que
hay 43 distritos, donde las distancias viene
expresado en kilómetros, asimismo están
comprendidas entre 10..99 Km. Diseñar un
programa que cumpla con los siguientes
procedimientos:
El programa solicitará al usuario el total de distritos y luego la distancia desde un distrito a todos
los demás. Hay que tener en cuenta, que cada una de las combinaciones se pedirá una sola vez
y que no se pedirá la distancia de un distrito consigo mismo. Es decir:
a) Si ha preguntado la distancia del distrito 1 al distrito 2, no se va a preguntar la distancia
del distrito 2 al distrito 1.
b).- Tampoco se va a pedir, la distancia desde el distrito 1 al distrito 1. Etc.
Según estas restricciones, diseñar un programa que permita leer total de distritos (ver figura 2).
Después de leer distancias, hacer las siguientes consultas mostradas en la figura 3):

24
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Ejercicios con funciones

1. Escriba una función conteo(n) que entregue la cantidad de divisores enteros positivos que
tiene un número entero dado n. Escriba un programa de prueba que use la función escrita para
encontrar cual número entre 1 y 100 tiene más divisores enteros.

2. Escriba un programa de prueba que use la función primo y encuentre dos números enteros
aleatorios menores que 100 tales que su suma sea también un número primo.

3. Escriba una función perfecto(n) que determine si un número entero dado n es un


número perfecto. Un número perfecto debe ser igual a la suma de todos sus divisores enteros
menores que el valor del número.
Ejemplo: 28 = 1 + 2 + 4 + 7 + 14
Escriba un programa de prueba que use la función escrita y encuentre los números perfectos
entre 1 y 1000

4. Escriba una función sumad(n) que entregue la suma de las cifras de un número dado n. Con
esta función escriba un programa que genere 10 números aleatorios entre 1 y 100 y encuentre
cual de ellos tiene la mayor suma de sus cifras.

5. Escriba una función cuad(n) que determine si el cuadrado de un número natural n dado, es
igual a la suma de los primeros n números impares.
Ej. 62 = 1+3+5+7+9+11
Escriba un programa de prueba que ingrese un dato desde el teclado, use la función y muestre
el resultado en la pantalla.

6. Escriba una función secuencia1(n) que entregue el n-ésimo término de la siguiente secuencia,
en la cual cada término, a partir del tercero se obtiene sumando los dos anteriores: 1, 1, 2, 3, 5,
8, 13, 21, .... Escriba un programa de prueba que ingrese un dato desde el teclado use la función
y muestre el resultado en la pantalla.

7. Escriba una función secuencia2(n) que entregue el n-ésimo término de la siguiente secuencia,
en la cual cada término, a partir del cuarto se obtiene sumando los tres anteriores: 1, 1,
1, 3, 5, 9, 17, 31, 57, ..... Escriba un programa de prueba que ingrese un dato desde el teclado,
use la función y muestre el resultado en la pantalla.

8. Escriba una función sim(x) que reciba un entero y determine si es simétrico, es decir si los
dígitos opuestos alrededor del centro son iguales. Escriba un programa de prueba que genere
números aleatorios entre 1 y 10000 hasta obtener un número que sea simétrico

9. Escriba una función alfin(n) que entregue como resultado la cantidad de veces que debe
lanzarse un dado hasta que salga un número n dado como parámetro. Escriba un programa de
prueba que ingrese un dato desde el teclado, use la función y muestre el resultado en la pantalla.

10. Escriba una función conteo(x) que determine la cantidad de términos que deben sumarse
de la serie: 1*2*3 + 2*3*4 + 3*4*5 + 4*5*6+....... hasta que la suma exceda a un valor x dado.
Escriba un programa de prueba que genere un número aleatorio para x entre
1 y 1000, use la función y muestre el resultado en la pantalla.

28
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

39- Diseñar un programa que permita leer n notas en el rango 10...20, luego genere los siguientes
reportes:
1.- Listado de potas ingresadas
formando un número (secuencia)
2.- Nota máxima y su posición.
3.- Nota mínima y su posición.
4.- La Media.
5.- Notas ordenadas en forma
ascendente.
Los resultados se ilustran en la siguiente
interface.

40- Se tiene un vector de notas de n alumnos (10<n≤100) donde se almacena promedios (reales
con un decimal). Se pide diseñar un programa que halle lo siguiente:

25
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

suma=8*2 + 4*3+8*4+1*5+3* 6+9*7 = 146, resto =146%11=3. corresponde a D.


codigo generado =848139D

Las letras disponibles son: ABCDEF..


imprimir(): Subprograma que imprime el código ingresado y su letra generada bajo el concepto
de Modulo 11.
Observación:-
Después del diseño de los subprogramas, defina el
Programa Principal que permita “llamar ” a los
subprogramas respectivos.

15.- En un concurso de belleza participan 12 señoritas candidatas y el jurado calificador ha


establecido 4 criterios de evaluación que son:
Belleza, inteligencia, cuerpo y desenvolvimiento;
donde cada criterio tiene un puntaje de 1 a 10 puntos como máximos simular los resultados
generando puntajes aleatorios para criterio de evaluación y para todas las señoritas candidatas
mostrando en un formato de salida adecuado los resultados obtenidos por cada participante y
determinar el numero de la candidata ganadora(que obtuvo el mayor puntaje), enviando el
siguiente mensaje " Gano la concursante Nro ..”, y si existe varias, dar un mensaje adecuado "
Hay mas de una ganadora " en el caso de que hubiera mas de una ganadora este programa arroja
su resultado y el análisis del
mismo. Debe usar los siguientes
Subprogramas:

GeneraResultadosAleatorios():
Subprograma que almacena datos
tipo enteros(Solo digitos) y en
forma Aleatoria en una Matriz de
Filas(Numero de Participantes) y
Columnas(Criterios de
Evaluación).

PuntajesParticipantes():
Determina Puntajes y por cada
participante guarda en un vector
Total[]

Mayorpuntaje(): Busca numero de ganadoras e indica el lugar(ubicación) respectiva. Asimismo,


el mayor puntaje dentro del vector y totaliza si existe mas de una ganadora(Con igual puntaje).

reportes(): Imprime valores generados aleatoria mente en la matriz, así como datos del vector
Total[] que representan acumulados de evaluación por participante. Asimismo los siguientes
mensajes:
"Hay mas de una ganadora": Si existe más de una ganadora
"Gano la concursante Nro---:"
Observación: El programa principal debe “Llamar a los subprogramas”

16.-El Director de un colegio debe procesar datos de sus alumnos por Asignaturas donde cada
asignatura tiene: Secciones, Alumnos y Notas de la siguiente manera:
Leer numero de Asignaturas, por cada asignatura leer el nombre(cadena ), para cada asignatura
leer el numero de secciones(máximo 5, que son caracteres: A,B,C,D,E) y por cada sección
leer el numero de alumnos (máximo 40) y por cada alumno leer su apellido y el numero de
practicas(máximo 5), luego emitir los siguientes reportes:
1.- Listado por nombre de asignatura, secciones, nombre de alumnos y sus notas

30
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

320 220 301 403 451


215 153 816 708 623

La suma de los cubos mágicos de la matriz, que no pertenecen a las diagonales principales
es 523 = 370 + 153

27
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

Promediopracticas=((p1+p2+p3+p4)/-menor)/3.
4.-CalculaPromedioFinal(exp,exf):Utiliza las el promedio de, practicas y los exámenes
ingresados en parte 2) y permite calcular el promedio final, donde:
promedioFinal=( Promediopracticas +exp+exf)/3. Debe usar examen sustitutorio que reemplaza
al parcial o final si el alumno esta desaprobado.
5.-ImprimirPromedios(promedioFinal):permite emitir un reporte del promedio del curso(s). El
programa debe ser Interactivo que permita procesar notas por cada curso(asignatura); es decir, el
sistema emite el mensaje “Sr. Desea continuar…?.. ( S/N) ”. Cuando edite S, esta en
programa interactivo y cuando edita N, el programa finaliza con la ejecución
18.- Diseñar un programa que permita ingresar un número entero positivo compuesto por solo 2
dígitos, luego calcular el factorial de tal número, usando los siguientes subprogramas:
1.- Lectura( int ) : permite leer solo el numero entero positivo
2.-CalcularFactorial( n ) : Calcula el factorial del numero n.
3.- Invertir(int ): permite mostrar el resultado del factorial en forma Invertida.
4.- CuentaDigitosParesImpares(int):Los resultados de parte 3) se usan para conocer el total de
dígitos pares(incluye el cero :0), Ali como el total de impares
5.-Reportes(): Permite mostrar el factorial del numero ingresado, asimismo el factorial invertido.
VII.-Diseñar un programa que utilice los siguientes subprogramas:
longitud(p) : Permite leer el tamaño del vector;
lectura(p,a[]): Permite leer elementos tipo
enteros en el vector.
max(p,a[]): En forma Recursiva permite
devolver el máximo valor que se localice en el
vector.
-
19.- Diseñe un Programa “ No Recursivo ” que
contenga los siguientes subprogramas y donde
cada uno realiza sus tareas especificas y desde
el programa principal “Llamar” a cada
subprograma.
longitud(int ): Permite al usuario definir el
tamaño o longitud del vector

lectura(int a[10], int pos[10], int l ) : Permite


almacenar en cada vector, edades y su posición
respectiva:

ordenar(int edad[10],int pos[10], int l );


Permite Ordenar en forma ascendente las
edades, conservando su posición original.
reportes(int a[10],int pos[10], int l ) : Permite
generar reportes de edades y su posición
original.
Programa Principal: permite “llamar ” a los subprogramas. Debe ser Interactivo con el usuario. .
20.- Diseñe un Programa “ Recursivo ” que contenga los siguientes subprogramas y donde cada
uno realiza sus tareas especificas y desde el programa principal “Llamar” a cada subprograma.

32
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

leer(int n, int x[ ] ): Es un proceso que permite al usuario definir el tamaño o longitud del vector ,
asimismo realiza la Lectura de datos.

sumad(int n, int x[ ]):Es una función Recursiva que devuelve la suma acumulada de los elementos
del vector. Asimismo informa parcialmente el numero de “ llamada ” a la función. En la siguiente
figura se ilustra tales procesos.

La siguiente aplicación, permita procesar informacion de un conjunto de n Alumnos(n<=1000),


21.- usando los siguientes atributos: Nombre(cadena 20), codigo(solo de 3 digitos). En esta
aplicación se ilustra la tecnica de Diseño tipos Top -Down : DISEÑO MODULAR
DEPENDIENTE, basado en el concepto de Procedimientos(Procesos) y Funciones. Tambien
se resalta las tecnicas de Listas y Tablas(Matriz) para procesar cadenas. A continuacion se
describe cada Modulo y su tarea especifica que estos realizan:

.-Es un proceso para definir la cantidad de Alumnos. En la siguiente figura se ilustra la


ejecucion de este modulo, donde para iniciar se ingrese 2 alumnos, pues existen procesos
Longitud()
que requieren por lo menos 2 o mas alumnos para
realizar instrucciones(ordenamiento): Asimismo, iniciar
con dos alumnos es condicion necesaria y suficiente, mas
adelante mediante el modulo de modulo de insercion se
registrar nuevoa alumnos.

.-Es un proceso donde el usuario ingresa los datos


Lectura()
de alumnos por Nombres(Cadena 20) y se
almacena en una Matriz, su codigo se almacena en
un vector según el tamaño de alumnos.En la siguiente
figura se ilustra el proceso de entrada de deatos al
sistema.

.-Es un procedimiento que permita generar un listado de los alumnos y sus datos ingresados.
Reportes()Asimismo indica la posicion de cada
registro, este dato es importante cuando se
realiza el ordenamiento y permite concoer el
lugar inicial de ingreso del registro. En la
siguiente figura se ilustra el proceso de entrada
de deatos al sistema.

33
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

-Es un proceso que


OrdenarNombresAsc() permita Ordenar
datos de Alumnos
por Nombre y en forma Ascendente. Usando
el Proceso Reportes(), se genera el reporte
respectivo.

BuscarNombre() .- Es un proceso

que permita al usuario realizar busquedas

de alumnos por Nombre. En las figuras

adjuntas se ilustra y verifica que los

Compiladores hacen una diferencia entre letras Mayusculas de Minusculas.

Asimismo este proceso permite al usuario en forma Interactiva informar la existencia del alumno
y el reporte acumulado si hubiera varios alumnos con el igual nombre.
.-
OrdenarcodigoAsc()
Es un procedimiento que permita generar un reporte de alumnos ordenados en
forma Ascendente, tal como se ilustra en la
siguiente figura.
InsertarDatos().- Es un proceso que permite insertar nuevo
registro(lo importante es mostrar como insertar una
cadena en una matriz ). Observe que el codigo 100 se repite,
pues se hace con la finalidad de

Eliminacion() Es un procedimiento que permite eliminar registros que tienen igual codigo. Ver
figuras adjuntas(Para esta aplicación se considero el ingreso de codigos sin validar, debe cuidar
que este dato es UNICo en sistemas reales)

34
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

22.- Diseñar un programa que conga los siguientes subprogramas:


longitud(entero a ): Es un procedimiento que permite definir el total de elementos(5 o mas
alfanuméricos) para procesar el subprograma Validación().

Validación(entero x): Es un procedimiento que permite al usuario leer dígitos y letras. La


validación del procedimiento consiste en ir ingresando digito por digito desde teclado(capturados
automáticamente), si después de un digito Ud. Ingresa una letra, el sistema envía inmediatamente
el mensaje “Error!!! Deben ser solo dígitos, ingrese de nuevo = ”, indicando que vuelva a
ingresar un digito(datos anteriores no se
eliminan). Este proceso se repite hasta
que se satisfaga la cantidad de elementos
ingresados en el subprograma
longitud(a). Después de completar el
proceso, se debe generar los siguientes
reportes:
1.- los caracteres ingresados como una
cadena
2.- los dígitos ingresados como una
cadena numérica

invertirsec(entero q): Es una función que recibe la cadena alfanumérica convertida en un


numero entero, luego procesa y devuelve el numero invertido.

23.- Diseñe un programa que permita usar los


siguientes subprogramas:
numero(entero n):
Procedimiento que permite leer un numero
entero.

35
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

ordenaasc(entero r): Es una función que recibe como parámetro el numero ingresado y luego
procesa para devolver el numero ordenado en forma ascendente
24.- Diseñe un programa que permita usar los
siguientes subprogramas:
leenumero(): Procedimiento que permite leer un
numero N>0.
recursiva(entero N, entero aux) :Procedimiento
Recursivo que proceso el numero e informa las
parejas(a,b) que se pueden formar, bajo la condicio a>=b

25.- Diseñar un programa que contenga los siguientes subprogramas:


dimension(entero n): Es un procedimiento que permite definir la dimensión de una matriz.

lectura(entero a[10][10], entero tam) Es un procedimiento que permite al usuario leer


elementos tipo enteros y almacenarlo en
la matriz respectiva.
ingrese de nuevo = ”, indicando que
vuelva a ingresar un digito(datos
anteriores no se eliminan).

sumadiag(entero a[10][10], entero


tam) Es una función que recibe datos de
la matriz y la dimensión y luego en forma
recursiva devuelve la suma acumulada
de los elementos de la diagonal de tal
matriz.. El programa debe ser interactivo con el usuario, para lo cual se debe leer la cadena Si /
No .
26.-Diseñe un Programa, compuesto por los siguientes subprogramas:
longitud_Vector(ib[], m ): Subprograma (procedimiento) para lectura del tamaño del vector.
lectura_Edades(b[], m): Subprograma (procedimiento) para lectura de edades en el rango 10..99
ordena(b[], n) : Subprograma(procedimiento) que ordena las edades en forma Ascendente.
pares_impares(b[],n): Subprograma(función) que devuelve información de vectores con edades
pares e impares, asimismo la secuencia de edades que forman en cada vector

36
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T

reportes():Subprograma(procedimiento) que realiza un reporte de edades ordenadas en forma


ascendente.

27- Dada la serie, diseñar un programa mediante:


a) Usar estructuras repoettivas, condiconales. Calcule con eror de 0.000001
b) Usar subprogramas necesarios para hallar la suma de la serie hasta un n dado por
el usuario y evaluado en x=k

3 5 𝑛+1 2𝑛−1
S =x – 𝑥3! + 𝑥5! − ⋯ + (−1)(2𝑛−1)!
(𝑥)

El programa debe ser interactivo con usuario

37

Potrebbero piacerti anche