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");}}
Pergunta
lucassilveira134134
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.