Arreglos Multidimensionales. Funciones y parámetros. 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. 53.-
Diseñar un algoritmo que halle un vector cuyos elementos son la suma de los elementos de cada fila de una matriz previamente ingresada. 54.-
Escribir un programa que calcule la traza de una matriz cuadrada. 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. 55.-
Diseñar un algoritmo que determine si una matriz cuadrada matriz identidad. 56.-
Recordar
ingresada es la
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: 57.-
Const Max = 20; Type Rango = 1 .. Max; Matriz = array [Rango, Rango] of real; 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; 58.-
Dada una matriz de MxN y un vector de S elementos, determinar si los elementos del vector pertenecen a la matriz. 59.-
75.40 Algoritmos y Programación I
Cátedra Lic. Gustavo López
Página 8
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. 60.-
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ÍAN°2
GUÍA N° 2 Cadenas de caracteres. Métodos de Ordenamiento. Recursividad. Construir un procedimiento que, invocado como Intercal (X,Y), intercambie los valores de las variables X e Y. 1.-
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. 2.-
3.-
Dada una serie de N números reales, ordenarlos en forma creciente.
Dada una serie de nombres de hasta 30 caracteres cada uno, ordenarlos alfabéticamente. 4.-
Escribir una función recursiva que, al ser invocada como MCD (A, B) máximo común divisor entre A y B mediante el algoritmo de Euclides. 5.-
MCD (A,A) = A MCD (A,B) = MCD (B,A) MCD (A,B) = MCD (A,B-A) 6.-
halle el
(si A > B) (si A < B)
Construir procedimientos para la búsqueda secuencial y binaria.
Escribir un procedimiento que determine cuántas veces aparece cada letra en una cadena de tamaño N. 7.-
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. 8.-
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. 9.-
Variables Compuestas y Tablas. Unidades de Biblioteca. 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 10.-
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. 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: 11.-
Const Max = 200; Type Rango = 1 .. Max; Cadena = String; Usuario = Record Nombre, Teléfono: Cadena End; Tabla = array [Rango] of Usuario;
Archivos. 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: 12.-
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. Dados dos archivos de una misma con registros que contienen: 13.-
materia (de dos turnos diferentes), cada uno
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). 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: 14.-
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). 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 15.-
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. desplegar un mensaje. El último caracter del archivo es un punto.
Si “A” no aparece
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). 16.-
75.40 Algoritmos y Programación I
Cátedra Lic. Gustavo López
Página 14