Anda di halaman 1dari 8

Creative Commons Licensed Image

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.

• Todos los ejercicios deben contar con:

• 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.

• El programa no debería tener warnings ni errores al compilarlo

• 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”.

• No usar funciones de librería salvo que el ejercicio lo diga.


Operaciones varias

• 0) Hacer una función que:

• 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.

• 4) Escribir una función que

• Imprima todos los elementos únicos en un array de ints.

• 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.

• 5) Crear una función que

• Reciba una matriz de 3x3 e imprima su contenido de forma ordenada en la pantalla

• 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

• 6) Crear una función que imprima en pantalla el código ASCII

• 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.

• 10) Escribir las siguientes funciones:


• a) printreverse() que imprima al reves un string enviado como parámetro.
• b) Escribir una función deleteSpaces() que quite los espacios a un string y los salve en un string nuevo para
luego imprimirla
• c) Realizar una función replace() que reemplace todas las ocurrencias de un carácter por otro en un string.
• d) Hacer lo mismo que el ejercicio anterior, pero reemplazar un substring por otro dentro de un string. Seria
necesario tener un string destino que sea lo suficientemente grande.
• e) En un string enviado como parámetro, contar las mayusculas y minúsculas.
• f) Escribir una función toupper() que convierta un string en mayusculas y una función tolower() que lo
convierta a minúsculas
Ejercicios - manejo de
punteros

• 11) Modificar los ejercicios de manejo de strings para que usen


aritmetica y asignación usando punteros en vez de tratar el string
como un array.

• Normalmente se puede partir de la misma base de los ejercicios ya


realizados, pero en vez de usar el indice a un array, se usa un
puntero el cual se lo va incrementando o haciendo la operación
necesaria.

• A cada ejercicio llamarlo igual, pero la función iniciará con p_

• Por ejemplo, concatenar() al ser realizada con punteros, será


p_concatenar()
Ejercicios - Lectura/Escritura a archivos
(usar funciones de librería para leer/
escribir)

• 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.

• Crear función polar2rect() y rect2polar() que convierta complejos entre notación


polar y rectangular y viceversa.

• Crear función suma_compleja() y mult_compleja() que sume y multiplique complejos

• 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

Anda mungkin juga menyukai