Baixe o app para aproveitar ainda mais
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; } }
Compartilhar