All pastes #418903 Raw Edit

PORRA

public c v1 · immutable
#418903 ·published 2007-03-31 22:17 UTC
rendered paste body
#include "stdio.h"#include "stdlib.h"#include "conio.h"float **alocaomatriz(int m, int n)/* Funcao Especial para alocação do sistema *//* Variaveis : pointtemp -> Ponteiro temporário*//* index, variável auxiliar para contagem*//* m - linhas , n - colunas */{   int index;   float **pointtemp;   if ( (m<1) || (n<0))   {     printf("Valores de M x N invalidos");          return(NULL);   }   /* Alocação das linhas */   pointtemp = (float **) calloc(m , sizeof (float *));   if ( pointtemp == NULL )   {     printf("**Erro , memoria Insuficiente.**");     return (NULL);   }   /* Alocação das colunas*/   for (index = 0 ; index < n ; index++)   {     pointtemp[index] = (float *) calloc(n , sizeof(float *));     if ( pointtemp[index] == NULL )     {       printf("**Erro , memoria Insuficiente.**");       return (NULL);      }   }       return(pointtemp);}float **leitormatriz(int m, int n)/* Programa de leitura da matrix*//* Variavies: m - linhas , n - colunas *//* index1, index2, variaveis auxiliare de contagem*//* sistema => ponteiro de ponteiros, matriz*/{ int index1, index2; float **sistema; sistema = alocaomatriz(m,n); for (index1 = 0 ; index1 < m ; index1++)     {   for ( index2 = 0 ; index2 < n ; index2++)       {       printf("\nDigite X (%d) (%d): ", index1 + 1, index2 + 1);        scanf("%f",&sistema[index1][index2]);       }   }         return (sistema); }float **liberarmatriz(float **matriz , int m, int n){ int index; if ( (m < 1) || (n < 0)) { printf("Valores de M x N invalidos");     return(matriz);     }      for (index = 0 ; index < m ; index++) { free(matriz[index]);      }   free(matriz);       return(NULL);}void impressaomatriz(float **sistema ,int m,int n)/*Funcao de impressao da matriz*/{ int index1, index2;    for (index1 = 0 ; index1 < m ; index1++)  {     for (index2=0 ; index2< n ; index2++)      {      printf(" %f*X(%d)",sistema[index1][index2], index2+1);      if (index2 < n-2)      {      printf(" + ");      }      else if (index2 == n-2)       {      printf(" = ");      }     }//quebrea de linha        printf("\n");           }   }void arrendondamento(float **sistema, int m , int n){ int index1 , index2; for (index1 = 0;  index1 < m ; index1++) {   for (index2 = 0; index2 < n;  index2++)   {    if (sistema[index1][index2] < 0.0001)    {      sistema[index1][index2] = 0;    }       }       } }int continuar(){ int a; a=0; while ((a!= 1) || (a!= 2)) { printf("Deseja continuar? (1-Sim 2-Nao)"); scanf("%d",&a); if ( a == 1)  {  return (0);  }        if ( a == 2)  {  return (1);  }  }}void trocadelinha(float **sistema , int l1, int l2,int n)//m - > números de linhas//n - > números de colunas//sistema -> matriz do sistema//vetorcopia -> vetor temporário//l1 e l2 linhas a serem permutadas{  int index;  float vetorcopia;  for (index=0;index < n; index++)  {   vetorcopia = sistema[l1][index];   sistema[l1][index] = sistema[l2][index];   sistema[l2][index] = vetorcopia;     }  }void metgaus(float **sistema, int m, int n){  float k;  int linha;  int coluna;  int index;     for (linha = 1; linha < m-1; linha++ )     {      for (coluna = 0 ; coluna < linha + 1 ; coluna++)     {      k = - sistema[linha][coluna]/sistema[coluna][coluna];      for (index = 0 ; index < linha + 1 ; index++)      {      sistema[linha][index] = sistema[linha][index] - k*sistema[index][coluna];           }         }   arrendondamento(sistema,m,n);   impressaomatriz(sistema,m,n);      } }int main(){    /* Sistema = matriz dos sistema n x m*/    /* a -> m, b-> n */        float **sistema ;    int a,b;    int baka;    printf("Digite o tamanho do seu sistema: Linhas x Colunas \n");    scanf("%d",&a);    scanf("%d",&b);    sistema = leitormatriz(a,b);    impressaomatriz(sistema,a,b);    metgaus(sistema,a,b);    printf("\n");    impressaomatriz(sistema,a,b);    liberarmatriz(sistema,a,b);    getch();    return(0);  }