Preciso de uma ajuda enorme. Preciso fazer um programa em C no qual calcule as diagonais de uma matriz usando Threads conforme o enunciados:
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");
}