Ejercicio 07 — Dado N (max 8), genera e imprime la matriz identidad NxN
Dificultad: rojo · Módulo 06 (Matrices (arrays 2D))
Enunciado
Dado N (max 8), genera e imprime la matriz identidad NxN.
Diagrama de flujo

Cómo se resuelve
Aquí ya no leemos una matriz: la generamos nosotros según un patrón. La matriz identidad tiene 1 en la diagonal principal (donde i == j) y 0 en todo lo demás. Es decir, cada celda se decide mirando solo si su fila y su columna coinciden.
El doble bucle recorre todas las celdas y, en cada una, decide qué valor escribir. La forma más compacta es el operador ternario condicion ? valor_si : valor_no:
m[i][j] = (i == j) ? 1 : 0;Se lee como: “si i == j, pon 1; si no, pon 0”. Es exactamente lo mismo que un if (i == j) m[i][j] = 1; else m[i][j] = 0;, solo que en una línea. Usar cualquiera de las dos formas es igual de correcto.
Las trampas suelen ser dos. La primera es de lógica: confundir la condición y escribir el 1 fuera de la diagonal, o invertir el ternario y generar el “negativo” de la identidad (0 en la diagonal, 1 en el resto). La segunda es de C: en el if no confundas la comparación == con la asignación =. Escribir (i = j) no compara, sino que mete el valor de j dentro de i y evalúa como cierto casi siempre, rompiendo el patrón sin dar ningún error de compilación. Para la identidad basta con i == j, sin doble bucle extra ni casos raros.
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 06: Matrices (arrays 2D)
* Ejercicio 07 — PRACTICA (rellena los TODO)
* Enunciado: Dado N (max 8), genera e imprime la matriz identidad NxN.
* Dificultad: rojo
* Compilar: gcc -std=c11 -Wall ej07_practica.c -o ej07 && ./ej07
*/
#include <stdio.h>
#define MAX 8
int main(void) {
int m[MAX][MAX];
int n;
// TODO 1: leer la dimension n con scanf
// TODO 2: doble bucle para construir la identidad.
// En cada celda (i, j) decide que valor poner:
// - si i == j (estas en la diagonal) -> m[i][j] = 1
// - en cualquier otro caso -> m[i][j] = 0
// Puedes usar un if/else o el operador ternario (i==j) ? 1 : 0
// TODO 3: imprimir la matriz resultado con formato
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 06: Matrices (arrays 2D)
* Ejercicio 07 — MODELO (resuelto)
* Enunciado: Dado N (max 8), genera e imprime la matriz identidad NxN.
* Dificultad: rojo
* Compilar: gcc -std=c11 -Wall ej07_modelo.c -o ej07 && ./ej07
*/
#include <stdio.h>
#define MAX 8
int main(void) {
int m[MAX][MAX];
int n;
// Leer dimension
printf("Dimension de la identidad (1-%d): ", MAX);
scanf("%d", &n);
// Construir la matriz identidad:
// m[i][j] = 1 si i == j (diagonal), 0 en cualquier otro caso
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
m[i][j] = (i == j) ? 1 : 0;
// Imprimir la identidad
printf("\nMatriz identidad %dx%d:\n", n, n);
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++)
printf("%4d", m[i][j]);
printf("\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.