4) Calcular a determinante de uma matriz 3x3 através do método de Sarrus, usar função.
#include "stdio.h"
#include "conio.h"
#include "stdlib.h"
// prototipando funcao
void preencher(int mat[3][5]);
void copiar_colunas(int mat [3][5]);
void impressao(int mat[3][5]);
long int calc_det(int mat[3][5], int, int, char);
//********************* funcao main **********************
void main()
{
int mat[3][5];
long int det=0, aux;
int ci, cf;
char sinal;
randomize();
preencher(mat);
copiar_colunas(mat);
impressao(mat);
//calculando o lado esquerdo
ci=0; cf=2; sinal='+';
det=calc_det(mat,ci,cf,sinal);
//calculando o lado direito
ci=4; cf=0; sinal='-';
aux=calc_det(mat,ci,cf,sinal);
//calculado determinante
det=det-aux;
printf("\n\ndeterminante .... %ld",det);
getch();
}
//******************* funcao preencher ********************
void preencher(int mat[3][5])
{
for(int lin=0;lin<3;lin++)
{
for(int col=0;col<3;col++)
{
mat[lin][col]=rand()%11;
}
}
}
//******************* funcao copiar_colunas ********************
void copiar_colunas(int mat [3][5])
{
//copiando colunas 0 e 1
for(int col=0;col<2;col++)
{
for(int lin=0;lin<3;lin++)
{
mat[lin][col+3]=mat[lin][col];
}
}
}
//******************* funcao impressao ********************
void impressao(int mat[3][5])
{
clrscr();
printf("\n");
for(int i=0;i<3;i++)
{
for(int j=0;j<5;j++)
{
printf("\t %d ",mat[i][j]);
}
printf("\n");
}
}
//******************* funcao calc_det ********************
long int calc_det(int mat[3][5], int ci, int cf, char sinal)
{
long int aux=1, det=0;
int i,j;
do
{
j=ci;
for(i=0;i<3;i++)
{
aux=aux*mat[i][j];
if(sinal=='+')
j++;
if(sinal=='-')
j--;
}
det=det+aux;
aux=1;
if(sinal=='+')
ci++;
if(sinal=='-')
ci--;
}
while(ci!=(cf+1));
return(det);
}
|