Buscar

Calculadora de matrizes

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

#include <stdio.h>
#include <locale.h>
#include <stdlib.h>
void cal_m (void);
int fatorial(int);
int main()
{
	setlocale(LC_ALL,"portuguese");
	int linha,coluna,linha1,coluna1,linha2=0,coluna2=0,op,i=0,j=0,num,x=0,aux=0,mul=1,soma1=0,determinante=0,continua;
	int mat[80][80],mat2[80][80],mat_resul[80][80];
	while(1)
	{
		cal_m();
		printf("\n\n\nEscolha uma operação:\n");
		scanf("%d",&op);
		switch(op)
		{
		case 1:
			printf("\n\nDigite a ordem da Matrizes 01/02\n");
			printf("\nLinhas:\n");
			scanf("%d",&linha);
			printf("\nColunas:\n");
			scanf("%d",&coluna);
			
			printf("\nDigite os termos da Matriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			printf("\n\nDigite os termos da Matriz 02:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat2[i][j]);
				}
			}
			printf("\n\nMatriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %6d",mat[i][j]);
				}
				printf("\n");
			}
			printf("\n\nMatriz 02:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %6d",mat2[i][j]);
				}
				printf("\n");
			}
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					mat_resul[i][j]=mat[i][j]+mat2[i][j];
				}
			}
			printf("\nMatriz Resultante:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %6d",mat_resul[i][j]);
				}
				printf("\n");
			}
			break;
		case 2:
			printf("\n\nDigite a ordem da Matrizes 01 e 02\n");
			printf("\nLinhas:\n");
			scanf("%d",&linha);
			printf("\nColunas:\n");
			scanf("%d",&coluna);
			
			printf("\nDigite os termos da Matriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			printf("\n\nDigite os termos da Matriz 02:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat2[i][j]);
				}
			}
			printf("\n\nMatriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %4d",mat[i][j]);
				}
				printf("\n");
			}
			printf("\n\nMatriz 02:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %4d",mat2[i][j]);
				}
				printf("\n");
			}
			linha2=linha;
			coluna2=coluna;
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					mat_resul[i][j]=mat[i][j]-mat2[i][j];
				}
			}
			printf("\nMatriz Resultante:\n");
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					printf(" %4d",mat_resul[i][j]);
				}
				printf("\n");
			}
			break;
		case 3:
			printf("\n\nDigite a ordem da Matrizes 01:\n");
			printf("\nLinhas:\n");
			scanf("%d",&linha);
			printf("\nColunas:\n");
			scanf("%d",&coluna);
			printf("\n\nDigite uma constante:\n");
			scanf("%d",&num);
			
			printf("\nDigite os termos da Matriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			printf("\n\nMatriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %5d",mat[i][j]);
				}
				printf("\n");
			}
			
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					mat_resul[i][j]=num*mat[i][j];
				}
			}
			linha2=linha;
			coluna2=coluna;
			printf("\nMatriz Resultante:\n");
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					printf(" %5d",mat_resul[i][j]);
				}
				printf("\n");
			}
			break;
		case 4:
			aux=1;
			printf("\n\nDigite a ordem da Matrizes 01 e 02:\n");
			printf("\nLinhas 01:\n");
			scanf("%d",&linha);
			printf("\nColunas 01:\n");
			scanf("%d",&coluna);
			printf("\nLinhas 02:\n");
			scanf("%d",&linha1);
			printf("\nColunas 02:\n");
			scanf("%d",&coluna1);
			
			if(coluna!=linha1)
			{
				printf("\n\nNão é possivel execulta a operação coluna01 diferente de linha02\n");
				break;
			}
			printf("\n\n Implemente a Matriz 01:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			printf("\n\n Implemente a Matriz 02:\n");
			for(i=0;i<linha1;i++)
			{
				for(j=0;j<coluna1;j++)
				{
					scanf("%d",&mat2[i][j]);
				}
			}
			
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna1;j++)
				{
					mat_resul[i][j]=0;
					for(x=0;x<coluna;x++)
					{
						aux=aux+(mat[j][x]*mat2[x][j]);
					}
					mat_resul[i][j]=aux;
					aux=0;
				}
			}
			printf("\n\nMatriz 01\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %6d",mat[i][j]);
				}
				printf("\n");
			}
			printf("\n\nMatriz 02\n");
			for(i=0;i<linha1;i++)
			{
				for(j=0;j<coluna1;j++)
				{
					printf(" %6d",mat_resul[i][j]);
				}
				printf("\n");
			}
			printf("\n\nMatriz resultante\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna1;j++)
				{
					printf(" %6d",mat_resul[i][j]);
				}
				printf("\n");
			}
			break;
		case 5:
			printf("\n\nDigite a ordem da Matrizes 01\n");
			printf("\nLinhas:\n");
			scanf("%d",&linha);
			printf("\nColunas:\n");
			scanf("%d",&coluna);
			
			printf("\nDigite os termos da Matriz");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf(" %6d",&mat[i][j]);
				}
			}
			printf("\n\nMatriz 01\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					printf(" %6d",mat[i][j]);
				}
				printf("\n");
			}
			linha2=linha;
			coluna2=coluna;
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					mat_resul[i][j]=fatorial(mat[i][j]);
				}
			}
			
			printf("\n\nMatriz Resultante\n");
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					printf(" %6d",mat_resul[i][j]);
				}
				printf("\n");
			}
			break;
		case 6:
			aux=0;
			printf("\n\nDigite a ordem da Matrizes 01\n");
			printf("\nLinhas/Colunas:\n");
			scanf("%d",&linha);
			aux=linha;
			printf("\nDigite os termos da Matriz:\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<linha;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			printf("\nMatriz 01\n");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<linha;j++)
				{
					printf(" %6d",mat[i][j]);
				}
				printf("\n");
			}
			
			for(x=0;x<linha;x++)
			{
				for(i=0;i<linha;i++)
				{
					j=(i + x)%aux;
					mul*=mat[i][j];
				}
				
				soma1+=mul;
			}
			determinante=soma1;
			soma1=0;
			mul=1;
			linha=linha-1;
			
			for(x=linha;x>=0;x++)
			{
				for(i=linha;i>=0;i++)
				{
					j=(x + i)%aux;
					mul*=mat[i][j];
				}
				
				soma1-=mul;
			}
			
			determinante+=soma1;
			printf("\n\nA determinante é: %d\n\n",determinante);
			break;
		case 7:
			printf("\n\nDigite a ordem da Matrizes 01:\n");
			printf("\nLinhas 01:\n");
			scanf("%d",&linha);
			printf("\nColunas 01:\n");
			scanf("%d",&coluna);
			printf("\nDigite os termos da Matriz");
			for(i=0;i<linha;i++)
			{
				for(j=0;j<coluna;j++)
				{
					scanf("%d",&mat[i][j]);
				}
			}
			
			linha2=coluna;
			coluna2=linha;
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					mat_resul[i][j]=mat[j][i];
				}
				
			}
			printf("\n\nMatriz Tranposta\n");
			for(i=0;i<linha2;i++)
			{
				for(j=0;j<coluna2;j++)
				{
					printf("%d",mat_resul[i][j]);
				}
				printf("\n");
			}
		
		default:
			printf("\n\n\n Operação invalida!!!\n\n\n");
			break;
		}
		printf("\n\n\n\nDeseja continuar usando a Calculadora? (0)sim (1)não\n\n");
		scanf("%d",&continua);
		if(continua==1)
		{
			break;
		}else
		{
			system("cls");
		}
		
	}
	return 0;
}
void cal_m (void)
{
	printf("-------------------------------------------------------------------");
	printf("\n\n");
	printf(" CALCULADORA DE MATTRIZES");
	printf("\n\n");
	printf("-------------------------------------------------------------------");
printf("\n");
	printf("(1)soma\n");
	printf("(2)Subtração\n");
	printf("(3) multiplicação por uma constante\n(4) Multiplicação matricial\n(5) Fatorial de todos os elementos\n");
	printf("(6)Calcular a determinante da matriz (7) Transpor a Matriz");
	
}
int fatorial(int fat)
{
	int resp=1,i1;
	for(i1=1;i1<=fat;i1++)
	{
		resp*=i1;
	}	
	return(resp);
}

Teste o Premium para desbloquear

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

Outros materiais