Ir ao conteúdo
  • Cadastre-se

hmSantos

Membro Júnior
  • Posts

    2
  • Cadastrado em

  • Última visita

posts postados por hmSantos

  1. Preciso de uma ajuda enorme. Preciso fazer um programa em C no qual calcule as diagonais de uma matriz usando Threads conforme o enunciados:

    RWMLk.png

     

    Conforme me orientaram, eu devo passar o valor da diagonal e do salto(mudança de diagonal) como parâmetros, mas não sei o que fazer com esses valores.

    Segue o código que eu consegui fazer até agora (esta incompleto pois não sei como proceder na função para somar as diagonais):

     

    OBS: tirei as funções que geram o arquivo com os valores da matriz e a função que atribui esses valores à matriz para o código ficar mais limpo e fácil de entender.

     

    typedef struct{ 
      int diag=0; 
      int salto; 
    }ST;
    
    ST v;
    
    struct param *arg;
    
    void *somarMatriz(void *args){ 
      ST * in = (ST *) args;
    
    int x=0, y=0;
    
    result = (float *) malloc((l+c-1)*sizeof(float));
    
    x=0;
    for(i=; i<l+c-1; i++){
        result[i]=0;
    }
    
    for(i=l-1; i>=0; i--){
        x = y;
        for(j=0; j<c; j++){
            result[x] += mat[i][j];
            x++;
        }
        y++;
    }
    }
    
    int main (){
    
    printf("Entre com o numero de linhas da matriz: \n");
    scanf("%d", &l);
    
    printf("Entre com o numero de colunas da matriz: \n");
    scanf("%d", &c);
    
    printf("Entre com o quantidade de Threads desejada:\n");
    scanf("%d", &arg.salto);
    
    gerarArquivo(l, c);
    gerarMatriz(l, c);
    
    pthread_t threads[T];
    pthread_attr_t attr;
    int rc;
    long t;
    void *status;
    
    pthread_attr_init(&attr);
        pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_JOINABLE);
    
    for(t=0; t<T; t++){
        rc = pthread_create(&threads[t], NULL, somarMatriz, (void*)&v);
        if (rc){
            printf("ERRO");
            exit(-1);
        }
    }
    
    pthread_exit((void *)NULL);
    
    printf("\n\n");
    
    printf("Resultados:\n");
    for(i=0; i<l+c-1; i++){
        printf("%d\t", result[i]);
    }
    
    printf("\n");
    
    }

     

     

    • Curtir 1

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!