Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
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.
2
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
3
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
4
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
5
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
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
7
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
7
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
16.- Se escribirá un programa que permita jugar al Master Mind. Para ello se escribirá el
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
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.
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.
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
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.
25.- Diseñar un programa que permita ingresar números enteros y almacenarlo en un vector de
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.
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
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
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
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.
19
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
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
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
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
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.
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
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
24
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
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.
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
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[]
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
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
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.
.-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
BuscarNombre() .- Es un proceso
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
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
36
Algoritmos y Estructura de Datos ST 221 Docente MSc. Cordova Neri, T
3 5 𝑛+1 2𝑛−1
S =x – 𝑥3! + 𝑥5! − ⋯ + (−1)(2𝑛−1)!
(𝑥)
37