Vous êtes sur la page 1sur 16

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS

Ingeniera en Informtica
Programacin I

Trabajo Prctico Funciones


1. Realizar una funcin que reciba tres nmeros y devuelva N si estos no corresponden a las
medidas de los lados de un tringulo, E si corresponden a un tringulo equiltero, I si
corresponden a un tringulo issceles y S si corresponde a un tringulo escaleno. No usar
operadores lgicos.
2. Hacer una funcin que reciba tres valores enteros positivos y devuelva el mayor estricto de los
tres. En caso de no existir devolver -1. No usar operadores lgicos.
3. Realizar una funcin que reciba el ao como parmetro y devuelva verdadero si el ao es bisiesto
o falso si no lo es. Se recuerda que un ao es bisiesto cuando es divisible por 4. Sin embargo
aquellos aos que sean divisibles por 4 y tambin por 100 no son bisiestos, a menos que tambin
sean divisibles por 400. Por ejemplo, 1900 no fue bisiesto pero s lo fueron el 2000 y 2004.
4. Realizar una funcin que reciba como parmetros da, mes y ao indique si la fecha es un fecha
gregoriana vlida.
5. Realizar una funcin que reciba como parmetros da, mes, ao y una cantidad de das, y
devuelva la fecha resultante de sumar a la fecha recibida la cantidad de das. La fecha resultante
debe ser una fecha gregoriana.
6. La tarifa de un videoclub para el alquiler de sus videos es: Dibujos = $2; Estrenos = $3; Otros =
$2.5. Adems cobra por devolucin tarda $1 por el primer da y $0.5 por cada no de los das
siguientes. Realizar una funcin que devuelva el alquiler a pagar por un cliente, sabiendo que
recibe como parmetros el tipo de video y la cantidad de das desfasados en devolucin. Si la
devolucin es anterior al da de devolucin recibir un entero negativo.
7. Una editorial determina el precio de un libro segn la cantidad de pginas que contiene. El costo
bsico del libro es de $5, ms el precio $0,02 por pgina con encuadernacin rstica. Si el nmero
de pginas supera las 300 la encuadernacin debe ser en tela, lo que incrementa el costo en $3.
Adems, si el nmero de pginas sobrepasa las 600 se hace necesario un procedimiento especial
de encuadernacin que incrementa el costo en $8. Realizar una funcin que devuelva el costo de
un libro dado el nmero de pginas.
8. Un banco necesita para sus cajeros automticos un programa que lea una cantidad de dinero e
informe la cantidad mnima de billetes a entregar, considerando que existen billetes de $100, $50,
$10, $5 y $1. Realizar una funcin que calcule dichas cantidades.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo Prctico Vectores


1. Realizar una funcin que imprima los valores de un vector de N posiciones, desde la posicin
mxima a la posicin mnima.
2. Realizar una funcin que devuelva la suma de todos los elementos de un vector de N elementos.
3. Realizar una funcin que devuelva el mnimo elemento de un vector.
4. Realizar una funcin que devuelva la posicin en que se haya un valor dado mediante el mtodo
de bsqueda binaria. En caso que no lo encuentre devolver -1,.
5. Realizar una funcin que permita determinar la cantidad de veces que se repite un valor en un
vector dado.
6. Realizar una funcin que permita eliminar un valor de un arreglo. Se sabe que todos los elementos
vlidos del vector se almacenan en forma consecutiva, y que los elementos no utilizados se
inicializan con -1.
7. Realizar una funcin que determine si todos los elementos de dos vectores son iguales y estn en
el mismo orden.
8. Se tiene un programa que permite cargar y mostrar los datos almacenados en una pila y una cola.
Estos programas contienen variables globales. Modifique los mismos de modo tal que no
contenga ms variables globales.
/* ----------------------------------------------------- */
/*
Implementacin de una pila esttica
*/
/* ---------------------------------------------------- */
#include <stdio.h>
#define TAM 5
/* Variables globales
*/
int dato;
/* elemento a ingresar en la pila
*/
int pila [TAM]; /* vector donde se almacena los elem.de la pila */
int *tope=pila+TAM; /* dir. del prximo elem. a ingresar en la pila */
/* prototipos de las funciones
void apilar
(void);
void desapilar (void);
int pilavacia (void);
int pilallena (void);
int primeropila(void);

*/

/* programa principal
int main (void){
/* Carga la pila hasta que se llene o ingrese un cero */
printf("ingrese un nmero distinto a 0: ");
scanf("%d",&dato);
while(dato!=0 && !pilallena()){
apilar();
printf("ingrese un nmero distinto a 0: ");
scanf("%d",&dato);
}
/* Muestra la pila, perdiendo todos los
*/
/* elementos que estaban cargados en ella */
printf("Datos cargados en la pila\n");
while(!pilavacia()) {
printf("%d\n", primeropila());
desapilar();

*/

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I
}
printf("Fin de datos\n");
return 0;
}
/* ------------------------------------------ */
/* Funcin apilar: coloca un elemento nuevo en*/
/* la pila en la posicin tope y desplaza
*/
/* este a la posicin del siguiente elemento */
/* ------------------------------------------ */
void apilar(void){
tope--;
*tope=dato;
}
/* ------------------------------------------ */
/* Funcin desapilar: elimina el ltimo
*/
/* elemento ingresado en la pila
*/
/* ------------------------------------------ */
void desapilar(void){
tope++;
}
/* --------------------------------------------- */
/* Funcin pilavacia: determina si la pila tiene */
/* elementos. Devuelve 1 si la pila est vaca. */
/* --------------------------------------------- */
int pilavacia (void){
return(tope==pila+TAM)?1:0;
}
/* -------------------------------------------- */
/* Funcin pilallena: Determina si la pila est */
/* llena. Devuelve 1 en caso afirmativo
*/
int pilallena(void){
return(tope==pila)?1:0;
}
/* ------------------------------------------ */
/* Funcin primeropila: Devuelve el primer
*/
/* elemento a salir de la pila
*/
/* ------------------------------------------ */
int primeropila (void){
return *tope;

}
/* ------------------------------------------------------------- */
/*
Implementacin de una cola circular esttica
*/
/* ------------------------------------------------------------- */
#include <stdio.h>
#define TAM 5
/* Variables globales
*/
int dato;
/* elemento a ingresar en la pila
*/
int cola [TAM]; /* vector donde se almacena los elem.de la cola */
int *poner=cola, /* direccin del elemento a poner
*/
*sacar=cola; /* direccin del prximo elemento a sacar
*/
/* prototipos de las funciones
void acolar
(void);
void desacolar (void);
int colavacia (void);
int colallena (void);
int primerocola(void);

*/

/* programa principal
int main (void){
/* Carga la cola hasta que se llene o ingrese un cero */
printf("Ingrese un nmero distinto a 0: ");
scanf("%d",&dato);

*/

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I
while(dato!=0&& !colallena()){
acolar();
printf("Ingrese un nmero distinto a 0: ");
scanf("%d",&dato);
}
/* Muestra la cola, perdiendo todos los
*/
/* elementos que estaban cargados en ella */
printf("Datos cargados en la cola\n");
while(!colavacia()) {
printf("%d\n", primerocola());
desacolar();
}
printf("Fin de datos\n");
}
/* ------------------------------------------ */
/* Funcin acolar: coloca un elemento nuevo en*/
/* la cola en la posicin poner y desplaza
*/
/* este a la posicin del siguiente elemento */
/* ------------------------------------------ */
void acolar(void){
*poner=dato;
poner++;
if (poner==cola+TAM)
poner=cola;
}
/* ------------------------------------------ */
/* Funcin desacolar: elimina el primer
*/
/* elemento ingresado en la cola
*/
/* ------------------------------------------ */
void desacolar(void){
*sacar=dato;
sacar++;
if (sacar==cola+TAM)
sacar=cola;
}
/* --------------------------------------------- */
/* Funcin colavacia: determina si la cola tiene */
/* elementos. Devuelve 1 si la cola est vaca
*/
/* --------------------------------------------- */
int colavacia (void){
return (poner==sacar)?1:0;
}
/* -------------------------------------------- */
/* Funcin colallena: Determina si la cola est */
/* llena. Devuelve 1 en caso afirmativo
*/
/* -------------------------------------------- */
int colallena(void){
return (poner+1==sacar || poner==sacar+TAM-1)?1:0;
}
/* ------------------------------------------ */
/* Funcin primerocola: Devuelve el primer
*/
/* elemento a salir de la cola
*/
/* ------------------------------------------ */
int primerocola (void){
return *(sacar);
}

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo Prctico Matrices


1. Realizar una funcin que permita cargar con nmeros enteros, una matriz de 5x5, ingresando los
datos desde teclado. En qu cambiara la funcin si la matriz contuviera otro tipo de datos y/o
tuviese otras dimensiones?

2. Realizar una funcin que determine si una matriz cuadrada de dimensin N es simtrica con
respecto a su diagonal principal.

3. Realice una funcin devuelva verdadero si todas sus columnas de una matriz son palndromos.
Ejemplos:
1221233423341221

1221233233331111

Para esta matriz la funcin devuelve verdadero

Para esta matriz la funcin devuelve falso

4. Dada una matriz de 5x5 de nmeros enteros, ordenar en forma ascendente cada una de sus filas.
5. Realizar 9 funciones que generen las matrices detalladas a continuacin:
4000030000200
001

1111222233334
444

0001600800400
2000

12340123001200
01

1234123412341
234

4000340023401
234

010230400506
7080

1234567891011121
3141516

123412131451116
15610987

6. Hacer una funcin que cargue una matriz con nmeros al azar entre 0 y 999, la cual representa la
lluvia mensual cada del ao 1995 al 2008. Las filas representan los aos y las columnas
correponden a los 12 meses del ao.

7. Dada una matriz cargada utilizando la funcin del ejercicio anterior, realizar funciones para:
a) Almacenar en un vector la lluvia promedio caida en cada uno de los meses
b) Almacenar en un vector la lluvia promedio caida durante cada uno de los aos
c) Mostrar los resultados obtenidos en los puntos a y b

8. Dadas dos matrices cuadradas A y B de dimensin NxN, obtener una matriz C de dimensin NxN,
que contenga el producto de las dos primeras, sabiendo que:
n

C (i , k ) : A(i , j ) * B ( j , k )
j 1

9. Dada una matriz de dimension NxN. realizar las siguientes operaciones:


a) Intercambiar dos filas cualquiera.
b) Intercambiar dos columnas cualesquiera.
c) Intercambiar una fila y una columna dada

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

d) Transponer la matriz sobre si misma

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Cadenas


1. Hacer una funcin que permita invertir una secuencia de caracteres.
2. Hacer una funcin que determine si una secuencia de caracteres es capica.
3. Hacer una funcin que devuelva la cantidad de palabras (separados por uno o ms espacios) que
tiene una frase.
4. Hacer una funcin que permita reemplazar en una secuencia de caracteres todos los guiones (-)
por el carcter numeral (#).
5. Hacer una funcin que permita insertar en una secuencia de dgitos los caracteres guin cada 8
dgitos a partir del cuarto dgito, y un espacio cada 8 dgitos a partir del octavo dgito. Si la
cantidad de dgitos no es mltiplo de ocho agregar delante de la cadena caracteres 0 hasta que
la misma sea mltiplo de 8.
Ejemplos:

472348237388539055823012
8237388539055823012

4723-4823 7388-5390 5582-3012


0000-0823 7388-5390 5582-3012

6. Hacer una funcin strNcpy() que permita extraer una sub-cadena, indicando la posicin inicial y la
cantidad de caracteres. Ejemplo, dada la secuencia: El nmero de telfono es 4356-7890.
extraer la sub-cadena que comienza en la posicin 26, la cantidad de 9 caracteres.
En los siguientes ejercicios utilice funciones de biblioteca para codificar las funciones solicitadas:

7. Hacer una funcin que permita insertar una sub-cadena en una cadena a partir de una posicin
dada.
8. Hacer una funcin que permita eliminar una sub-cadena a partir de una posicin y un tamao
dados.
9. Hacer una funcin que permita convertir nmeros enteros entre 0 y 999 a palabras. Para ello se
recibe como parmetros el nmero y una cadena. En qu cambiara su programa si el rango de
valores fuese diferente?
10. Escribir una funcin strright(<cadena>,<n>) que permita obtener una subcadena de caracteres
con los ltimos <n> caracteres de la cadena pasada como parmetro. La funcin no har nada si
el parmetro <n> es menor que cero o mayor que la longitud de la cadena.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Estructuras


1. Definir estructuras para almacenar los siguientes tipos de datos:
a) fecha
b) hora
c) Datos de un producto
cdigo de barras (21 dgitos)
nombre (cadena de caracteres)
precio unitario (nmero real)
stock (nmero entero)
fecha de actualizacin de stock (da, mes, ao)
2. Desarrollar las siguientes funciones para manejar tiempos:
a) Ingresar un horario (horas, minutos, segundos) desde teclado, validando que sea correcto
b) Calcular la diferencia de horas. En el caso que la primera fecha es mayor a la segunda,
considerar que la primera hora corresponde a la hora del da anterior. La diferencia en horas
no supera las 24 horas.
c) Generar una cadena con formato hh:mm:ss
3. Desarrollar las siguientes funciones para manejar fechas:
a) Ingresar una fecha (da, mes, ao) desde teclado, validando que corresponda a una fecha
gregoriana.
b) Indicar cual de dos fechas es la mayor.
c) Sumar n das a una fecha
d) Generar una cadena con formato dd/mm/aaaa
4. Un supermercado desea contar con un programa que le permita registrar los datos de sus
artculos. En el mismo no existen ms de 1000 productos distintos. Realizar un programa ABM
utilizando la estructura indicada en el punto 1.c, en el que los datos debern estar ordenados por
nombre. Contemplar las siguientes funciones:
altaProd: parmetros recibidos sern el vector y la cantidad cargados hasta el momento. Esta
funcin deber permitir cargar productos hasta que se llene el vector o hasta que ingresen un
nombre vaco en el campo nombre.
bajaProd: parmetros recibidos sern el vector y la cantidad cargados hasta el momento. Esta
funcin deber permitir ingresar un nombre y eliminar los datos del producto.
mostrarProductos: parmetros recibidos sern el vector y la cantidad cargados hasta el
momento. Esta funcin deber permitir mostrar los datos de todos los productos del
supermercado.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Archivos binarios


1. Hacer un programa que utilice una funcin principal que invoque a las siguientes funciones:

Hacer una funcin grabarArch() que genere un archivo de enteros.


Hacer una funcin mostrarArch() que reciba el nombre de un archivo, lo lea y muertre los
datos del mismo.
Hacer una funcin agregarAcumulado() que reciba el nombre de un archivo, y agregue
al final de ste el resultado de sumar todos los valores que contiene.
Hacer una funcin ordenarArch() que reciba el nombre de un archivo y lo ordene
utilizando el mtodo optimizado de ordenamiento por burbujeo.
Hacer una funcin buscarArch() que reciba el nombre de un archivo, y un valor e indique
en que posicin se encuentra del archivo. En caso de no encontrarlo devolver un valor
negativo. Usar mtodo de bsqueda binaria.
Hacer una funcin eliminarValor() que reciba el nombre de un archivo y un valor y
permita eliminarlo de forma lgica del mismo.
Hacer una funcin eliminarValor() que reciba el nombre de un archivo y un valor y
permita eliminarlo de forma fsica del mismo.

2. Un laboratorio de especialidades medicinales posee un archivo en disco cuyos registros contienen


los siguientes campos:
Lote: 5 caracteres
Cdigo de barras: 21 caracteres
Nombre: 40 caracteres
Costo: nmero real
Stock: Nmero entero: Cantidad de envases almacenados
Mes, Ao: Enteros: Mes y ao de vencimiento de la medicacin
El archivo contiene un registro por cada lote, es decir que pueden existir varios registros para un
mismo medicamento si stos pertenecen a lotes distintos. Se solicita desarrollar uno o ms
programas para:

Crear el archivo, ingresando los datos por teclado.


Borrar del archivo los registros de aquellos lotes que se encuentren vencidos,
comparando la fecha de vencimiento de cada uno con una fecha testigo que se ingresa
por teclado. Para borrar los registros es necesario generar un nuevo archivo que
contenga solamente los lotes no vencidos, emitiendo adems un listado por pantalla con
los registros eliminados.
Generar e imprimir un listado con el cdigo, el nombre y la cantidad de unidades en stock
para cada medicamento, sin importar el lote al que pertenezca. El archivo no est
ordenado, y los medicamentos son a lo sumo 130.

Ejemplo:
CODIGO
10000
10001
.....

NOMBRE
TERRAMICINA
CARBOPLAT
............

CANTIDAD EN STOCK
xxxx
yyyy
....

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Archivo de texto


1. Hacer una funcin que permita eliminar todos los comentarios de una o varias lneas de un
programa fuente escrito en lenguaje C,.
2. Hacer una funcin que permita eliminar todas las directivas para el preprocesador de un programa
fuente escrito en lenguaje C.
3. Hacer un programa que invoque y pruebe las siguientes funciones:

grabarMatriz() permite grabar una matriz, tal que en un rengln se encuentren los valores
reales de toda una fila
leerMatriz() permite cargar una matriz desde el archivo generado por la funcin anterior

4. Hacer un progranma que invoque y pruebe las siguientes funciones:

grabarMatriz() permite grabar una matriz, tal que los valores estan separados por comas (,)
leerMatriz() permite cargar una matriz desde el generado por la funcin anterior

5. Utilizar el Block de notas o cvualquier otro editor para crear un archivo de texto que contenga los
datos de una matriz rala (matriz con ms del 75 % de sus celdas sin valor definido) con el
siguiente formato: (fila;columna;valor). Luego escribir una funcin cargarMatriz() que permita leer
el archivo mencionado y cargarlo en una matriz de M x N enteros, teniendo en cuenta que no
todas las posiciones tienen un valor asociado.
Ejemplo:
Se tiene un archivo con una matriz de 3x3 con los siguientes datos:
(0;0;5)
(1;1;8)
(2;0;66)
La matriz deber quedar cargada con los siguientes valores.
5
0
66

0
8
0

0
0
0

6. Hacer un programa que invoque y pruebe las siguientes funciones:


grabarPrecios() permite grabar en un archivo de texto el rango de precio sugerido de un
producto. Cada dato se debe grabar en lnea distinta.
descripcin
precioDesde
precioHasta
grabarPromedios() permite leer el archivo generado en la funcin anterior y generar otro archivo
de texto con los promedios de los precios de los productos. Tanto la descripcin como el promedio
se graban en diferentes lneas.
descripcin
promedio
mostrarMejores() permite mostrar los productos cuyo precio promedio es superior al precio
promedio de todos los productos.
7. Hacer un programa que permita ingresar una lista de apellidos y nombres en formato "Apellido,
Nombre" y guarde en el archivo ARMENIA.TXT, los nombres de aquellas personas cuyo apellido
termina con la cadena "IAN", en el archivo ITALIA.TXT los terminados en "INI" y en el archivo
ESPAA.TXT los terminados en EZ. Descartar el resto. Ejemplo:
Arslanian, Gustavo --> ARMENIA.TXT

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Rossini, Giuseppe --> ITALIA.TXT


Prez, Juan
--> ESPAA.TXT
Smith, John
--> descartar
8. Se dispone de un archivo de texto con los datos de las partidas de 196 aviones de Aeroparque
con el siguiente formato:
01-04
06-25
avin
27-49
51-52
54-55
57-58
60-61
63-

nmero de vuelo
das de la semana de salida (se indica con No si ese da el
no parte del aeropuerto)
ciudad de destino
hora de partida
minuto de partida
hora de llegada
minuto de llegada
empresa de aviacin

Hacer una funcin permita informar todos los vuelos que salgan lunes, martes o sbado a un
determinado destino y su horario de salida sea posterior a las 15:30. Dicho destino deber
ingresarse desde teclado (el ingreso de este puede ser total o parcial).
La pantalla deber mostrar los siguientes datos.
nmero de avin destino
hora de partida - expresada como hh:mm duracin estimada de vuelo - expresada como hh:mm aerolnea.
Se sabe que existen aviones que parten un da y arriban al da siguiente.
9. Se dispone de tres formatos diferentes de archivos de texto donde se almacenan datos de
empleados. Los formatos se indican al pi.
Hacer un programa en 'C', para cada uno de los formatos de archivos suministrados, que
permitan leer uno de los archivos y grabar los datos obtenidos en un archivo binario con la
siguiente estructura:
#define
#define
typedef

N
16
M
32
struct {
char
nombre
[N];
char
domicilio [M];
int
dd,mm, aa;
int
plazoValidez;

/* fecha de emisin del cheque*/

}Cheque;
Nota:

si la longitud del dato informado en el archivo de texto es mayor al


especificado en la estructura, este dato deber guardarse truncado.

Los espacios de los valores de texto que se encuentren al final de la


cadena debern ser eliminados.

Archivo 1: Todos los campos de este archivo son de longitud fija.

1
2
3
4
5
6
123456789012345678901234567890123456789012345678901234567890123
Prez Juan
Gonzlez Ana M

2008021130 Corrientes 348


2008011515 Juan de Garay 1111 3er piso dto A

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Archivo 2: Todos los campos de este archivo son de longitud fija.


Prez Juan#2008021130#Corrientes 348#Gonzlez Ana M#2008011515#Juan de Garay
1111 3er piso Dto A#

Archivo 3: Todos los campos de este archivo estn precedidos de un


nmero de dos dgitos que indica la longitud del campo a leer.
10Prez Juan10200802113014Corrientes 34814Gonzlez Ana M10200801151534Juan de
Garay 1111 3er piso dto A

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Lnea de comandos


Desarrollar los siguientes programas en lenguaje C. Todo el ingreso de datos en los mismos debe realizarse a
travs de la lnea de comandos, no permitindose el uso de funciones de lectura de teclado como scanf(), gets(),
etc. Los programas deben validar la cantidad y tipo de los parmetros recibidos. En caso de detectarse algn
error se imprimir un texto de ayuda que indique el modo de uso del programa. Ese mismo texto se mostrar
cuando el nico parmetro recibido sea /? o /h.

1. Elevar un nmero real a una potencia entera, imprimiendo el resultado.


2. Imprimir un mensaje de una o ms palabras centrado en pantalla. Si el mensaje es muy extenso
deber dividirse en varias lneas. La pantalla tiene un ancho de 80 columnas.
3. Escribir un programa que ocasione una demora con una cantidad de milisegundos recibida como
parmetro.
4. Dada una fecha expresada en tres enteros, sumarle una cantidad de das e imprimir la nueva
fecha.
5. Dada una fecha expresada en tres enteros, imprimir el valor juliano de la misma. El 1 de enero
corresponde al da 1.
6. Copiar un archivo con otro nombre.
7. Imprimir por pantalla el contenido de un archivo de texto.
8. Desarrollar un generador de referencias cruzadas para un programa fuente en lenguaje C.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo prctico Asignacin dinmica de memoria


1. Un supermercado desea tener un programa que le permita registrar los datos de un producto. En
el mismo no existe ms de 1000 variedades de productos. Realizar un programa ABM cuyos
datos debern estar ordenados por nombre. Nota: usar un vector de punteros a estructuras
El programa deber contemplar las siguientes funciones:

altaProd(): parmetros recibidos sern el vector y la cantidad cargados hasta el momento.


Esta funcin deber permitir cargar productos hasta que se llene el vector o hasta que
ingresen un nombre vaco en el campo nombre.

bajaProd(): parmetros recibidos sern el vector y la cantidad cargados hasta el momento.


Esta funcin deber permitir ingresar un nombre y eliminar los datos del producto.

mostrarProductos(): parmetros recibidos sern el vector y la cantidad cargados hasta el


momento. Esta funcin deber permitir mostrar los datos de todos los productos del
supermercado.

2. Hacer una funcin que reciba como parmetro un puntero a la cabeza de una lista simple e
invierta el orden de sus nodos, sin destruir y crear nodos nuevos y sin intercambiar la informacin
contenida en los mismos.
3. Realizar una funcin que determine si todos los elementos de dos listas son iguales (puede haber
elementos repetidos), sin destruir y crear nodos nuevos y sin intercambiar la informacin
contenida en los mismos.
4. Implementar, sobre una lista vinculada, el tipo de datos PILA, con las siguientes operaciones:
apilar(DADA, e):
apila el elemento e en la pila DADA.
desapilar (DADA):
desapila un elemento de la pila DADA.
tope(DADA):
devuelve la informacin que se encuentra en el tope de la pila DADA.
pilaVacia (DADA):
devuelve verdadero si la pila DADA est vaca, y falso en caso contrario.
inicializarPila(DADA): inicializa la pila DADA vaca.
Probar las funciones cargando y mostrando una pila de elementos enteros.
5. Implementar, sobre una lista vinculada, el tipo de datos COLA, con las siguientes operaciones:
acolar(DADA, e):
agrega el elemento e en la cola DADA.
desacolar(DADA):
retira el primer elemento de la cola DADA.
primero(DADA) :
devuelve el primer elemento de la cola DADA.
colaVacia(DADA):
devuelve verdadero si la cola DADA est vaca, y falso en caso contrario.
inicializarCola(DADA): inicializa la cola DADA vaca.
Probar las funciones cargando y mostrando una pila de elementos enteros

6. Modificar el ejercicio 1 para utilizar una lista enlazada simple construida en forma ordenada en
lugar de un vector de punteros a estructuras.
7. Modificar el ejercicio anterior para utilizar una lista doblemente enlazada construida en forma
ordenada en lugar de una lista simple.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo Prctico - Recursividad


1. La funcin de Ackermann int A(int m, intn) se define de la siguiente forma:
n+1
A(m-1,1)
A(m-1,A(m,n-1))

si m = 0
si n = 0
de otro modo

Realizar un cuadro con los valores que adopta la funcin para valores de m entre 0 y 3 y de n
entre 0 y 4.
2. Dados dos parmetros de tipo entero, devolver el resultado de calcular el Mximo Comn Divisor
de dos enteros no negativos, basndose en las siguientes frmulas matemticas:
MCD(X,X) = X
MCD(X,Y) = MCD(Y,X)
Si X>Y => MCD(X,Y) = MCD(X-Y,Y).
Utilizando la funcin MCD anterior calcular el MCD de todos los elementos de una cola dada,
sabiendo que: MCD(X,Y,Z) = MCD(MCD(X,Y), Z).
3. Realizar una funcin que muestre los N primeros nmeros naturales en forma ascendente.
4. Realizar una funcin que devuelva la suma de los N primeros nmeros naturales.
5. Realizar una funcin que devuelva el producto de dos nmeros enteros, por sumas sucesivas.
6. Realizar una funcin que devuelva el resto de dos nmeros enteros, utilizando restas sucesivas.
7. Realizar una funcin que devuelva la cantidad de dgitos de un nmero entero.
8. Realizar una funcin que reciba un nmero binario, y lo devuelva convertido a base decimal.
9. Realizar una funcin que imprima los valores por filas de una matriz de NxM.
10. Realizar una funcin que sume todos los elementos de una matriz de NxM.
11. Realizar una funcin que devuelva el elemento de valor mnimo de una matriz de NxM.
12. Realizar una funcin que imprima los valores de una lista en orden inverso.
13. Realizar una funcin que devuelva la suma de todos los elementos de la lista.
14. Realizar una funcin que devuelva la cantidad de elementos que posee la lista.
15. Realizar una funcin que devuelva el elemento de valor mnimo de una lista.
16. Realizar una funcin que devuelva el nmero de nodo en que se haya un valor dado; en caso de
no encontrarlo devolver -1.
17. Realizar una funcin que permita insertar un dato al final de la lista.
18. Realizar una funcin que permita eliminar un dato de la lista.
19. Realizar una funcin que permita invertir una lista sin tener que eliminar ni generar nuevos nodos.

FACULTAD DE INGENIERA Y CIENCIAS EXACTAS


Ingeniera en Informtica
Programacin I

Trabajo Prctico - rboles


9. Realizar una funcin que devuelva la cantidad de elementos que tiene un rbol.
10. Realizar una funcin que devuelva la suma de elementos que contiene el rbol.
11. Realizar una funcin que devuelva la cantidad de hojas que tiene un rbol.
12. Realizar una funcin que devuelva la cantidad de elementos que no son hojas.
13. Realizar una funcin que devuelva cuantos elementos pares posee el rbol.
14. Realizar dos funciones tal que devuelvan, una el valor mnimo y la otra el valor mximo de un
rbol.
15. Realizar una funcin que devuelva si un elemento pertenece al rbol.
16. Realizar una funcin que devuelva el nivel que ocupa un elemento en un rbol.
17. Realizar una funcin que devuelva la altura del rbol.
18. Realizar una funcin que devuelva el orden de un elemento en un rbol (es decir cuantos
elementos hay ms pequeos que este).
19. Realizar una funcin que determine si un rbol est completo.
20. Realizar una funcin que determine si un rbol es perfecto.
21. Realizar una funcin que determine si dos rboles tienen la misma cantidad de elementos
22. Realizar una funcin que determine si dos rboles son idnticos.
23. Realizar una funcin que dado un valor K, muestre por pantalla todos los elementos del rbol que
sean mayores que K.
24. Realizar una funcin que determine el valor del primer ancestro comn de dos elementos.

Vous aimerez peut-être aussi