Ejercicios de C/C++ para principiantes

Invertir una cadena en C y C++

En esta lección vas a invertir una cadena directamente en su propia memoria intercambiando los caracteres simétricos.

Introducción

Invertir una cadena es un buen ejercicio para trabajar con índices e intercambiar elementos en el sitio (in-place), es decir, sin crear una cadena nueva. La idea es intercambiar el primer carácter con el último y avanzar hacia el medio.

Puntos importantes

  • Activa los avisos del compilador (compiler warnings) y corrígelos todos.
  • Entiende bien el tipo y la vida útil (lifetime) de cada valor.
  • Comprueba siempre los datos de entrada y los límites de los índices de los arreglos.

Ejemplos de código C y C++

C
Ejecutar →
main.c
#include <stdio.h>
#include <string.h>
int main(void) {
    char text[] = "CodeUtility"; size_t length = strlen(text);
    // Swap mirrored characters in place.
    for (size_t i = 0; i < length / 2; ++i) {
        char temporary = text[i]; text[i] = text[length - 1 - i]; text[length - 1 - i] = temporary;
    }
    puts(text);
}
Resultado de la ejecución
ytilitUedoC
C++
Ejecutar →
main.cpp
#include <algorithm>
#include <iostream>
#include <string>
int main() {
    std::string text = "CodeUtility";
    // reverse applies swaps across the selected range.
    std::reverse(text.begin(), text.end());
    std::cout << text << '\n';
}
Resultado de la ejecución
ytilitUedoC

Comparación entre C y C++

El bucle intercambia text[i] y text[length - 1 - i] con ayuda de la variable temporal temporary, hasta que las dos posiciones se encuentran en el medio de la cadena. Fíjate en que la cadena debe declararse como arreglo char text[] para poder modificarla. El resultado mostrado es ytilitUedoC.

C

C usa funciones procedurales pequeñas y muestra abiertamente cómo se representan los datos en memoria.

C++

C++ sigue permitiendo trabajar a bajo nivel, pero añade tipos de biblioteca y abstracciones más seguras.

Ejercicios de práctica

Ejecuta las dos versiones y después modifica el código para ver la diferencia de seguridad que aporta cada lenguaje.

  • Prueba entradas no válidas y valores límite.
  • Compila con las opciones -Wall -Wextra -Wpedantic para activar más avisos.
  • Pon las declaraciones comunes en un archivo de cabecera y la implementación en un archivo aparte.

Practica con un reto

Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.

Todos los retos