Ejercicio 07 — Cociente y resto sin usar % para el resto
Dificultad: rojo · Módulo 01 (Variables, tipos y entrada/salida)
Enunciado
Cociente y resto sin usar % para el resto; detectar division por cero.
Diagrama de flujo
Cómo se resuelve
El ejercicio rojo del módulo: junta un cálculo con “truco” y la defensa ante una entrada peligrosa.
Comprobar antes de dividir. Dividir un entero entre cero es un error grave en C (el programa revienta). Por eso, antes de calcular nada:
if (divisor == 0) { printf("Error: división por cero.\n"); return 1;}
El return 1 sale del programa con un código de error distinto de 0, la convención con la que un programa le dice al sistema operativo “he terminado mal”. (El if lo verás a fondo en el módulo 02; aquí basta la forma if (condición) { ... }.)
Cociente:dividendo / divisor. Entre enteros, / da la división entera (trunca hacia cero): 7 / 2 es 3, no 3.5.
Resto sin usar %: en lugar del operador módulo, se aplica su definición: resto = dividendo - cociente * divisor. Con 7 y 2: 7 - 3*2 = 1. Es exactamente lo que haría 7 % 2.
La idea transferible: valida las entradas peligrosas antes de operar con ellas. Comprobar el divisor a cero es el primer ejemplo de programación defensiva, algo que harás toda tu vida.
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 01: Variables, tipos y entrada/salida * Ejercicio 07 — PRACTICA (rellena los TODO) * Enunciado: Cociente y resto sin usar % para el resto; detectar division por cero. * Dificultad: rojo * Compilar: gcc -std=c11 -Wall ej07_practica.c -o ej07 && ./ej07 */#include <stdio.h>int main(void) { // TODO: declara dos enteros 'dividendo' y 'divisor', inicializados a 0 // TODO: lee el dividendo del usuario // TODO: lee el divisor del usuario // TODO: comprueba si el divisor es 0. // Si lo es, muestra "Error: división por cero.\n" y haz return 1. // (el if lo veras en detalle en el modulo 02, pero la sintaxis es: // if (condicion) { ... } ) // TODO: calcula el cociente usando division entera: dividendo / divisor // Guarda el resultado en una variable int llamada 'cociente' // TODO: calcula el resto SIN usar el operador % // Formula: resto = dividendo - cociente * divisor // Guarda el resultado en una variable int llamada 'resto' // TODO: muestra "Cociente: %d\n" y "Resto: %d\n" return 0;}
Solución — cópiala y ejecútala
/* * Curso de C — Modulo 01: Variables, tipos y entrada/salida * Ejercicio 07 — MODELO (resuelto) * Enunciado: Cociente y resto sin usar % para el resto; detectar division por cero. * Dificultad: rojo * Compilar: gcc -std=c11 -Wall ej07_modelo.c -o ej07 && ./ej07 */#include <stdio.h>int main(void) { int dividendo = 0, divisor = 0; printf("Dividendo: "); scanf("%d", ÷ndo); printf("Divisor: "); scanf("%d", &divisor); // Comprobamos division por cero ANTES de calcular if (divisor == 0) { printf("Error: división por cero.\n"); return 1; // devolvemos 1 para indicar error al sistema operativo } // Cociente: division entera en C trunca hacia cero int cociente = dividendo / divisor; // Resto sin usar %: resto = dividendo - cociente * divisor // (equivalente matematico a la definicion de division euclidiana) int resto = dividendo - cociente * divisor; printf("Cociente: %d\n", cociente); printf("Resto: %d\n", resto); 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.