Ir para conteúdo
Fórum Script Brasil
  • 0

Função multiplicação matriz em C


lucassilveira134134

Pergunta

Fala Galera beleza? 

Estou com um problema no meu código, não consigo realizar a função multiplicação. 

Segue abaixo o codigo:

 

#include <stdio.h>


void soma_matrizes (int a[10][10], int b [10][10], int resposta[10][10]){
    int i, j;
    int valor;
    
    for (i=0; i<10; i++){
        for (j=0;j<10;j++){
            valor= a[j] + b[j];
            resposta[j]=valor;
        }
    }
}

void diferenca_matrizes(int a[10][10], int b [10][10], int resposta[10][10]){
    int i, j;
    int valor;
    
    for (i=0; i<10; i++){
        for (j=0;j<10;j++){
            valor= a[j] - b[j];
            resposta[j]=valor;
        }
    }
}

void multiplicacao_matrizes (int a[10][10], int b [10][10],int resposta[10][10],int linhasA, int colunasA, int colunasB){
    int i, j,k,m,q,p;
    float sum;
    
    for (i = 0; i < linhasA; i++) {
       for (j = 0; j < colunasB; j++) {
                for (k = 0; k < colunasA; k++) {
                        sum = sum + a[k] * b[k][j];
                  }
                   resposta[j] = sum;
                  sum = 0;
          }
}
}
int main(){
    
    int a[10][10], b[10][10], resultado[10][10];
    float sum;
    int i, valor, k, j, linhasA, colunasA, linhasB,colunasB,operacao;
    
    printf("Digite o numero de linhas da Matriz A:");        //DEFINIR A MATRIZ A
    scanf("%d",&linhasA);
    printf("Digite o numero de colunas da Matriz A:");
    scanf("%d",&colunasA);
    
    printf("\n");
    
    printf("Digite o numero de linhas da Matriz B:");        //DEFINIR A MATRIZ B
    scanf("%d",&linhasB);
    printf("Digite o numero de colunas da Matriz B:");
    scanf("%d",&colunasB);
    
    printf("\n***MATRIZ A***\n");            //VALORES DA MATRIZ A
      for(i=0;i<linhasA;i++)
    {
        for(j=0;j<colunasA;j++)
        {
            printf("Digite A[%d][%d]:",i,j);
            scanf("%d",&a[j]);
        }
    }
    printf("\n***MATRIZ B***\n");            //VALORES DA MATRIZ B
      for(i=0;i<linhasB;i++)
    {
        for(j=0;j<colunasB;j++)
        {
            printf("Digite B[%d][%d]:",i,j);
            scanf("%d",&b[j]);
        }
    }
    printf("\nVALOR MATRIZ A\n");        //MATRIZ A
    for(i=0;i<linhasA;i++)
    {
        for(j=0;j<colunasA;j++)
        {
            printf("%d\t",a[j]);
        }
        printf("\n");
    }
     printf("\nVALOR MATRIZ B\n");        //MATRIZ B
    for(i=0;i<linhasB;i++)
    {
        for(j=0;j<colunasB;j++)
        {
            printf("%d\t",b[j]);
        }
        printf("\n");
    }
    printf("\nEscolha uma operacao: \n1-Soma \n2-Diferenca \n3-Multiplicacao\n");
    printf("Escolha:");
    scanf("%d",&operacao);
    
    
    switch(operacao){
        case 1: if(linhasA!=linhasB && colunasA!=colunasB)
                    printf("\nNao é possivel calcular a soma");
                else{ soma_matrizes(a,b,resultado);
                      printf("\nValor da SOMA\n");
                      for (i=0; i<linhasA; i++){ 
                        for (j=0;j<colunasA;j++){
                            valor=resultado[j];
                        printf("%d \t", valor);
                }
                printf("\n");}}
                break;
        case 2:  if(linhasA!=linhasB && colunasA!=colunasB)
                    printf("\nNao é possivel calcular a diferenca");
                else{ diferenca_matrizes(a,b,resultado);
                printf("\nValor da DIFERENCA\n");
                      for (i=0; i<linhasA; i++){ 
                        for (j=0;j<colunasA;j++){
                            valor=resultado[j];
                        printf("%d \t", valor);
                }
                printf("\n");}}
                      
                break;
        case 3: if(linhasA!=colunasB)
                    printf("\nNao é possivel calcular a multiplicacao");
                else{ multiplicacao_matrizes(a,b,resultado,linhasA,colunasB,k);
                    printf("\nValor da MULTIPLICACAO\n");
                      for (i = 0; i < linhasA; i++) {  // nessa parte esta o problema provavelmente
            for (j = 0; j < colunasB; j++){                // ou é na função
                printf("%f\t",sum);
            }
            printf("\n");}}
                break;
        default: printf("Operacao invalida");}}  
        
        
        
        

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...