Buscar

Operacoes Matriz Pronto

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

#include <stdio.h>
#include <stdlib.h>
#define N 3
typedef int MATRIZ[N][N];
void Entrada_de_Dados_Matriz(MATRIZ X) //essa eh a funcao que permite inserir dados da matriz
 {
 int linha, coluna;
 for (linha=0;linha<N;linha++) //aqui eu percorro a linha
 for(coluna=0;coluna<N;coluna++) //e aqui a coluna, resultando na coordenada linhaxcoluna da matriz para insercao de elemento
 {
 printf("Matriz X [%d][%d] : ",linha,coluna); //insiro o elemento conforme coordenada
 scanf("%d",&X[linha][coluna]);
 }
 }
void Demonstrar_Matriz (MATRIZ X){ //eh a funcao que chama os prints das matrizes, essa funcao fica no topo depois da entrada de dados
 int linha, coluna;
 printf("Resultado:\n");
 for(linha=0;linha<N;linha++){
 printf("\n");
 for(coluna=0;coluna<N;coluna++){
 printf("%5d",X[linha][coluna]); //insire 5 espacos para que haja boa formatacao do print da matriz
 }
 }
}
 
 void Produto_Matrizes(MATRIZ X, MATRIZ Y, MATRIZ Z) //funcao que resulta numa matriz produtos das duas primeiras
 {int linha, coluna, inner;
	 printf("Resultado do Produto das Matrizes \n\n");
 for (linha = 0; linha<N; linha++) { //percorro a linha
 for ( coluna = 0; coluna<N; coluna++) { //limpo o espaco resultado da matriz produto
			 Z[linha][coluna] = 0;
 for ( inner = 0; inner<N; inner++) { // uso multiplicacao de matrizes, resultante eh igual a o termo(x,y)*termo(y,c)
 Z[linha][coluna] += X[linha][inner] * Y[inner][coluna];
 }
 }
	 }
 Demonstrar_Matriz(Z); // demostro a resultante
 	 }
 void Soma_Matrizes(MATRIZ X, MATRIZ Y, MATRIZ Z)// soma duas matrizes, resultando numa terceira
 { int linha, coluna;
	 printf("Resultado da Soma das Matrizes \n\n");
 for (linha=0;linha<N;linha++) 
 { //percorro linha e coluna
 for(coluna=0;coluna<N;coluna++) 
 Z[linha][coluna]=(X[linha][coluna]+Y[linha][coluna]); //o termo Z(x,y)=X(x,y)+Y(x,y)
 } 
 Demonstrar_Matriz(Z); //demostro o resultado
 }
 
 void Subtracao_Matrizes(MATRIZ X, MATRIZ Y, MATRIZ Z)
 { int linha, coluna;
	 printf("Resultado da Subtracao das Matrizes \n\n");
 for (linha=0;linha<N;linha++) 
 { //percorro linha e coluna
 for(coluna=0;coluna<N;coluna++) 
 Z[linha][coluna]=(X[linha][coluna]-Y[linha][coluna]); //o termo Z(x,y)=X(x,y)+Y(x,y)
 
 }
 Demonstrar_Matriz(Z); //demostro o resultado
 }
 
void Consultar_Matriz(MATRIZ X){ // consulto o valor correspondente numa dada coordenada da matriz chamada
 int linha, coluna;
 printf("Digite a linha do termo a consultar: \n "); //pede a linha que o termo pertence
 scanf("%d",&linha);
 printf("Digite a coluna do termo a consultar: \n "); //pede a coluna que o termo pertence
 scanf("%d",&coluna);
 printf("O termo consultado eh: X[%d][%d]=%d ",linha,coluna,X[linha][coluna]); //gera o valor que esta armazenado na coordenada dada 
 }
 
 void Inverter_Matriz(MATRIZ X, MATRIZ Z){
 int linha, coluna;
 for(linha=0;linha<N;linha++){ //percorre linha
 for(coluna=0;coluna<N;coluna++){ //percorre coluna
 Z[linha][coluna]=X[coluna][linha]; //a matriz resultante Z(x,y) tem como valores os contidos na coordenada X(y,x)
 }
 }
 Demonstrar_Matriz(Z);
} 
 
void Produto_Escalar(MATRIZ X, MATRIZ Y, MATRIZ Z, MATRIZ K){
 int linha, coluna, i;
 
 printf("Insira o escalar a multiplicar as matrizes:\n");
 scanf("%d",&i);
 
 for(linha=0;linha<N;linha++){
 for(coluna=0;coluna<N;coluna++){ // percorro linha e coluna
 Z[linha][coluna]=i*X[linha][coluna]; // a matriz resultante eh o produto do inteiro * a coordenada do valor referenciado
 K[linha][coluna]=i*Z[linha][coluna];
 }
 }
 Demonstrar_Matriz(Z);
 printf("/n");
 Demonstrar_Matriz(K); // demostro as matrizes resultado
}
 
 int main() // menu
 { MATRIZ A, B, C, D;
 int i;
 printf("Entre com os valores da primeira matriz\n");
	 Entrada_de_Dados_Matriz(A);
 printf("\nEntre com os valores da segunda matriz\n");
	 Entrada_de_Dados_Matriz(B);
 printf("\tMENU DE OPERACOES\n");
 printf("\nDigite:\n1 Produto de Matrizes\n2 Soma de Matrizes\n3 Subtracao entre Matrizes\n4 Inverter Matriz\n5 Consultar Matriz A\n6 Consultar Matriz B \n7 Multiplicar por escalar");
 scanf("%d",&i);
 switch(i){
 case 1:
	 Produto_Matrizes(A,B,C);
 break;
 case 2:
	 Soma_Matrizes(A,B,C);
 break;
 case 3:
	 Subtracao_Matrizes(A,B,C);
 break;
 case 4:
 printf("Matriz original A. ");
 Demonstrar_Matriz(A);
 printf("/n");
 printf("\nMatriz invertida A. ");
 Inverter_Matriz(A,C);
 printf("/n");
 printf("\nMatriz original B. ");
 Demonstrar_Matriz(B);
 printf("/n");
 printf("\nMatriz invertida B. ");
 Inverter_Matriz(B,C);
 printf("/n");
 break;
 case 5:
 Consultar_Matriz(A); // consulto a posicao e o valor de um elemento na matriz dada
 break;
 case 6:
 Consultar_Matriz(B);
 break;
 case 7:
 Produto_Escalar(A,B,C,D); 
 break;
 default:
 printf("\nOpcao invalida");
 return;
	 }
		printf("\nDeseja sair do operador de matrizes?\nDigite 1 para continuar\n");
		scanf("%d",&i);
		if(i==1){
			main();
		} else{
		return 0;
	}
}

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais