示例#1
0
void encaja(Imagen *ima)
{
  unsigned n, i, j, x, linea_minima = 0;
  long unsigned distancia, distancia_minima;
  const long unsigned grande = 1 + ima->ancho * 768ul;

  n = ima->alto - 2;
  for (i = 0; i < n; i++)
  { // altitudinea imaginii - 3 deoarece avem nevoie sa facem 2 switch-uri la sfirshit
  
    distancia_minima = grande;

    for (j = i + 1; j < ima->alto; j++)
    {
      distancia = 0;

      int id, nt;
      id = omp_get_thread_num();
      nt = omp_get_num_threads();

      for (x = id; x < (ima->ancho) && (!distancia > distancia_minima); x += nt)
      {
        distancia += diferencia(&A(x, i), &A(x, j));
        // if (distancia> distancia_minima) break;
      }

      if (distancia < distancia_minima)
      {
        distancia_minima = distancia;
        linea_minima = j;
      }
    }
    intercambia_lineas(ima, i + 1, linea_minima);
  }
}
示例#2
0
int main(){
    
    Elem e1[10]={65,66,67,68,69,70};
    Elem e2[10]={69,70,71,72,73,74,75,76};
    Conjunto c1=crea(e1,6);
    Conjunto c2=crea(e2,8);    
    
    imprime(union1(c1,c2));
    puts("");
    printf("%d",cardinalidad(union1(c1,c2)));
    puts("");
    imprime(interseccion(c1,c2));  
    puts(""); 
    printf("%d\n",cardinalidad(interseccion(c1,c2)));
    imprime(diferencia(c1,c2)); 
    
    
    
    
     return 0;   
}