sábado, 19 de enero de 2008

Número de Ocurrencia en un Vector en lenguaje C

Desarrolle la función "numeroOcurrenciasVector" a la que pasándole dos vectores de enteros y sus tamaños, en el siguiente orden: primer vector y su tamaño, segundo vector y su tamaño, devuelva el número de apariciones del segundo vector dentro del primero. Si el segundo tiene cero elementos aparece cero veces en el primero. Hay que tener en cuenta que se admite el solapamiento del vector buscado con otras soluciones:


En [1, 1, 1, 1, 1]
Buscar [1, 1]
Encontrado en [[1, 1], 1, 1, 1], [1, [1, 1], 1, 1], [1, 1, [1, 1], 1] y [1, 1, 1, [1, 1]]

int numeroOcurrenciasVector (int v1[], int tam1, int v2[], int tam2){
int n=0, i, j;
//inicio de la busqueda
int limite= tam1-tam2+1;
//si el segundo vector es vacio
if (tam2 == 0)
//devolvemos 0
return 0;
for (i=0; i for (j=0; j if (v1[i+j] != v2[j])
break;
if (j>=tam2)
n++;
}
//devolvemos el numero de ocurrencias repetidas y con solopamiento
return n;
}