Olá pessoal, estou com dificuldades em fazer um comando de repetição de dois array inicia em momentos distintos. O que eu estou tentando fazer é o seguinte: tenho um array de 7 posições onde os índices 0, 1 e 3 são true e os demais são false. Tenho o segundo array de 13 posições, onde os elementos 0,1,3 e 9 são true o o restante false. O array menor sempre repete até o número de elementos do maior. Na primeira iteração os dois arrays iniciam no mesmo momento,  e são comparados se os índices dos dois array são true, assim tenho a seguinte saída:
 
	Array menor: 0123456012345
 
	Array maior: 0123456789101112
 
	É possível ver que os índices 0, 1 e 3 de cara são iguais para ambos os array, mais o índice 3 do menor coincide com o 9 do maior. Neste caso tenho como saída 4 encontros. Até aqui o código está funcionando bem, o problema é que na segunda iteração o array maior deveria iniciar quando o menor estiver no índice 1, na terceira iteração o maior deveria iniciar quando o menor estiver no índice 2 e assim por diante até terminar todos os índices do menor.
 
	Segue o código da primeira parte e da tentativa da segunda:
 
#include <iostream>
#include <stdio.h>
using namespace std;
int Verifica(int inimenor, int inimaior){
    bool padrao_menor[7] = { 0 };
	bool padrao_maior[13] = { 0 };
	padrao_menor[0] = padrao_menor[1] = padrao_menor[3] = {1};
	padrao_maior[0] = padrao_maior[1] = padrao_maior[3] = padrao_maior[9] = {1};
	int slot_menor = 0;
	int slot_maior = 0;
	int encontro = 0;
	if (inimenor == inimaior){
	for (int i = 0; i <= 50; i++) {
            if ((slot_menor >= sizeof(padrao_menor)-1) or (slot_maior >= sizeof(padrao_maior)-1)) {
                if (slot_menor >= sizeof(padrao_menor)-1) {
                    slot_menor = 0;
                }
                else {
                    slot_maior = 0;
                }
            }
            else {
                if ((padrao_menor[slot_menor] == true) and (padrao_maior[slot_maior] == true)) {
                    encontro++;
                    printf("Slot Menor %d, Slot Maior %d", slot_menor, slot_maior);
                    printf("\n");
                    slot_menor++;
                    slot_maior++;
                }
                else {
                    slot_menor++;
                    slot_maior++;
                }
            }
	}
	}else{
        for (int i = 0; i <= 50; i++) {
                printf("Valor do I %d\n", i);
            if ((slot_menor >= sizeof(padrao_menor)-1) or (slot_maior >= sizeof(padrao_maior)-1)) {
                if (slot_menor >= sizeof(padrao_menor)-1) {
                    slot_menor = 0;
                }
                else {
                    slot_maior = 0;
                }
            }
            else {
                if ((padrao_menor[slot_menor] == true) and (padrao_maior[slot_maior-1] == true)) {
                    encontro++;
                    printf("Slot Menor %d, Slot Maior %d", slot_menor, slot_maior);
                    printf("\n");
                    slot_menor++;
                    slot_maior++;
                }
                else {
                    slot_menor++;
                    slot_maior++;
                }
            }
	}
	}
	return encontro;
}
int main()
{
    int ini_menor = 0;
	int ini_maior = 0;
	int retorno = 0;
	int para = 0;
    while (para != 50){
       retorno = Verifica(ini_menor,ini_maior);
       printf("Total de Encontros sem Offset: %d\n", retorno);
       ini_maior++;
       para++;
    }
    }
	Alguém poderia ajudar com essa lógica? Desde já agradeço.