Ejercicios de C/C++ para principiantes

Calcular la suma de los elementos de un arreglo en C y C++

En esta lección vas a sumar todos los valores de un arreglo con un bucle y una variable acumuladora.

Introducción

Una variable acumuladora (accumulator) va recogiendo el resultado a lo largo de las vueltas del bucle. Para sumar un arreglo, empieza en 0 y va recibiendo cada elemento uno tras otro.

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.

Mira cómo funciona

Pulsa Paso para ejecutar el bucle paso a paso. Observa cómo se comprueba la condición, se ejecuta el cuerpo y la tabla de seguimiento crece fila a fila.

Ejemplos de código C y C++

C
Ejecutar →
main.c
#include <stdio.h>
int main(void) {
    int values[] = {2, 4, 6, 8, 10}; int total = 0;
    // sizeof determines the local array length.
    for (size_t i = 0; i < sizeof values / sizeof values[0]; ++i) total += values[i];
    printf("sum=%d\n", total);
}
Resultado de la ejecución
sum=30
C++
Ejecutar →
main.cpp
#include <iostream>
#include <numeric>
#include <vector>
int main() {
    std::vector values{2, 4, 6, 8, 10};
    // accumulate folds the range into one total.
    std::cout << "sum=" << std::accumulate(values.begin(), values.end(), 0) << '\n';
}
Resultado de la ejecución
sum=30

Comparación entre C y C++

La variable total se inicializa a 0 y después el bucle suma cada elemento a total exactamente una vez. La expresión sizeof values / sizeof values[0] calcula el número de elementos del arreglo, así que el bucle sigue siendo correcto aunque añadas o quites elementos. El resultado es sum=30.

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