Conjunto de ejercicios en C y C++ pensados para practicar desde lo más básico hasta problemas más complejos de programación estructurada y modular.
Este repositorio es un campo de entrenamiento: refuerza lógica, sintaxis y buenas prácticas mientras resuelves ejercicios reales.
- Practicar los fundamentos de la programación estructurada.
- Reforzar el uso de secuencias, condicionales e iteraciones.
- Introducir funciones, modularización y punteros (cuando aplica).
- Mantener un histórico de ejercicios que muestren tu avance en C/C++.
- Entrada y salida (
scanf/printf,cin/cout,fgets). - Operaciones aritméticas y lógicas.
- Estructuras de control:
if,else,switchwhile,for,do...while
- Funciones y paso de parámetros.
- Arreglos, cadenas y matrices.
- (Donde aplica) Punteros y manejo básico de memoria.
- (Donde aplica) Introducción a estructuras más grandes en C++.
Nota: los nombres de las carpetas siguen la estructura usada en clase (por ejemplo:
j1pro...,j2pro..., etc.). Cada carpeta agrupa ejercicios de una práctica/sesión.
- Abre la carpeta del ejercicio en tu IDE/editor (VS Code, Code::Blocks, CLion, etc.).
- Compila y ejecuta el archivo principal.
- Si quieres navegar rápido, usa la tabla índice de abajo.
Tip: si usas VS Code, configura tareas de compilación para C y C++ (gcc/g++).
| Ejercicio | Tema | Qué practica | Link |
|---|---|---|---|
| j8 | Conversión °F→°C | Aritmética + salida formateada | Ver j8 |
| j23 | Menú + switch |
Selección múltiple + organización | Ver j23 |
| j28 | do-while + chars |
Ciclos + ASCII | Ver j28 |
| j41 | Matrices + sumatorias | Matriz tabular + suma de filas/columnas | Ver j41 |
| j51 | CRUD con struct |
Modularidad + manejo de cadenas | Ver j51 |
| j55 | Registros eliminados | Reutilización de espacios + structs anidados | Ver j55 |
Reemplaza los links
./jXpor la ruta real de cada carpeta (ej../j8pro...).
| Ejercicio | Lenguaje | Tópico principal | Descripción corta | Link |
|---|---|---|---|---|
| j1 | C | Variables | Área de triángulo (sin entrada) | Abrir |
| j2 | C | Variables | Área de triángulo (sin entrada) | Abrir |
| j4 | C | Aritmética | Operaciones básicas con dos enteros | Abrir |
| j5 | C | Constantes / float | Área de círculo (sin entrada) | Abrir |
| j7 | C++ | Aritmética | Conversión °C → °F | Abrir |
| j8 | C++ | Aritmética | °F → °C aproximada y exacta | Abrir |
| j9 | C | Entrada/Salida | Área de círculo con scanf |
Abrir |
| j11 | C | Variables | Intercambio de 3 variables | Abrir |
| j12 | C | Porcentajes | Porcentaje de asistencias | Abrir |
| j13 | C | Arreglos | Vector * factor (sin iteraciones) | Abrir |
| j14 | C | struct |
Registro Alumno | Abrir |
| j15 | C | struct |
Registros Árbol y Libro | Abrir |
| j16 | C | struct |
Alumno + Carrera | Abrir |
| j17 | C++ | Condicional | Descuento con 1 variable y 1 if |
Abrir |
| j18 | C++ | Comparación | 3 enteros en orden creciente | Abrir |
| j19 | C++ | Condicional | Incremento de salario por rangos | Abrir |
| j20 | C | switch / fechas |
Mes, día y estación | Abrir |
| j21 | C | Condicional | Año bisiesto | Abrir |
| j22 | C++ | switch |
Calculadora por operador | Abrir |
| j23 | C++ | Menú + switch |
Áreas de figuras | Abrir |
| j24 | C++ | Menú + IVA | Peaje por tipo de vehículo | Abrir |
| j25 | C | Operadores | Operador elegido por el usuario | Abrir |
| j26 | C | Condicional | Transformación usando una sola variable | Abrir |
| j27 | C | Tiempo | Diferencia de tiempos HH:MM:SS | Abrir |
| j28 | C | do-while / caracteres |
Abecedario Aa, Bb, Cc… (mayús/minús) | Abrir |
| j40 | C++ | Iteración | Imprime 1..k repetidos y calcula suma/producto por línea | Abrir |
| j41 | C | Matrices | Matriz 4×5 con sumas por fila y columna | Abrir |
| j43 | C/C++ | Matrices | Multiplicación de matrices con valores secuenciales | Abrir |
| j44 | C/C++ | Matrices + modularidad | Stats de matriz 4×4 (suma, prom, min/max y conteos) | Abrir |
| j51 | C | struct / CRUD |
Sistema ABC (altas, bajas, cambios) con registros estáticos | Abrir |
| j55 | C | struct avanzado |
Materias + prerrequisitos con “recorrer registros eliminados” | Abrir |
j1 – Área de triángulo (C)
Calcula el área de un triángulo usando variables a, b y h de tipo int.
No solicita datos al usuario.
j2 – Área de triángulo (C)
Igual que j1, pero usando variables areaTriangulo, base y altura.
No solicita datos al usuario.
j4 – Operaciones básicas con dos enteros (C)
Pide dos enteros a y b y calcula:
a+b, a-b, b-a, a*b, a/b, b/a, a%b, b%a, mostrando resultados.
j5 – Área de círculo sin entrada (C)
Calcula el área de un círculo con variables a, r y pi de tipo float.
No pide datos al usuario.
j7 – Conversión °C → °F (C++)
Pide una temperatura en Celsius y calcula Fahrenheit con F = 1.8 * C + 32.
j8 – Conversión °F → °C aproximada y exacta (C++)
Pide Fahrenheit y muestra conversión aproximada y exacta.
j9 – Área de círculo con entrada (C)
Usa scanf() para leer el radio y calcula el área.
j11 – Intercambio de tres variables (C)
Muestra valores originales, intercambia a, b, c y vuelve a imprimir.
j12 – Porcentaje de asistencias (C)
Con MAXIMO_ASISTENCIAS = 34, pide faltas y calcula porcentaje.
j13 – Vector y factor multiplicador (C)
Lee 10 enteros, luego un factor. Multiplica y guarda en un segundo arreglo.
Restricción: no usar estructuras iterativas.
j14 – Registro Alumno (C)
struct Alumno con 3 campos: cadena, entero y flotante.
j15 – Registros Arbol y Libro (C)
struct Arbol y struct Libro, lectura e impresión.
j16 – Alumno + Carrera (C)
Agrega struct Carrera y relaciona idCarrera con Alumno.
j17 – Descuento en tienda (C++)
Si compra ≥ $50 aplica 20% de descuento.
Restricción: solo 1 variable y 1 if sin else.
j18 – Tres enteros en orden creciente (C++)
Determina si tres enteros distintos están en orden creciente.
j19 – Incremento de salario (C++)
Calcula nuevo salario aplicando criterio por rangos.
j20 – Mes, día y estación (C)
Imprime nombre del mes y estación del año según fecha.
j21 – Año bisiesto (C)
Reglas 4/100/400 para bisiesto.
j22 – Calculadora con switch (C++)
Solicita operandos + operador y resuelve con switch.
j23 – Áreas de figuras con menú (C++)
Menú de figuras y cálculo de área con switch.
j24 – Peaje en autopista (C++)
Importe por tipo de vehículo + IVA (16%).
j25 – Operador elegido por el usuario (C)
Pide operador, luego a y b, imprime operación y resultado.
j26 – Transformación de un solo valor (C)
Manipula x con reglas según signo, paridad y rangos.
j27 – Diferencia de tiempos HH:MM:SS (C)
Calcula tiempo transcurrido o avisa si final < inicial.
j28 – Abecedario con `do-while` (C)
Imprime el abecedario en formato Aa, Bb, Cc, … usando un ciclo do...while.
Sirve como ejemplo de manejo de caracteres y recorrido de rangos en ASCII.
j40 – Repetición 1..k con suma y multiplicación (C++)
Solicita un entero positivo k y, para cada número n de 1 a k:
- Imprime
nrepetidonveces. - Calcula e imprime:
- la suma de esa repetición,
- y la multiplicación de esa repetición.
Ejemplo para k = 4:
1 = 1,1 = 12 + 2 = 4,2 x 2 = 43 + 3 + 3 = 9,3 x 3 x 3 = 274 + 4 + 4 + 4 = 16,4 x 4 x 4 x 4 = 256
j41 – Matriz con sumatorias de filas y columnas (C)
Gestiona una matriz 4×5 rellena con valores secuenciales a partir de un número inicial.
- Suma cada fila y almacena el resultado en un vector lateral.
- Suma cada columna y almacena el resultado en un vector inferior.
- Imprime la matriz en formato tabular, alineando las sumatorias.
j43 – Multiplicación de matrices con valores secuenciales (C/C++)
Implementa la multiplicación matricial de 2 matrices inicializadas con valores secuenciales.
- Pide un valor inicial al usuario.
- Inicializa cada celda de ambas matrices con valores diferentes a partir de ese valor.
- Imprime: matriz A, matriz B y la matriz resultante.
j44 – Matriz 4×4: suma, promedio, min/max y conteos (C/C++)
Solicita valores reales para una matriz 4×4 y muestra:
- Contenido de la matriz.
- Suma y promedio de los elementos.
- Posición y valor del elemento menor:
[i, j] = x - Posición y valor del elemento mayor:
[i, j] = x - Conteos:
- cuántos elementos son iguales al menor,
- cuántos elementos son iguales al mayor,
- cuántos son mayores al menor,
- cuántos son menores al mayor.
Requiere programación modular: al menos una subrutina fuera de main que resuelva uno de los incisos.
j51 – Sistema ABC con registros estáticos (C)
Implementa un sistema básico de Altas, Bajas y Cambios (CRUD/ABC) usando struct.
- Usa un arreglo de registros y funciones modulares para:
- registrar elementos,
- eliminarlos,
- listarlos,
- o buscar por posición.
- Incluye manejo de cadenas con
fgetsy limpieza de buffer para mejorar robustez.
j55 – Gestión de materias con “registros eliminados” (C)
Sistema para gestionar materias y sus prerrequisitos (hasta 3 por materia).
- Implementa la técnica de recorrer registros eliminados:
- mantiene un arreglo de estado para marcar espacios libres,
- y reutiliza esos espacios en nuevas altas sin mover los demás datos.
- Usa estructuras anidadas para organizar materias y requisitos.