Ejercicio 05 — Busqueda lineal — leer un array y un valor
Dificultad: amarillo · Módulo 05 (Arrays y cadenas)
Enunciado
Busqueda lineal — leer un array y un valor; indicar si existe y en que posicion (primera ocurrencia).
Diagrama de flujo

Cómo se resuelve
La búsqueda lineal es la forma más simple de buscar: recorrer el array de principio a fin comparando cada elemento con el valor buscado hasta encontrarlo.
- Usamos una variable
poscomo resultado, inicializada a-1. Ese-1es un centinela que significa “todavía no encontrado”: lo elegimos porque ninguna posición válida del array es-1(los índices empiezan en0), así que no hay ambigüedad. - Recorremos con un
for; en cuantoa[i] == buscado, guardamospos = iy hacemosbreakpara salir del bucle. Elbreakes lo que nos da la primera ocurrencia: si el valor apareciera más veces, no seguimos mirando. - Al final, si
possigue valiendo-1es que nunca hubo coincidencia; en caso contrario,poses la posición encontrada.
Trampa habitual: usar 0 como valor de “no encontrado”. Como 0 es una posición válida (la primera casilla), confundirías “está en la posición 0” con “no está”. Por eso se reserva -1, que nunca puede ser un índice real.
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 05 — PRACTICA (rellena los TODO)
* Enunciado: Busqueda lineal — leer un array y un valor; indicar si existe
* y en que posicion (primera ocurrencia).
* Dificultad: amarillo
* Compilar: gcc -std=c11 -Wall ej05_practica.c -o ej05 && ./ej05
*/
#include <stdio.h>
int main(void) {
int n;
// TODO 1: Pedir N, declarar el array y leer los N enteros.
// TODO 2: Pedir el valor a buscar.
// TODO 3: Declara una variable 'pos' inicializada a -1.
// Recorre el array con un for. Si a[i] == buscado:
// - guarda i en pos
// - usa 'break' para salir del bucle (primera ocurrencia)
// TODO 4: Si pos sigue siendo -1, el elemento no existe.
// Si no, imprime la posicion donde se encontro.
return 0;
}Solución — cópiala y ejecútala
/*
* Curso de C — Modulo 05: Arrays y cadenas
* Ejercicio 05 — MODELO (resuelto)
* Enunciado: Busqueda lineal — leer un array y un valor; indicar si existe
* y en que posicion (primera ocurrencia).
* Dificultad: amarillo
* Compilar: gcc -std=c11 -Wall ej05_modelo.c -o ej05 && ./ej05
*/
#include <stdio.h>
int main(void) {
int n;
printf("Cuantos numeros (max 50)? ");
scanf("%d", &n);
if (n < 1 || n > 50) {
printf("N debe estar entre 1 y 50.\n");
return 1;
}
int a[50];
for (int i = 0; i < n; i++) {
printf("a[%d] = ", i);
scanf("%d", &a[i]);
}
int buscado;
printf("Valor a buscar: ");
scanf("%d", &buscado);
// Busqueda lineal: recorrer desde el principio y parar en la primera coincidencia
int pos = -1; // -1 significa "no encontrado" (ninguna posicion valida es -1)
for (int i = 0; i < n; i++) {
if (a[i] == buscado) {
pos = i;
break; // encontramos la primera ocurrencia; salimos
}
}
if (pos == -1) {
printf("El valor %d NO esta en el array.\n", buscado);
} else {
printf("Encontrado en posicion %d\n", pos);
}
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.