0% encontró este documento útil (0 votos)
92 vistas6 páginas

We

Este documento presenta 55 ejercicios de programación sobre algoritmos y estructuras de datos. Los ejercicios involucran temas como el procesamiento de archivos de datos, vectores, matrices, funciones y procedimientos. El objetivo es que los estudiantes desarrollen programas en un lenguaje de programación para resolver cada uno de los problemas planteados.

Cargado por

Ramón Chauqui
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • programación estructurada,
  • programación en JSON,
  • algoritmos de búsqueda,
  • tipos de datos,
  • programación en Ruby,
  • programación en XML,
  • simulación,
  • análisis de complejidad,
  • listas,
  • programación en Go
0% encontró este documento útil (0 votos)
92 vistas6 páginas

We

Este documento presenta 55 ejercicios de programación sobre algoritmos y estructuras de datos. Los ejercicios involucran temas como el procesamiento de archivos de datos, vectores, matrices, funciones y procedimientos. El objetivo es que los estudiantes desarrollen programas en un lenguaje de programación para resolver cada uno de los problemas planteados.

Cargado por

Ramón Chauqui
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

Temas abordados

  • programación estructurada,
  • programación en JSON,
  • algoritmos de búsqueda,
  • tipos de datos,
  • programación en Ruby,
  • programación en XML,
  • simulación,
  • análisis de complejidad,
  • listas,
  • programación en Go

ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 1/6

Ejercicio Nro. 29:

Dado el archivo ALUMNOS.DAT con los datos personales de alumnos ordenado por legajo, donde
cada registro contiene:
a) Nro. de legajo (7 dígitos) b) Apellido y nombres (30 caracteres) c) Domicilio (30 caracteres)
d) Código postal (4 dígitos) e) Teléfono (10 caracteres) f) Año de ingreso (4 dígitos)
y otro con el mismo orden que el mencionado llamado NOVEDAD.DAT, con las actualizaciones (altas,
bajas y modificaciones) a ser aplicadas, donde cada registro contiene además de todos los campos
de ALUMNOS.DAT un código de operación ('A'= Alta, 'B'= Baja, 'M'= Modificación).
Desarrollar el programa que actualice el archivo ALUMNOS.DAT con los registros de NOVEDAD.DAT y
obtenga el archivo actualizado ALUMACTU.DAT.

Ejercicio Nro. 37:

Ingresar un valor N (< 25). Generar un arreglo de N componentes en el cual las mismas contengan los
primeros números naturales pares e imprimirlo.

Ejercicio Nro. 38:

Ingresar un valor entero N (< 30) y a continuación un conjunto de N elementos. Si el último elemento
del conjunto tiene un valor menor que 10 imprimir los negativos y en caso contrario los demás.

Ejercicio Nro. 39:

Ingresar un valor entero N (< 20). A continuación ingresar un conjunto VEC de N componentes. A
partir de este conjunto generar otro FACT en el que cada elemento sea el factorial del elemento
homólogo de VEC. Finalmente imprimir ambos vectores a razón de un valor de cada uno por renglón
Nota: El programa principal puede tener un máximo de 6 instrucciones.

Ejercicio Nro. 40:

Ingresar un valor entero N (< 25). A continuación ingresar un conjunto VEC de N componentes. Si la
suma de las componentes resulta mayor que cero imprimir las de índice par, sino las de índice impar.

Ejercicio Nro. 41:

Ingresar un valor entero N (< 30). A continuación ingresar un conjunto UNO y luego otro conjunto DOS,
ambos de N componentes.
Generar e imprimir otro conjunto TRES intercalando los valores de posición impar de DOS y los valores
de posición par de UNO.
Diseñar un procedimiento que rellene un arreglo en posiciones salteadas con las componentes de
otro y usarlo para cada conjunto.

Ejercicio Nro. 42:

Ingresar un valor entero N (< 40). A continuación ingresar un conjunto VALOR de N elementos.
Determinar e imprimir el valor máximo y la posición del mismo dentro del conjunto. Si el máximo no es
único, imprimir todas las posiciones en que se encuentra. Defina dos estrategias para:
a) Recorrer VALOR dos veces b) Recorrer VALOR una sola vez

Ejercicio Nro. 43:

Ingresar un valor entero N (< 15). A continuación ingresar un conjunto DATO de N elementos. Generar
otro conjunto de dos componentes MEJORDATO donde el primer elemento sea el mayor valor de
DATO y el segundo el siguiente mayor (puede ser el mismo si está repetido). Imprimir el conjunto
MEJORDATO con identificación.

Ejercicio Nro. 44:


ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 2/6

Ingresar un valor entero N (< 25). A continuación ingresar un conjunto GG de N elementos. Imprimir el
arreglo en orden inverso generando tres estrategias para imprimir los elementos a razón de:
a) Uno por línea b) Diez por línea c) Cinco por línea con identificación

Ejercicio Nro. 45:

Ingresar un valor entero N (< 40). A continuación ingresar un conjunto A y luego otro conjunto B
ambos de N elementos. Generar un arreglo C donde cada elemento se forme de la siguiente forma:
C[1]  A[1]+B[N] C[2]  A[2]+B[N-1] .......................... C[N]  A[N]+B[1]

Ejercicio Nro. 46:

Ingresar dos valores enteros M (< 10) y N (< 15). A continuación ingresar un conjunto A de M
elementos y luego otro B de N elementos. Generar e imprimir:
a) Un conjunto C resultante de la anexión de A y B.
b) Un conjunto D resultante de la anexión de los elementos distintos de cero de A y B.

Ejercicio Nro. 47:

Ingresar dos valores enteros M (< 25) y N (< 10) A continuación ingresar un conjunto A de M elementos
y luego otro B de N elementos, ambos ordenados en forma creciente por magnitud. Generar e
imprimir el conjunto TOTAL resultante del apareo por magnitud de los conjuntos A y B.

Ejercicio Nro. 48:

Ingresar un valor entero N (< 40). Luego ingresar un conjunto REFER de N elementos reales (ingresan
ordenados por magnitud creciente). Finalmente ingresar un valor pesquisa X. Desarrollar el programa
que determine e imprima:
a) Con cual elemento (posición) del conjunto coincide, o
b) Entre cuales dos elementos (posiciones) se encuentra, o
c) Si es menor que el primero o mayor que el último.

Ejercicio Nro. 49:

Ingresar un valor entero CANT (< 50) y a continuación un conjunto SINOR de CANT elementos.
Desarrollar un programa que determine e imprima:
a) El conjunto SINOR en el que cada elemento original se intercambie por su simétrico:
A[1] con A[CANT], A[2] con A[N-1], ..... etc.
b) El conjunto SINOR ordenado de menor a mayor sobre si mismo indicando la posición que ocupaba
cada elemento en el conjunto original.

Ejercicio Nro. 50:

Dado un archivo PRECIOS (desordenado) con los precios de cada articulo, donde cada registro
contiene:
a) Nro. de artículo (5 dígitos) b) Descripción del artículo (19 c) Precio por unidad
caracteres) (real)
d) Cantidad en stock (5 e) Nro. de proveedor (4 dígitos)
dígitos)
Desarrollar el programa que imprima el contenido del archivo ordenado por:
1) Nro. de articulo creciente
2) Descripción del articulo (alfabético creciente)
3) Nro. de proveedor creciente y dentro del mismo por Nro. de articulo creciente
4) Nro. de proveedor creciente y dentro del mismo por Nro. de articulo decreciente
Nota: Se dispone de 560 Kb de memoria y hay 20000 artículos como máximo.

Ejercicio Nro. 51:

Una empresa de aviación realiza 500 vuelos semanales a distintos puntos del país y requiere un
programa para el otorgamiento de pasajes.
ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 3/6

Para ello dispone de un archivo de registros, en el que cada registro contiene información de los
vuelos que realiza y la cantidad de pasajes disponibles en cada uno de ellos según se indica:
a) Código del vuelo (6 dígitos) b) Cantidad de pasajes disponibles (3 dígitos)
Se dispone además de otro archivo con los datos de los potenciales compradores, en el que cada
registro tiene:
a) Código de vuelo solicitado b) Cantidad de pasajes solicitados (3 dígitos)
c) DNI del solicitante (8 dígitos) d) Apellido y nombres del solicitante (30 caracteres)
Desarrollar estrategia, algoritmo y codificación del programa que determine e imprima:
1) Para los solicitantes a los cuales se les venden pasajes,
DNI APELLIDO Y NOMBRES CANTIDAD DE CÓDIGO DE
PASAJES VUELO
99999999 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 999 999999
2) Al final del proceso el siguiente listado:
CÓDIGO DE VUELO PASAJES LIBRES PASAJES NO VENDIDOS
999999 999 999
Se le vende al solicitante si la cantidad de pasajes que solicita está disponible, en caso contrario se
computa como pasajes no vendidos.

Ejercicio Nro. 52:

Se desarrolla una carrera automovilística de regularidad constituida por 50 trayectos numerados de 1


a 50. Por cada trayecto se generó un registro con el número de trayecto y el tiempo asignado en
segundos y se encuentran en el archivo ASIGNADO (sin ningún orden)
a) Nro. del trayecto b) Tiempo asignado en segundos (4 dígitos)
Para llevar el control de los corredores, de posición y de abandonos se dispone de un archivo TIEMPO
donde cada registro contiene:
a) Nro. del corredor (3 dígitos) b) Nro. del trayecto c) Tiempo en segundos (4 dígitos)
Los registros de este archivo están ordenados por trayecto pero no por corredor. A partir del
abandono de un corredor en un trayecto no habrá más registros para el en el archivo.
Desarrollar estrategia, algoritmo y codificación del programa que determine e imprima:
1) Por cada etapa, su número y el del corredor ganador de la misma.
2) Por cada etapa, su número y los de los corredores que abandonan en la misma.

Ejercicio Nro. 53:

Una empresa que distribuye mercadería hacia distintas localidades del interior dispone de dos
archivos de registros:
Uno denominado DESTINOS con información de la distancia a cada uno de los destinos:
a) Nro. de destino (3 dígitos) b) Distancia en kilómetros (NNN.NNN)
Otro denominado VIAJES con los viajes realizados por cada camión (< 200), donde cada registro
contiene:
a) Patente del camión (6 caracteres) b) Nro. de destino c) Nro. de chofer (1 a 150)
Desarrollar estrategia, algoritmo y codificación del programa que determine e imprima:
1) Cantidad de viajes realizados a cada destino (solo si > 0).
2) Nro. de chofer con menor cantidad de Km (entre los que viajaron).
3) Patente de los camiones que viajaron al destino 116 sin repeticiones de las mismas.

Ejercicio Nro. 54:

Ingresar dos valores, M (< 30) y N (< 25) y a continuación por filas todos los componentes de una
matriz MATRIZA de M filas y N columnas. Desarrollar un programa que:
a) Imprima la matriz MATRIZA por columnas.
b) Calcule e imprima el valor promedio de los componentes de la matriz.
c) Genere e imprima un vector VECSUMCOL donde cada componente sea la suma de la columna
homóloga.
d) Genere e imprima un vector VECMAXFIL donde cada componente sea el valor máximo de cada
fila.

Ejercicio Nro. 55:


ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 4/6

Ingresar un valor N (< 25) y luego por filas una matriz cuadrada CUADRA de N filas y columnas.
Desarrollar un programa que determine e imprima:
a) Todos los elementos de la diagonal principal o secundaria según de cual resulte mayor la
sumatoria de elementos.
b) Los elementos del cuarto (N/2 filas y N/2 columnas) cuya sumatoria resulte mayor (considerando
que N fuera par).
c) Los elementos de la triangular superior o inferior dependiendo de cual tenga mayor sumatoria de
elementos.

Ejercicio Nro. 56:

Se da un conjunto de 744 temperaturas que se tomaron en una localidad diariamente hora por hora
durante los 31 días de un mes (el conjunto esta ordenado por día y hora). Desarrollar un programa
que determine e imprima:
a) Armar la matriz TEMPEDIA en que cada fila corresponda a un día y cada columna a una hora e
imprimirla por horas.
b) En que día y hora se produjo la temperatura máxima del mes.
c) En que día se produjo la menor temperatura media.
d) A que hora se produjo la mayor temperatura media.

Ejercicio Nro. 57:

Ingresar dos valores, M (< 20) y N (< 25) y a continuación por columnas todos los componentes de
una matriz DESORDE de M filas y N columnas. Desarrollar un programa que:
a) Ordene (creciente) cada columna de la matriz sobre si misma y la imprima a razón de una
columna por renglón.
b) Ordene (creciente) la matriz sobre si misma por fila desde el elemento 1,1 al M,N y la imprima a
razón de una fila por renglón.
Ejercicio Nro. 58:

Ingresar por plano, fila y columna todos los elementos de una matriz MATRIDIM de M planos, filas y
columnas. Desarrollar un programa que:
a) Imprima la matriz MATRIDIM por columnas, fila, plano.
b) Calcule e imprima el valor promedio de la matriz.
c) Determine e imprima el mayor valor y en que lugar del la matriz se encuentra.
d) Genere e imprima una matriz MATCSUMCOL donde cada elemento sea la suma de la columna
homóloga.
e) Genere e imprima una matriz MATMAXFIL donde cada elemento sea el valor máximo de cada fila.

Ejercicio Nro. 59:

Dada una pila y un valor I, desarrollar un procedimiento que elimine los 2 primeros nodos de la pila y
deje el valor I como primero. (Definir parámetros y codificar).

Ejercicio Nro. 60:

Dada una pila y un valor I, desarrollar un procedimiento que inserte I como tercer valor de la pila.
(Definir parámetros y codificar).

Ejercicio Nro. 61:

Idem ejercicio 60 pero retornando un parámetro con valor 'S' o 'N' según haya sido exitoso o no el
requerimiento. (Definir parámetros y codificar).

Ejercicio Nro. 62:

Dada una pila y dos valores X e I, desarrollar un procedimiento que inserte el valor X en la posición I
de la pila si es posible. (Definir parámetros y codificar).

Ejercicio Nro. 63:


ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 5/6

Dada una pila y un valor X, desarrollar un procedimiento que inserte el valor X en la última posición
de la pila y la retorne. (Definir parámetros y codificar).

Ejercicio Nro. 64:

Dada una pila y dos valores X e Y, desarrollar un procedimiento que reemplace cada valor igual a X
que se encuentre en la pila por el valor Y retornando la pila modificada. En caso de no haber ningún
valor igual a X retornar la pila sin cambio. (Definir parámetros y codificar).

Ejercicio Nro. 65:

Definir una función INVERSA que evalúe dos conjuntos de caracteres separados por un punto y
retorne True si los conjuntos son inversos (ej: ABcDe.eDcBA) o False si no lo son. Los conjuntos deben
ingresarse por teclado. (Definir parámetros y codificar).

Ejercicio Nro. 66:

Desarrollar un procedimiento que ingrese por teclado un conjunto de Apellidos y Nombre de alumnos
y los imprima en orden inverso al de ingreso. (Definir parámetros y codificar).
Ejercicio Nro. 67:

Dada una pila desarrollar un procedimiento que ordene la misma de acuerdo al valor de sus nodos y
la retorne. Solo se deben usar pilas. (Definir parámetros y codificar).

Ejercicio Nro. 68:

Dada una cola (nodo = registro + puntero), desarrollar y codificar un procedimiento que elimine 2
nodos de la misma (indicar con un parámetro 'S'/'N' si ello fue‚ o no posible)

Ejercicio Nro. 69:

Dada una cola (nodo = registro + puntero), desarrollar y codificar una función que devuelva la
cantidad de nodos que tiene.

Ejercicio Nro. 70:

Dadas dos colas COLA y COLB (nodo = registro + puntero), desarrollar y codificar un procedimiento
que genere una única cola COLAB a partir de ellas. (Primero los nodos de COLA y luego los de COLB).

Ejercicio Nro. 71:

Dada una cola (nodo = registro + puntero), imprimirla en orden natural si tiene más de 100 nodos,
caso contrario imprimirla en orden inverso.

Ejercicio Nro. 72:

Dadas dos colas COLA y COLB (nodo = registro + puntero), desarrollar y codificar un procedimiento
que genere otra cola COLAB por apareo del campo ARRIBO del registro (define orden creciente en
ambas).
Nota: COLA y COLB dejan de ser útiles después del apareo.

Ejercicio Nro. 73:

Dado un archivo de registros de alumnos, donde cada registro contiene:


a) Apellido y Nombre del alumno (35 caracteres) b) Número de legajo (7 dígitos)
c) División asignada (1 a 100)
ordenado por número de legajo, desarrollar el algoritmo y codificación del programa que imprima el
listado de alumnos por división, ordenado por división y número de legajo crecientes, a razón de 55
alumnos por hoja.
ALGORITMOS Y ESTRUCTURAS DE DATOS hoja 6/6

Ejercicio Nro. 74:

Idem Ejercicio Nro. 73, pero el listado de alumnos por división debe realizarse ordenado creciente por
división y decreciente por número de legajo.

Ejercicio Nro. 75:

Idem Ejercicio Nro. 73 pero considerando que las divisiones asignadas son 100 y se identifican con un
código de 4 caracteres.

Ejercicio Nro. 76:

Dado un arreglo de N (< 30) colas (nodo = registro + puntero), desarrollar y codificar un
procedimiento que aparee las colas del arreglo en las mismas condiciones que las definidas en el
Ejercicio Nro. 72.
Nota: Retornar la cola resultante y no mantener las anteriores.

Ejercicio Nro. 77:

Dada una lista (nodo = registro + puntero), desarrollar y codificar una función que devuelva la
cantidad de nodos que tiene.

Ejercicio Nro. 78:

Dadas dos listas LISTA y LISTB (nodo = registro + puntero), desarrollar y codificar un procedimiento que
genere una única lista LISTC a partir de ellas. (Primero los nodos de LISTA y luego los de LISTB).

Ejercicio Nro. 79:

Dada una LISTA (nodo = registro + puntero), imprimirla en orden natural si tiene más de 100 nodos,
caso contrario imprimiría en orden inverso.

Ejercicio Nro. 80:

Dadas dos listas LISTA y LISTB (nodo = registro + puntero), desarrollar y codificar un procedimiento que
genere otra lista LISTC por apareo del campo LEGAJO del registro (define orden creciente en ambas).
Nota: LISTA y LISTB dejan de ser útiles después del apareo).

Ejercicio Nro. 81:

Dado un archivo de registros de alumnos ARCHA sin ningún orden, donde cada registro contiene:
a) Apellido y Nombre del alumno (34 caracteres) b) Número de legajo (6 dígitos)
c) División asignada (1 a 100)
Se debe desarrollar el algoritmo y codificación del programa que genere un archivo ARCHL igual al
anterior pero ordenado por número de legajo.
Nota: Memoria estática 64 Kb; dinámica suficiente si ningún nodo ocupa más de 12 bytes.

Ejercicio Nro. 82:

Dado un archivo de registros de alumnos ARCHA sin ningún orden donde cada registro contiene:
a) Apellido y Nombre del alumno (34 caracteres) b) Número de legajo (6 dígitos)
c) División asignada (3 dígitos)
Se debe desarrollar el algoritmo y codificación del programa que imprima el listado de alumnos por
división ordenado por división y número de legajo crecientes, a razón de 55 alumnos por hoja.

También podría gustarte