Sie sind auf Seite 1von 14

E J E R C I C I O S P R Á C T I C O S

1 r a . E D I C I Ó N
A Ñ O 2 0 0 1

Lic. Gustavo López


Sr. Augusto Vega

Cátedra Lic. Gustavo López


Facultad de Ingeniería – Universidad de Buenos Aires
GUÍA N° 1
GUÍA N° 1

Datos escalares.

1.- Leer un número real y decir si es mayor, menor o igual a cero.

2.- Leer dos números reales e imprimir el mayor de ellos.

3.- Dado el radio R de una esfera, calcular e imprimir su superficie y su volúmen.

4.- Leer un número N y calcular su factorial.

5.- Leer la base y la altura de un rectángulo, calcular el perímetro y la superficie.

6.- Leer dos números A y B e intercambiar el valor de sus variables.

7.- Dadas las horas de partida y de llegada de un móvil, expresadas en horas, minutos y
segundos, calcular su velocidad promedio sabiendo que la distancia recorrida es D.

8.- Escribir un algoritmo que determine si un número es par.

9.- Escribir un algoritmo que lea un número real cualquiera y lo imprima redondeado con
dos decimales.

10.- Escribir un algoritmo que determine si un número N es divisible por M.

11.- Leer una serie de números reales, terminando la serie con un cero. Imprimir los datos a
medida que se los ingresa junto con la suma parcial de los mismos.

12.- Dada una serie de números reales, determinar el valor máximo, el mínimo y las
posiciones en que éstos se encontraban en la serie.

13.- Leer un valor N y luego N números enteros de cuatro cifras. Se pide imprimir el mayor
y el menor y las veces que aparece cada uno. Pueden venir datos erróneos.

14.- Escribir un algoritmo que determine si un número N es primo.

15.- Leer A y B, enteros de cuatro cifras. Calcular C = A * B mediante sumas sucesivas e


imprimir el resultado.

16.- Leer A y B, enteros de cuatro cifras. Calcular C = A ^ B mediante multiplicaciones


sucesivas e imprimir el resultado.

17.- Escribir un algoritmo que descomponga un número en sus factores primos.

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 3


18.- Desarrollar un algoritmo para hallar el máximo común divisor entre dos enteros dados.

19.- Dada una serie de números enteros terminada en cero, imprimir los cuatro mayores.

20.- Dada una lista de nombres y de salarios respectivos, determinar el salario máximo, el
mínimo y la persona que percibe cada uno.

21.- Realizar un algoritmo que lea una serie de números reales y verifique si están
ordenados ascendentemente o no, informando por pantalla.

22.- Dada una serie de datos de la forma mes (1 a 12, no vienen ordenados), cantidad
recaudada (en pesos) y costo total (en pesos), hacer un algoritmo que calcule e imprima
cuál fue el mes que arrojó mayor ganancia.
La serie termina con mes igual a cero y pueden venir datos erróneos.

23.- La ecuación para estimar la población en un período de N años, si el crecimiento


porcentual es R %, es:

P = Po * (1 + R/100) ^ N

Escribir un algoritmo que tabule las poblaciones previstas para la Ciudad de Buenos Aires
entre 1980 y 2050, con intervalo de 10 años, sabiendo que:

R = 1,7% y Po = 9.927.000 (en 1980)

24.- Por cada empleado de una empresa se leen tres datos que representan el nombre,
sueldo básico y antigüedad de dicho empleado. Se debe emitir un listado que contenga el
nombre y sueldo a cobrar de todos los empleados.
El sueldo se calcula adicionando al básico el 50% si la antigüedad supera los 10 años. El
lote de datos finaliza con un nombre de empleado NN.

25.- Pasar un período expresado en segundos a un período expresado en días, horas,


minutos y segundos.

26.- Se leen 300 datos que representan el peso de la misma cantidad de niños que hay
internados en un hospital. Se desea confeccionar la siguiente tabla:

Entre 0,000 y 10,000 kg. hay ............. niños.


Entre 10,001 y 20,000 kg. hay ............. niños.
Entre 20,001 y 30,000 kg. hay ............. niños.
De más de 30,000 kg. hay ............. niños.

27.- Leer una fecha base, y luego N fechas del tipo DD/MM/AA, pasándolas a días a partir
de la fecha base.

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 4


28.- Hacer un procedimiento que dada una fecha en formato DD/MM/AA, verifique si es
correcta o errónea.

Ej.: El 31/02/97 es una fecha errónea.

29.- Leer datos de lados de un triángulo A, B, C; haciendo consistencia de datos (Debe ser
A < B + C si A es el lado mayor).

Informar según sea A^2 con respecto a B^2 + C^2, si el triángulo es rectángulo,
acutángulo u obtusángulo.

30.- La relación entre temperaturas Celsius y Fahrenheit está dada por:

C = 5/9 * (F - 32)

Escribir un algoritmo que haga una tabla de valores Celsius-Fahrenheit, para valores entre
O °F y 200 °F, con intervalos de 10°.

31.- Contar la cantidad de letras de un telegrama que termina en punto (los textos se leen
letra por letra).

32.- Contar la cantidad de palábras, separadas por uno o más espacios, de un telegrama que
termina en punto.

33.- Dado un texto terminado en punto, determinar cuál es la vocal que aparece con mayor
frecuencia.

34.- Dado un texto terminado en “/” se pide determinar cuántas veces aparece determinada
letra, leída de teclado.

35.- Dado un texto terminado en “/” averiguar qué cantidad de letras tiene la palábra más
larga. Suponer que nunca sucede que la primera letra del texto es una “/”.

36.- Dado un texto terminado en “/” determinar cuántas veces tres palábras seguidas
comienzan con la misma letra.

37.- Leer dos letras de teclado y luego un texto terminado en “/”. Se pide determinar la
cantidad de veces que la primera letra precede a la segunda en el texto.

38.- Leer N y luego N lotes de números reales que terminan con un valor 0, y calcular la
media individual de cada lote, junto con la media total de todos los números ingresados.

39.- Se dispone del registro diario de lluvias de un mes para una localidad. Si llovió algún
día del mes, indicar cuál fue el día más lluvioso y utilizar un indicador lógico para
discriminar si llovieron dos días seguidos en el mes. Si no llovió en todo el mes emitir un
mensaje.

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 5


40.- Se leen una serie de códigos de empleados, con su sexo (caracter “M” o “F”) y sus
antigüedades (en años), finalizando el lote con código de empleado nulo. Se debe
determinar qué empleados varones tienen una antigüedad mayor a 3 años y qué empleadas
mujeres tienen código menor a 500.

41.- Se lee un texto terminado en “&” con palábras separadas por uno o más de los
siguientes caracteres: blanco, coma, punto, punto y coma. Las oraciones se encuentran
separadas por puntos, seguidos eventualmente de una serie de blancos.
Se debe determinar cuántas oraciones de más de cinco palábras hay en el texto.

Vectores. Procedimientos.

42.- Desarrollar un procedimiento que devuelva en un vector los números primos


entre 2 y 200.

43.- Dada la siguiente definición:


type
TipoBaseConj = 1..256;
Conj = array [TipoBaseConj] of boolean;

Implementar como subprogramas sepadados las operaciones unión, intersección y


diferencia entre dos conjuntos A y B (en este ejercicio llamamos conjuntos a los
arrays).

44.- Dadas las siguientes declaraciones:

Const
Primanio = 1;
Ultanio = 200;
Type
Rango = Primanio .. Ultanio;

Escribir un programa que cargue en un vector llamado bisiestos todos los años
bisiestos correspondientes al intervalo de tiempo que va entre los años definidos.
Nota: Un año es bisiesto cuando es múltiplo de cuatro, exceptuando los múltiplos
de 100 que no lo sean de 400.

Ej.: son bisiestos: 1988, 1992, 2000


no lo son: 1800, 1853, 1900

45.- Dados dos vectores A y B, de N elementos cada uno, se desean calcular

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 6


a) el vector suma: c(i) = a(i) + b(i)
b) el producto escalar: p = ∑ a( i ) * b(i )

46.- Construir un algoritmo que para cada auto particapante en una carrera de TC
2000 lea un código de auto y dos tiempos de vuelta (en segundos y centésimas).
Previamente se debe leer la longitud del circuito. Dada una serie de códigos de auto
leídos a continuación, se deben informar las velocidades promedio correspondientes
a cada tiempo de vuelta de dichos autos. Ambos conjuntos de datos terminan con un
código de auto negativo.

47.- Por cada alumno que rindió un exámen de inglés se lee el número de padrón, el
código de carrera (entre 1 y 9) y la nota obtenida. Se desea saber la cantidad de
alumnos por carrera que rindieron el exámen y el porcentaje de alumnos que
obtuvieron cada nota.
Hallar el porcentaje de alumnos de cada carrera que resultaron aprobados.

48.- Se lee un vector X de N elementos (enteros). Escribir un algoritmo que


devuelva un vectos que tenga todos los elementos de X, pero sin repetirlos (es
decir, “representación de conjunto”).

49.- Se leen dos vectores A y B, de N y M elementos respectivamente. Construir


un algoritmo que halle los vectores unión e intersección de A y B.

50.- Por cada alumno que aprueba una materia en la Facultad de Ingeniería se
ingresa el número de padrón del alumno y el código de la materia aprobada. El lote
de datos termina con un número de padrón negativo. Se pide:
a) Un listado en el que, para cada alumno, conste la cantidad de materias aprobadas.
b) Un listado de las materias que fueron aprobadas por lo menos por un alumno.
c) El o los números de padrón de los alumnos que aprobaron la mayor cantidad de
materias.

51.- Escribir un programa Pascal que lea un texto (caracter por caracter) terminado
en “/” y con palábras separadas por uno o más blancos, determine cual es la palábra
palíndroma (capicúa) más larga del texto, y la imprima.
Suponer que los palíndormos tienen todos una longitud distinta. El texto puede
tener blancos antes de la primera palábra.

52.- Se lee un texto terminado en “&” con palábras separadas por uno o más de los
siguientes caracteres: blanco, coma, punto y coma o punto. Se debe determinar la
longitud de la palábra más corta e imprimir dicha palábra. Si hubiera más de una
palábra de esa longitud, imprimirlas todas, suponiendo que no son más de 100.

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 7


Arreglos Multidimensionales. Funciones y parámetros.

53.- Diseñar un algoritmo que halle una matriz C como suma de dos matrices A y
B. La dimensión de las matrices de MxN se lee como dato.

54.- Diseñar un algoritmo que halle un vector cuyos elementos son la suma de los
elementos de cada fila de una matriz previamente ingresada.

55.- Escribir un programa que calcule la traza de una matriz cuadrada. Recordar
que la traza de una matriz es la suma de los elementos de su diagonal principal.
La matriz dato se leerá a razón de una fila por línea.

56.- Diseñar un algoritmo que determine si una matriz cuadrada ingresada es la


matriz identidad.

57.- Escribir un subprograma que, al ser invocado TriDiag(M,N), determine si la


matriz M, cuadrada y de orden N, es tridiagonal. Una matriz es tridiagonal cuando
los únicos elementos distintos de cero son los que se encuentran sobre la diagonal
principal y sus dos diagonales paralelas adyacentes.
Se presume que el módulo invocante posee las siguientes declaraciones:

Const
Max = 20;
Type
Rango = 1 .. Max;
Matriz = array [Rango, Rango] of real;

58.- Escribir un subprograma que, al ser invocado InvSim (M,N), determine si la


matriz M, cuadrada y de orden N, es simétrica respecto de su diagonal secundaria.
Se denomina diagonal secundaria a los elementos de la matriz que están sobre la
línea que va desde el ángulo superior derecho hasta el ángulo inferior izquierdo de la
misma.
Se presume que el módulo invocante posee las siguientes declaraciones:
Const
Max = 20;
Type
Rango = 1 .. Max;
Matriz = array [Rango, Rango] of real;

59.- Dada una matriz de MxN y un vector de S elementos, determinar si los


elementos del vector pertenecen a la matriz.

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 8


60.- Escribir un programa Pascal que lea una serie de fechas (día, mes y año), la
cantidad de pasajeros transportados por una línea aérea en esa fecha y el monto
recaudado en dólares, determinando en qué días del período se transportanron más
de 2000 pasajeros (puede no haber ninguno), indicando el monto recaudado en ese
día. También deberá emitirse un listado de los días en que el monto recaudado
superó los 500.000 dólares (puede no haber ninguno). Ambos listados deber ser
emitidos por separado. El lote de datos termina con una fecha inválida. El período
no será mayor a 366 días.

61.- Dadas las siguientes declaraciones:


Const
MaxRango = 100;
Type
Rango = 1 .. MaxRango;
Matriz = array [Rango, Rango] of real;

Escribir un subprograma que, al ser invocado como DiagDom (A,N) verifique que la
matriz A (cuadrada y de orden N) sea una matriz diagonal dominante.
Nota: Una matriz diagonal dominante es aquélla en la que cada valor absoluto de un
elemento de la diagonal principal es mayor a la suma de los valores absolutos del
resto de los elementos de su fila más la suma de los valores absolutos del resto de
los elementos de su columna.

62.- Dadas las siguientes declaraciones:


Const
MaxRango = 100;
Type
Rango = 1 .. MaxRango;
Matriz = array [Rango, Rango] of real;

Escribir un subprograma que, invocado como Múltiplo (A, B, N), verifique que la
matriz B sea múltiplo de la matriz A (ambas cuadradas y de orden N).

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 9


GUÍA N° 2
GUÍA N° 2

Cadenas de caracteres. Métodos de Ordenamiento. Recursividad.

1.- Construir un procedimiento que, invocado como Intercal (X,Y), intercambie los
valores de las variables X e Y.

2.- Construir un procedimiento que obtenga una cadena de caracteres B, de M


posiciones, como una subcadena de otra cadena A dada, de N posiciones, al ser
invocado como Subcad (A, N, B, M, Pos), donde Pos es la posición de la cadena A a
partir de la cual se debe comenzar a extraer la cadena B.

3.- Dada una serie de N números reales, ordenarlos en forma creciente.

4.- Dada una serie de nombres de hasta 30 caracteres cada uno, ordenarlos
alfabéticamente.

5.- Escribir una función recursiva que, al ser invocada como MCD (A, B) halle el
máximo común divisor entre A y B mediante el algoritmo de Euclides.

MCD (A,A) = A
MCD (A,B) = MCD (B,A) (si A > B)
MCD (A,B) = MCD (A,B-A) (si A < B)

6.- Construir procedimientos para la búsqueda secuencial y binaria.

7.- Escribir un procedimiento que determine cuántas veces aparece cada letra en una
cadena de tamaño N.

8.- Escribir un procedimiento que al ser invocado como Blanc (S, Lado) elimine
los blancos superfluos del lado especificado (Izquierdo, Derecha, Ambos) de la
cadena S.

9.- Diseñar un subprograma que, invocado como OrdenarYRepetidos (V,N) ordene


el vector V de N elementos eliminando, de paso, todos aquellos que se repitan.

Variables Compuestas y Tablas. Unidades de Biblioteca.

10.- Se realiza una encuesta entre los alumnos de Algoritmos I, en la cual se


obtienen los siguientes datos: Nombre del Alumno, cantidad de Fines de Semana
75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 11
perdidos estudiando la materia, y un valor de verdad que responda a la pregunta:
¿Sirve de algo la materia?.
Se pide realizar un listado por impresora de los alumnos que hayan respondido NO a
la última pregunta o cuya cantidad de Fines de Semana sea inferior a 5, a fin de
disponer de esa información para utilizarla en el Coloquio.

11.- Escribir un subprograma que, al ser invocado como CadMayor (C1, C2)
determine si la cadena C2 precede a la cadena C1 en orden alfabético. Luego incluir
este subprograma en otro que realice una búsqueda binaria en una tabla ordenada
ascendentemente por el campo nombre y devuelva el contenido del campo teléfono
al ser invocado como DevTele (Nombre, Tabla, Telef).
Se presume que el módulo invocante posee las siguientes declaraciones:

Const
Max = 200;
Type
Rango = 1 .. Max;
Cadena = String;
Usuario = Record
Nombre, Teléfono: Cadena
End;
Tabla = array [Rango] of Usuario;

Archivos.

12.- El INDEC debe procesar los datos del censo a realizarse en el año 2010. Para
ello, se debe construir un programa que lea de un archivo, para cada partido o
departamento de la Argentina, un registro conteniendo:

Nombre del partido o departamento (hasta 40 caracteres)


Código de provincia en la que se encuentra
Población
Porcentaje de hombres
Porcentaje de analfabetos

Previamente a este archivo se debe leer otro que, para cada código de provincia,
informe el nombre de la provincia correspondiente. El programa debe:

a.- Imprimir un listado ordenado por nombre de provincia que informe para cada
provincia, su nombre, población, porcentaje de mujeres y de analfabetos.
b.- Imprimir la población total del país, y porcentaje de mujeres y analfabetos
correspondientes a todo el país.
75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 12
c.- Informar cuál es el departamento o partido con mayor porcentaje de analfabetos,
en que provincia se encuentra y cuál es ese porcentaje máximo.

13.- Dados dos archivos de una misma materia (de dos turnos diferentes), cada uno
con registros que contienen:

Número de padrón (40000 a 75000)


Nombre (30 caracteres)
Turno (1 o 2)

Hay un registro por cada alumno de cada turno. Los archivos se encuentran
ordenados por número de padrón. Se pide obtener un archivo único de la materia
con la misma información, también ordenado por número de padrón. (Debe tenerse
en cuenta que un mismo alumno no puede pertenecer a ambos turnos).

14.- La Universidad de Buenos Aires cuenta con un archivo binario


BIBLIOTECAS, ordenado por Código de Biblioteca (clave primaria) y por Código
de Editorial (secundaria), cuyos registros contienen:

Código de Biblioteca (1 a 50)


Código de Editorial (1 a 2000)
Nombre de autor (30 caracteres)
Título del libro (40 caracteres)
Cantidad de ejemplares (1 a 300)

Hay un registro por cada título dispnible en cada biblioteca.


Se debe hacer un listado con cortes de control por editorial y por biblioteca,
informando totales de libros disponibles. El listado tendrá los siguientes campos:
Libro, Autor y Cantidad de ejemplares.

Luego de cada corte de control se debe saltar de página e imprimir los títulos. Cada
página del listado estará numerada y se encabezará con: Renglón en blanco, Código
de biblioteca, Renglón en blanco, Nombre de editorial, Renglón en blanco,
Encabezamiento de columna, Renglón en blanco, y 55 renglones de datos.
Los nombres de las editoriales se encuentran en otro archivo, el cual entra en
memoria, y cuyos registros son del siguiente tipo:

Código de editorial
Nombre (20 caracteres).

15.- Escribir un algoritmo que lea un texto de un archivo, y cuente cuántos


caracteres hay entre la primera y la segunda aparición del caracter “A”, o entre la

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 13


primer “A” y el punto final, si ésta aparece una sóla vez. Si “A” no aparece
desplegar un mensaje. El último caracter del archivo es un punto.

16.- Leer un texto terminado en punto, de un archivo de texto y copiarlo en otro


archivo eliminando los espacios en blanco superfluos (más de un espacio entre dos
palábras).

75.40 Algoritmos y Programación I Cátedra Lic. Gustavo López Página 14

Das könnte Ihnen auch gefallen