Repartido de Ejercicios
Repartido de Ejercicios
Repartido de Ejercicios
https://www.flickr.com/photos/riebart/4466482623
Programación I:
Ejercicios de
práctico
Repartido de Ejercicios:
Programación I
• Los ejercicios son individuales y se deben entregar antes de la fecha limite dada por el docente, normalmente
dos semanas antes de terminar el curso. Igualmente no esperar al final, puede ir haciendo los ejercicios antes.
• El código creado por un alumno no debe parecerse al de otro alumno o código encontrado en la web. Si eso
sucede el o los alumnos encontrados con el mismo código tendrán 0 como nota del práctico.
• En los foros esta permitido discutir los ejercicios, pero no se puede compartir código. Se puede guiar a un
compañero sobre que camino tomar, pero no darle la solución en código.
• Una función main() que llame a la función que realizan como ejercicio. Esto es para probar su función. La
función main() debe llenar variables con datos de prueba para que puedan llamar a su función y probarla.
• Debe respetarse la estética del código, usar identación para el cuerpo de la función y cada vez que usan
llaves. Las funciones no deben tener mas de 25 lineas apróx.
• La función del ejercicio debería tener un pequeño comentario antes de definirla indicando que es lo que
hace. Una o dos lineas es suficiente.
• Las variables deben tener nombres descriptivos. Salvo en loops en donde se usa un contador y se
entiende si se usa una variable “i” o “cnt”.
• Reciba un numero de 8bits y devuelva intercambiado el nibble bajo con el alto. Hacerlo en la
menor cantidad posible de lineas de código C.
• Crear una funcion setbit(numero, pos) que prenda el bit “pos” dentro de numero y devuelva el
resultado.
• Crear una funcion clearbit(numero, pos) que “limpie” el bit pos dentro de numero y devuelva el
resultado
• Crear una funcion countbits() que cuente la cantidad de bits en uno dentro de un numero de 8bits.
• 1) Escribir una función que tome un número entero y lo convierta a binario e imprima en pantalla en el
orden correcto.
• 2) Escribir una función que tome un numero entero y lo imprima en hexadecimal, con el 0x incluido
antes del numero. No usar funciónes de librería para convertir.
Funciones para manejo de
arrays
• 3) Partiendo de un array de enteros desordenados, crear un array del mismo tamaño que
contenga los números ordenados de menor a mayor.
• Crear una función que imprima el máximo y el minimo valor de los items de un array de
ints.
• Crear una función que al recibir un array de ints, separe los items pares de los impares
en dos arrays.
• Crear una función que tome dos matrices de 3x3 y haga la multiplicación de las mismas.
Mostrar las matrices iniciales y resultante en la pantalla usando la función anterior.
Ejercicios - manejo de strings
• 7) Escribir una función longitud_str() que devuelva la cantidad de caracteres de un string, sin contar el \0
• 8) Escribir una función concatenar() que concatene (que unifique) dos strings en un tercero.
• 9) Crear una función que imprima un histograma de frecuencia de caracteres. Partiendo de un string definido por
el programador, imprimir en pantalla verticalmente cada letra contenida en el string (una sola vez) y a continuación
el numero de veces que se encuentra la letra en el string. Hacer lo mismo para cada letra diferente del string.
• 12) Escribir un programa que remueva los comentarios de linea con // o de bloque /* */ en un programa
en C. Permitirle pasar por linea de comandos el nombre del archivo .c a procesar. Debe generar un
nuevo archivo .c con los comentarios eliminados.
• 13) Escribir un programa que cuente las palabras en un archivo de texto e imprima el resultado en
pantalla.
• 14) Escribir un programa replace.exe que busque en un archivo de texto pasado como parámetro, y
reemplace todas las coincidencias de un string pasado por linea de comandos por otro. El resultado es
otro archivo de texto llamado replace_nombreoriginal.txt
• 15) Escribir un programa que “encripte” un archivo de texto haciendo un XOR entre cada char y una
cadena de caracteres pedida al usuario como clave. Si al archivo encriptado volvemos aplicar el XOR
con la misma clave, deberíamos obtener el archivo original. Establecer opciones de linea de comandos
para recibir el nombre del archivo a encriptar y el parámetro -e o -d para encriptar o des-encriptar.
Ejercicios - Estructuras
• 16) Escribir un programa que permita operar con números complejos usando un struct
que modele estos números.
• Realizar una función para cada operación, que reciba los parámetros necesarios.
• 17) Crear un struct rectángulo con los puntos necesarios para definirlo (perfecto si los
puntos también los considero como structs). Crear una función calcular area del
rectángulo y reciba un rectángulo como parámetro. Crear una función compare_rects()
que compare dos rectángulos. La funcion recibe dos rectángulos (rect1 y rect2) y
devuelve 1 si área de rectángulo1 es mayor a rectángulo2