Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

AprendizPHP

Como realizar a multiplicação vetor x matriz?

Recommended Posts

Olá pessoal,

Tenho o seguinte somatório:

 

#include <pthread.h>
#include <stdio.h>
#define DIMVET 100000000
#define NTHR 10      //constante que define o nro de threads

int vetor[DIMVET];

void * funcThread(void * val)
{
   int ret = 10;
   int soma=0,cont;

   printf("Oi, thread %d!\n",(int)val);
   ret = (DIMVET/NTHR) *(int)val;
   for(cont=ret;cont<(DIMVET/NTHR + ret);cont++)
   {
       soma = soma + vetor[cont];
   }
   pthread_exit((void *) soma);
}
//******************************************************
main()
{
 pthread_t tid[NTHR];   //vetor que recebe o id de cada thread
 int cont;
 int somatorio =0;
 void * retorno;
 for(cont = 0;cont<DIMVET;cont++)
 {
     vetor[cont]=1;
 }

 for(cont=0;cont<NTHR;cont++)
 {
    printf("Criando a thread nro %d\n",cont);
    pthread_create(&tid[cont], NULL, funcThread, (void *) cont);
 }
 for(cont=0;cont<NTHR;cont++)
 {
   pthread_join(tid[cont], &retorno);
   somatorio = somatorio + (int)retorno;
 }
     printf("SOMATORIO = %d\n",somatorio);
 pthread_exit(NULL);
}

 

Como realizar a multiplicação vetor x matriz?

 

A dimensão do vetor deve ser igual a dimensão da matriz (quadrada)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você primeiro precisa entender como multiplicar matrizes. "Vetores" com 'n' elementos são nada menos que matrizes de 1 linha e 'n' colunas. Para que se possa multiplicar este vetor por uma matriz, a matriz deve ter 'n' linhas. Para uma matriz de 'm' colunas, o resultado da multiplicação será uma matriz de 1x'm'.

 

Pesquise a operação de multiplicação de matrizes e tente representá-la em C. Quando surgirem dúvidas relacionadas à linguagem, fique à vontade pra postar aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá, Consegui fazer um exemplo de multiplicação com matrizes, porém, como usar com multi(threads)?

 

 

#include <stdio.h>
#include <conio.h>

main()
{

//Definição de variaveis
int i, j, l, c, l1, c1, X;

//Entrada de dados
printf("\n Informe a quntidade de linhas da matriz A : ");
scanf("%d",&l);
printf("\n Informe a quantidade de colunas da matriz A : ");
scanf("%d",&c);
printf("\n Informe a quntidade de linhas da matriz B : ");
scanf("%d",&l1);
printf("\n Informe a quantidade de colunas da matriz B : ");
scanf("%d",&c1);
float matrizA[l][c],matrizB[l1][c1],matrizC[c][l1],Aux=0;
if(c==l1)
{
for(i=0; i<l; i++)
{
        for(j=0; j<c; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da Matriz A: ", i+1, 167, j+1, 167);
        scanf("%f", &matrizA[i][j]);
        }
        printf("\n");
        }
for(i=0; i<l1; i++)
{
        for(j=0; j<c1; j++)
        {
        printf("\n\n Informe o valor da %d%c Linha e da %d%c Coluna da 2%c Matriz B: ", i+1, 167, j+1, 167, 167);
        scanf("%f", &matrizB[i][j]);
        }
        printf("\n");
        }
printf("---------------------------- 1 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l; i++)
{
        for(j=0; j<c; j++)
        {
        printf("%6.f", matrizA[i][j]);
        }
        printf("\n\n");
        }
printf("---------------------------- 2 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l1; i++)
{
        for(j=0; j<c1; j++)
        {
        printf("%6.f", matrizB[i][j]);
        }
        printf("\n\n");
        }
//Processamento e saida em tela
for(i=0; i<l; i++)
{
        for(j=0; j<c1; j++)
        {
                 matrizC[i][j]=0;
                 for(X=0; X<l1; X++)
                 {
                 Aux += matrizA[i][X] * matrizB[X][j];
                 }
                 matrizC[i][j]=Aux;
                 Aux=0;
                 }
                 }
                 printf("\n\n");
printf("---------------------------- 3 - Matriz Gerada ---------------------------------\n\n");
for(i=0; i<l; i++)
{
        for(j=0; j<c1; j++)
        {
        printf("%6.f", matrizC[i][j]);
        }
        printf("\n\n");
        }
        printf("\n\n");
        }
else
{
printf("\n\n Nao ha com multiplicar as matrizes dadas ");
}
system("pause");

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.