Ejercicio 02 — Leer N y calcular la suma 1+2+…+N

Dificultad: verde · Módulo 03 (Bucles)

Enunciado

Leer N y calcular la suma 1+2+…+N.

Diagramas de flujo

Diagrama de flujo (actividad) del ejercicio 02

Diagrama de flujo (grafo) del ejercicio 02

Cómo se resuelve

Aquí aparece uno de los patrones más importantes de la programación: el acumulador. La idea es tener una variable, suma, que va guardando el total mientras el bucle recorre los números del 1 al N.

  1. Antes del bucle declaramos int suma = 0. Ese valor inicial de 0 es imprescindible: es el “punto de partida” al que iremos añadiendo cosas.
  2. El for recorre i de 1 hasta n. En cada vuelta, suma += i significa suma = suma + i, es decir, “coge lo que ya tenías acumulado y súmale el número actual”.
  3. Al terminar el bucle, suma contiene 1+2+...+N y lo mostramos con printf.

La trampa típica es no inicializar el acumulador o hacerlo con un valor equivocado. Si escribes solo int suma; sin el = 0, la variable arranca con un valor basura (lo que hubiera en esa zona de memoria) y el resultado será un número sin sentido. Regla de oro: todo acumulador que suma empieza en 0; todo acumulador que multiplica (como el factorial del ejercicio siguiente) empieza en 1.

Para practicar — cópialo y complétalo

Pega este esqueleto y completa los TODO. Es la mejor forma de aprender: inténtalo antes de mirar la solución.

/*
 * Curso de C — Modulo 03: Bucles
 * Ejercicio 02 — PRACTICA (rellena los TODO)
 * Enunciado: Leer N y calcular la suma 1+2+...+N.
 * Dificultad: verde
 * Stdin: 10
 * Compilar: gcc -std=c11 -Wall ej02_practica.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
 
    // TODO 1: Pide N al usuario y leelo con scanf
 
    // TODO 2: Declara una variable entera 'suma' e iniciala a 0
    //         (si no la inicializas, su valor es basura!)
 
    // TODO 3: Bucle for de 1 a n; en cada paso suma += i
 
    // TODO 4: Imprime el resultado con el formato:
    //         "Suma de 1 a N = resultado"
 
    return 0;
}

Solución — cópiala y ejecútala

/*
 * Curso de C — Modulo 03: Bucles
 * Ejercicio 02 — MODELO (resuelto)
 * Enunciado: Leer N y calcular la suma 1+2+...+N.
 * Dificultad: verde
 * Stdin: 10
 * Compilar: gcc -std=c11 -Wall ej02_modelo.c -o ej02 && ./ej02
 */
 
#include <stdio.h>
 
int main(void) {
    int n;
    printf("Introduce N: ");
    scanf("%d", &n);
 
    int suma = 0;               // acumulador, siempre inicializar a 0
 
    for (int i = 1; i <= n; i++) {
        suma += i;              // suma = suma + i
    }
 
    printf("Suma de 1 a %d = %d\n", n, suma);
    return 0;
}

Ejecútalo en el navegador

▶ Abrir y ejecutar en Compiler Explorer

Se abre con la solución ya cargada; pulsa el botón de ejecutar (Run) para ver la salida. No hay que instalar nada.

Cómo usarlo

Pega el código en un fichero y ejecútalo con tu toolchain habitual (o el botón de Ejecutar de tu editor). Antes de mirar la solución, intenta completar tú el esqueleto: es la mejor forma de aprender.

Conexiones