Ejercicios de C/C++ para principiantes

Contar las palabras de una frase en C y C++

En esta lección vas a contar las palabras separadas por espacios en una frase siguiendo el estado del programa mientras recorre la cadena.

Introducción

Una forma fiable de contar palabras es saber si el programa está dentro de una palabra o en un espacio. Cada vez que se pasa de un espacio a un carácter que no lo es, empieza una palabra nueva. Este método funciona incluso con varios espacios seguidos.

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 <ctype.h>
#include <stdio.h>
int main(void) {
    const char *text = "C and C++ examples"; int words = 0, inside = 0;
    // Count transitions from whitespace into a word.
    for (; *text; ++text) { if (isspace((unsigned char)*text)) inside = 0; else if (!inside) { ++words; inside = 1; } }
    printf("words=%d\n", words);
}
Resultado de la ejecución
words=4
C++
Ejecutar →
main.cpp
#include <iostream>
#include <sstream>
#include <string>
int main() {
    std::istringstream input("C and C++ examples"); std::string word; int words = 0;
    // Formatted extraction skips whitespace and returns one word.
    while (input >> word) ++words;
    std::cout << "words=" << words << '\n';
}
Resultado de la ejecución
words=4

Comparación entre C y C++

La variable inside indica si la posición actual está dentro de una palabra. Cuando se encuentra un espacio (comprobado con isspace), inside vuelve a 0. Cuando llega otro carácter mientras inside vale 0, el programa aumenta el contador words y pone inside a 1. La frase "C and C++ examples" tiene 4 palabras.

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