int main(int argc, char **argv) {
	srand(time(NULL));
	int* A;
	int* B;
	A = geraVetor();
	if(A == NULL){
		printf("Não foi possível alocar memória para o vetor\n");
		return 1;
	}

	B = geraVetor();
	if(B == NULL){
		printf("Não foi possível alocar memória para o vetor\n");
		free(A);
		return 1;
	}

	int nThreads = calculaThreads();
	pthread_t *thread = (pthread_t*) malloc(sizeof(pthread_t)*nThreads);
	if(thread == NULL){
		printf("Erro: Não foi possivel alocar memória para as threads\n");
		free(A);
		free(B);
		return 1;
	}
	argumentosThread *argumentos = (argumentosThread*)malloc(sizeof(argumentosThread)*NTHREADS);
	if(argumentos == NULL){
		printf("Erro: Não foi possivel alocar memória para os argumentos\n");
		free(A);
		free(B);
		free(thread);
		return 1;
	}
	pthread_mutex_init(&mutex, NULL); // criação da mutex

	imprimirVetor('A', A);
	imprimirVetor('B', B);
	prepararThreads(nThreads, A, B, thread, argumentos);
	esperarThreads(nThreads, thread);
	imprimeResultado();
	free(argumentos);
	free(thread);
	free(A);
	free(B);
	pthread_mutex_destroy(&mutex); //destruição da mutex
	pthread_exit(NULL);
}
int testaMerge(int tam){
	
	int v[tam], n=tam;    
    clock_t t;
        
    geraVetor(v,n);    
    t = clock();    
	mergeSort( vet, n);
	t = clock() - t;
    return t;	
}
int testaBubble(int tam){
	
	int v[tam], n=tam;    
    clock_t t;
        
    geraVetor(v,n);    
    t = clock();    
	bubbleSort(v,n);    
	t = clock() - t;
    return t;	
}
int testaQuick(int tam){
	
	int v[tam], n=tam;    
    clock_t t;
        
    geraVetor(v,n);    
    t = clock();    
	quickSort(vet, 0, n -1);
	t = clock() - t;
    return t;	
}
int testaSelection(int tam){
	
	int v[tam], n=tam;    
    clock_t t;
        
    geraVetor(v,n);    
    t = clock();    
	selectionSort(v,n);    
	t = clock() - t;
    return t;	
}
int testaInsertion(int tam){
	
	int v[tam], n=tam;    
    clock_t t;
        
    geraVetor(v,n);    
    t = clock();    
	insertionSort(v,n);    
	t = clock() - t;
    return t;	
}
/*------------------------------------------------------------------*/
int main(int argc, char* argv[]) {
   long       thread;
   pthread_t* thread_handles;
   double start, finish, elapsed;

   if (argc != 2) Usage(argv[0]);
   thread_count = atoi(argv[1]);
   thread_handles = malloc(thread_count*sizeof(pthread_t));

   printf("Enter m and n\n");
   scanf("%d%d", &m, &n);

   A = malloc(m*n*sizeof(double));
   x = malloc(n*sizeof(double));
   y = malloc(m*sizeof(double));
   
   geraMatriz(A, m, n);

   geraVetor(x, n);

   GET_TIME(start);

   for (thread = 0; thread < thread_count; thread++)
      pthread_create(&thread_handles[thread], NULL,
         Pth_mat_vect, (void*) thread);

   for (thread = 0; thread < thread_count; thread++)
      pthread_join(thread_handles[thread], NULL);

   GET_TIME(finish);
   elapsed = finish - start;

   printf("Tempo decorrido = %e segundos\n", elapsed);

   free(A);
   free(x);
   free(y);

   return 0;
}  /* main */
Example #8
0
void ex02() {
	
	int status ;
	
	int * vet ;
	int tamVet ;
	
	printf("Antes do fork\n") ;
	
	printf("Gera Vetor\n") ;
	vet = geraVetor(&tamVet, vet);
	
	printf("Exibe Vetor\n") ;
	exibeVetor(vet, tamVet) ;
	
	printf("Fork\n") ;
	if(fork() != 0) { // parent code
		
		waitpid(-1, &status, 0);
		
		printf("Pai Exibe\n") ;
		exibeVetor(vet, tamVet) ;
		
	} // fim do if
	
	else { // child code
		printf("Filho Exibe\n") ;
		exibeVetor(vet, tamVet) ;
		
		printf("Filho Ordena\n") ;
		ordenaVetor(vet, tamVet) ;
		
		printf("Filho Exibe\n") ;
		exibeVetor(vet, tamVet) ;
		
	} // fim do else
	
} // fim do ex02
Example #9
0
int main()
{

    int i;
    for(i = 0; i< 100; i++){
        if(verificaSeEhPrimo(i)){
            printf("Return true para %d\n", i);

        }
        else
        {
            printf("Return false para %d\n", i);
        }

    }



    //srand(time(NULL));

    int pares = 0, impares = 0, valueSearch = 0; // mediaImpares = 0;
    int *result;
    MatrixOfInt a, b, c, x, y, w;
    printf("RESULTADOS REFERENTES A QUESTÃO 1 DA LISTA 3. \n");
    printf("\nMatrix A:\n");
    readDimentions(&a);
    if(!allocateMatrix(&a)){
        printf("Não consegui alocar a matrix a. ");
        exit(FAIL);
    }
    //Gera vator randomico
    randomicMatrix(&a);
    //printf("\nInforme os elementos da Matrix A:\n");
    //readMatrix(&a);
    //Ordena a matriz de forma decrescente
    descendingOrderWithFlag(&a);
    //Calcula quantos numeros pares e impares tem no vetor.
    showMatrix(&a);
    calcParesImpares(&a, &pares, &impares);
    printf("O números total de pares no vetor e menores que 256 é: %d. \n", pares);
    printf("O números total de ímpares no vetor e menores que 256 é: %d. \n", impares);
    printf("A média dos números ímpares é: %f. \n", returnMediaDeImpares(&a));
    releaseMatrix(&a);
    printf("-----------------------------------------------------------------------------\n");

    printf("\nRESULTADOS REFERENTES A QUESTÃO 2 DA LISTA 3. \n");
    x.row = 1;
    y.row = 1;
    w.row = 1;
    printf("Digite o número de ELEMENTOS do vetor X:\n");
    scanf("%d", &x.col);

    if(!allocateMatrix(&x)){
        printf("Não consegui alocar a matrix X. ");
        exit(FAIL);
    }
    printf("\nInforme os elementos da Matrix X:\n");
    readMatrix(&x);

    y.col = returnNumeroColunas(&x);

    if(!allocateMatrix(&y)){
        printf("Não consegui alocar a matrix Y. ");
        exit(FAIL);
    }
    //gera vetor com valores entre 10 e 40
    geraVetor(&x, &y);
    printf("\nMATRIZ X");
    showMatrix(&x);
    printf("MATRIZ Y");
    showMatrix(&y);

    w.col = returnNumeroColunasComIndicePar(&x);

    if(!allocateMatrix(&w)){
        printf("Não consegui alocar a matrix Y. ");
        exit(FAIL);
    }
    geraVetorPartindoDeIndicePares(&x,&w);
    printf("MATRIZ W");
    showMatrix(&w);
    printf("ENTRE COM O NÚMERO PARA SER PESQUISADO NO VETOR X: ");
    scanf("%d", &valueSearch);
    result = pesquisaBinaria(&x, valueSearch);
    if (result == NULL) {
        printf("Valor não encontrado.\n");
    } else {
        printf("O valor: %d foi encontrado no vetor X.\n", *result);
    }
    printf("O menor número no vetor X é: %d.\n", *(*(x.ptr)));
    printf("O maior número no vetor X é: %d.\n", *(*(x.ptr)+(x.col-1)));

    printf("-----------------------------------------------------------------------------\n");
    printf("RESULTADOS REFERENTES A QUESTÃO 3 DA LISTA 3.\n");
    a.row = 1;
    b.row = 1;
    c.row = 1;
    printf("Digite o número de ELEMENTOS do vetores A e B:\n");
    scanf("%d", &a.col);
    b.col = a.col;
    c.col = a.col;

    if(!allocateMatrix(&a)){
        printf("Não consegui alocar a matrix A. ");
        exit(FAIL);
    }

    if(!allocateMatrix(&b)){
        printf("Não consegui alocar a matrix B. ");
        exit(FAIL);
    }

    if(!allocateMatrix(&c)){
        printf("Não consegui alocar a matrix C. ");
        exit(FAIL);
    }

    printf("\nInforme os elementos da Matrix A:\n");
    readMatrix(&a);

    printf("\nInforme os elementos da Matrix B:\n");
    readMatrix(&b);

    geraVetorPartindoDeOutrosDois(&a,&b,&c);

    printf("ENTRE COM O NÚMERO PARA SER PESQUISADO NO VETOR C: ");
    scanf("%d", &valueSearch);

    printf("MATRIX A.");
    showMatrix(&a);
    printf("MATRIX B.");
    showMatrix(&b);
    printf("MATRIX C.");
    showMatrix(&c);

    result = pesquisaSequencial(&c, valueSearch);
    if (result == NULL) {
        printf("Valor não encontrado no vetor.\n");
    } else {
        printf("O valor: %d foi encontrado no vetor C. \n", *result);
    }

    return 0;



}
Example #10
0
int* geraVetor () {
  return geraVetor(N);
}