Programação Orientada à Procedimentos II Programação Orientada à Procedimentos I Processamento Paralelo Lógica de Programação Introdução à Computação Informática Básica

 

 

Informática Básica
Introdução à Computação
Lógica de Programação
Programação Orientada à Procedimentos I
Programação Orientada à Procedimentos II

Processamento Paralelo


Uma Possível Solução ...




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);
}