#include <stdio.h>
#define TAM 5 // tamaño del array
// incremento circular
void inc(int* p) { if(*p == TAM-1) *p=0; else (*p)++; }
int main(void)
{
int a_base[TAM]={ 1, 6, 3, 9, 1 }; // array base
int a_test[TAM]={ 3, 9, 1, 1, 6 }; // array a comprobar
int b=0; // índice para el array base
int t=0; // índice para el array test
int cnt=0; // contador de ciclos
// si la base ha llegado al final (está contenida)
// o si test ha llegado al final (no está contenida)
// entonces acabo el bucle
while(b<TAM && t<TAM)
{
if(a_base[b]==a_test[t]) { b++; inc(&t); } // si son iguales incremento
else { b=0; t=++cnt; } // si no, empiezo en siguiente ciclo
}
// si la base llegó al final entonces si está contenida
printf("El array base %sestá en el array comprobado\n", b==TAM ? "" : "no ");
return 0;
}
/* mark255 */
/* secuencia ciclica
https://aprenderaprogramar.com/foros/index.php?PHPSESSID=hd9t2mfl0pbkad0ij8pj0h5llq&topic=7854.0
*/