int main(int argc, char *argv[]){

	int i;
	int div[2];
	for(i=1;i<=NUM_MAX;i++){
		div[0]=divisible(i,3);
		div[1]=divisible(i,5);
		if((!div[0]||contiene(i,'3'))&&(!div[1]||contiene(i,'5'))) printf("%s\n","fizzbuzz");
		else if(!div[0]||contiene(i,'3'))printf("%s\n","fizz");
		else if(!div[1]||contiene(i,'5'))printf("%s\n","buzz");
		else printf("%i\n",i);
	}

}
Exemple #2
0
int TClist::BuscarBinAprox(t_clist *datos, int izq, int der, char *n, TClist *aproxList)
{
 bool encontrado=false;
 int centro=0,i=0;

 while ( (!encontrado) && (izq <= der) )
 {
 i++;
        centro=(izq+der)/2;
//        printf("centro: %d, i: %d, d: %d, %s, total: %d\n",centro,izq,der,datos[centro].palabra,size());

        if (strcmp(datos[centro].palabra,n) == 0)
        {
            encontrado=true;
            //printf("ENCONTRADO: %s %d\n",datos[centro].palabra,centro);

        }
        else
        {
            if (strcmp(datos[centro].palabra, n) < 0)
                izq=centro+1;
            else
                der=centro-1;
        }
 }

 int numCoincidencias = 0;
 //No encontramos la palabra pero es parte de una palabra más larga
 if (!encontrado && centro > 0)
 {
     int len_s1 = strlen(n);
     int len_s2 = strlen(datos[centro].palabra);
     char *stringCoincidente = NULL;
     //printf("Tamaño: %d, %d\n",len_s1,len_s2);

     int max_len = 0;
     if (len_s1 > len_s2)
     {
        max_len = len_s2;
     }
     else
     {
        max_len = len_s1;
     }

     //Buscamos que por lo menos hayan las dos primeras palabras iguales, sino pueden salir muchos resultados
     if (max_len > 3)
     {
        int len_coincidencia = 0;
        int contador = 0;
        bool salir = false;
        //for (int i=0;i<len_s2;i++)
        while (!salir && contador < max_len)
        {
            if (datos[centro].palabra[contador] == n[contador])
            {
                len_coincidencia++;
            }
            else
            {
                salir = true;
            }
            contador ++;
        }

        stringCoincidente = new char[len_coincidencia+1];
        stringCoincidente[len_coincidencia] = '\0';
        //printf("Tamaño: %d\n",len_coincidencia);
        for (int i=0;i<len_coincidencia;i++)
        {
            stringCoincidente[i] = n[i];
        }

        //printf("Coincidencia: %s\n",stringCoincidente);
     }

     //Vamos hacia atras para ver si hubiera más coincidencias
     if (centro > 0 && max_len > 3)
     {
         if (contiene(datos[centro-1].palabra,stringCoincidente) != -1 )
         {
             do
             {
                centro--;
             }while (contiene(datos[centro].palabra,stringCoincidente) != -1 && centro > 0);
             centro++;
         }
     }

     do
     {
        aproxList->add(datos[centro].palabra);
        //printf("añadimos palabra: %s %d\n",datos[centro].palabra,centro);
        centro++;
        numCoincidencias++;

     }while (contiene(datos[centro].palabra,stringCoincidente) != -1 && centro < numPalabras && numCoincidencias < 50);

 }

 // El algoritmo de búsqueda binaria encuentra el número, pero no
// asegura que sea el primero si hay repeticiones de números. Por eso
// retrocedemos hasta el primer elemento
// if (encontrado)
// while(strcmp(temp_adverbios[centro-1],n) == 0)
//       centro--;
 if (encontrado) return (centro);
 else return(-1);
}