Jump to content
Fórum Script Brasil
  • 0

Erro com algoritmo em C para multiplicar 2 matrizes...


Question

Olá, caros usuários, prazer! Faz pouco tempo que comecei a estudar programação em C, cheguei na parte de matrizes e me deparei com um problema num código para efetuar o produto das mesmas. Já comparei meu código com alguns outros que vi na internet, porém, não consegui achar o meu erro... Segue abaixo o meu código, caso alguém possa me ajudar, ficarei extremamente grato!

 

#include <stdio.h>
#include <stdlib.h>
#define TAM 2                                   //usei essa constante TAM para representar o tamanho das linhas e das colunas, que são iguais no meu algoritmo. 

main () {  
    
    int matA[TAM][TAM], matB[TAM][TAM], matR[TAM][TAM];     //declaração das matrizes A e B, que serão multiplicadas, e, da minha matriz R que vai receber o resultado.
    
    for (int n=1; n<3; n++) {                                         //esse for mais externo, é basicamente para efetuar a leitura das duas matrizes, A e B.
        for (int i=0; i<TAM; i++) {
            for (int j=0; j<TAM; j++){
                
                printf ("Digite o valor %ix%i da matriz %i: \n", i+1, j+1, n);
                if (n==1)                                                                                           //com essa condicional, a maquina saberá quando guardar os valores de A e quando começar a guardar os valores de B
                scanf ("%i", &matA[j]);
                else
                scanf ("%i", &matB[j]);
            }
            printf ("\n");
        }
        printf ("\n");
    }
    
    for (int n=0; n<2; n++) {                           /*esse conjunto de laços for aqui é para exibir os valores das matrizes A e B logo depois que o usuário inseri-los.
        for (int i=0; i<TAM; i++) {                             eu testei com somente essa parte, de pedir os valores das matrizes,
 
           for (int j=0; j<TAM; j++) {                         armazena-los e de logo em seguida exibi-los, e até aqui, está tudo ok. Os valores são capturados e exibidos corretamente...*/
 
               if (n==0)
                printf ("%i-", matA[j]);
                else
                printf ("%i-", matB[j]);
            }
        printf("\n");
        }
        printf("\n");
    }
    
    for (int i=0; i<TAM; i++) {                                                               //essa parte é a que faz a multiplicação das matrizes, creio que o meu erro esteja aqui [...]
        for (int j=0; j<TAM; j++) {
            for (int k=0; k<TAM; k++) {
                
                matR[j] = matR[j]+(matA[k]*matB[k][j]);
            
            }
        }
    }
    
    for (int i=0; i<TAM; i++) {                              //[...] ou aqui. Essa é para exibir a matriz com o resultado da multiplicação.
        for (int j=0; j<TAM; j++) {
            printf ("%i  ", matR[j]);
        }
        printf("\n");
    }
    
    system ("pause");
    return 0;
    
    }

    
    

Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Ao não usar o botao "code" para introduzir seu código ele perdeu algimas partes como

[i]

...já que isso é o comando para que as letras saiam em itálico(tombadas).

Por favor, volte a introduzir seu programa usando o botão code. É o o botão <> que está justo acima quando você estiver redatanto seu testo.Screenshot_2.png.0472f680afadf8a6d07d10f5efabb15e.png

Edited by vangodp
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Cloud Computing


  • Forum Statistics

    • Total Topics
      148894
    • Total Posts
      644967
×
×
  • Create New...