Ejercicio 03 — Lee un entero e indica si es positivo, negativo o cero

Dificultad: verde · Módulo 02 (Condicionales)

Enunciado

Lee un entero e indica si es positivo, negativo o cero.

Diagrama de flujo

Diagrama de flujo del ejercicio 03

Cómo se resuelve

El programa lee un entero y lo clasifica en tres categorías mutuamente excluyentes: positivo, negativo o cero. Es el ejemplo de libro para la estructura if / else if / else.

  1. scanf("%d", &n) lee el número (recuerda el &).
  2. if (n > 0) atrapa los positivos; else if (n < 0) los negativos. El else final no lleva condición porque, si un número no es mayor ni menor que cero, solo puede ser exactamente cero.

La idea importante es el orden y la exclusión: las ramas se prueban de arriba abajo y en cuanto una es verdadera, las demás se ignoran. Eso hace innecesario (y sería redundante) escribir else if (n == 0) en la última rama.

Trampa habitual: tratar el cero como si fuera un positivo. Si comprobaras solo if (n >= 0) para “positivo”, el cero se colaría ahí y nunca imprimirías “Es cero”. Al usar n > 0 estricto y dejar el cero al else, cada valor cae en una única categoría.

Para practicar — cópialo en Dev-C++

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 02: Condicionales
  Ejercicio 03 — PRACTICA (rellena los TODO)
  Enunciado: Lee un entero e indica si es positivo, negativo o cero.
  Dificultad: verde
  Compilar: gcc -std=c11 -Wall ej03_practica.c -o ej03 && ./ej03
*/
 
#include <stdio.h>
 
int main(void) {
    int n;
 
    // TODO: pide el entero al usuario y leelo con scanf
 
    // TODO: escribe un if / else if / else con tres ramas:
    //   n > 0  -> "Es positivo"
    //   n < 0  -> "Es negativo"
    //   resto  -> "Es cero"
 
    return 0;
}

Solución — cópiala y ejecútala

/*
  Curso de C — Modulo 02: Condicionales
  Ejercicio 03 — MODELO (resuelto)
  Enunciado: Lee un entero e indica si es positivo, negativo o cero.
  Dificultad: verde
  Compilar: gcc -std=c11 -Wall ej03_modelo.c -o ej03 && ./ej03
*/
 
#include <stdio.h>
 
int main(void) {
    int n;
    printf("Introduce un entero: ");
    scanf("%d", &n);
 
    // Tres casos mutuamente excluyentes: usamos if-else if-else.
    if (n > 0) {
        printf("Es positivo\n");
    } else if (n < 0) {
        printf("Es negativo\n");
    } else {
        // Solo queda n == 0
        printf("Es cero\n");
    }
 
    return 0;
}

Cómo usarlo

Dev-C++ (Windows): Archivo → Nuevo → Código fuente, pega el código y pulsa F11 (compilar y ejecutar). Si ves los acentos raros en la consola, escribe chcp 65001 y vuelve a ejecutar.

Conexiones