Ejercicio 03 — Encontrar el maximo y el minimo de un array de N enteros
Dificultad: verde · Módulo 05 (Arrays y cadenas)
Enunciado
Encontrar el maximo y el minimo de un array de N enteros.
Diagrama de flujo

Cómo se resuelve
Para encontrar el máximo y el mínimo recorremos el array una sola vez comparando cada elemento con los mejores candidatos que llevamos hasta el momento.
- El detalle importante está al inicializar:
int max = a[0]; int min = a[0];. Arrancamos ambos con el primer elemento del array, no con0. Esto es la trampa típica: si inicializarasmax = 0y todos los números fueran negativos (por ejemplo-5 -2 -8), el programa diría que el máximo es0, un valor que nunca estuvo en los datos. Usara[0]garantiza que empiezas con un valor real de la colección. - El bucle empieza en
i = 1, no en0, porque a la posición0ya la hemos usado para inicializar. En cada vuelta: sia[i]supera amax, lo actualizamos; si es menor quemin, actualizamosmin.
Al terminar el recorrido, max y min contienen el mayor y el menor de todo el array. Este patrón “guardar el mejor hasta ahora” reaparece en muchísimos algoritmos.
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 05: Arrays y cadenas
* Ejercicio 03 — PRACTICA (rellena los TODO)
* Enunciado: Encontrar el maximo y el minimo de un array de N enteros.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej03_practica.c -o ej03 && ./ej03
*/
#include <stdio.h>
int main(void) {
int n;
// TODO 1: Pedir N y leerlo.
// TODO 2: Declara el array y lee los N enteros.
// TODO 3: Declara 'max' y 'min' e inicializalos con a[0].
// (Ojo: NO uses 0 como valor inicial si los datos pueden ser negativos.)
// TODO 4: Recorre el array desde el indice 1. En cada iteracion:
// - Si a[i] > max, actualiza max.
// - Si a[i] < min, actualiza min.
// TODO 5: Imprime max y min.
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 05: Arrays y cadenas
* Ejercicio 03 — MODELO (resuelto)
* Enunciado: Encontrar el maximo y el minimo de un array de N enteros.
* Dificultad: verde
* Compilar: gcc -std=c11 -Wall ej03_modelo.c -o ej03 && ./ej03
*/
#include <stdio.h>
int main(void) {
int n;
printf("Cuantos numeros (max 100)? ");
scanf("%d", &n);
if (n < 1 || n > 100) {
printf("N debe estar entre 1 y 100.\n");
return 1;
}
int a[100];
for (int i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
// Inicializar max y min con el primer elemento.
// NO inicialices con 0: si todos los valores son negativos, fallaria.
int max = a[0];
int min = a[0];
for (int i = 1; i < n; i++) { // empezamos en 1, ya tenemos a[0]
if (a[i] > max) max = a[i];
if (a[i] < min) min = a[i];
}
printf("Max: %d\n", max);
printf("Min: %d\n", min);
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.