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); } }
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; }