Vous êtes sur la page 1sur 2

#include "matrice.

h"

int val_abs(int n)
{
if(n<0) {return -n;}
else {return n;}
}

//definition de la matrice
int **NewMat(int nlignes,int ncolonnes) {
// The AranoR Tuch ////////////
int **mat;
mat=(int**)malloc(nlignes*sizeof(int*));

for (int i=0;i<nlignes;i++) {


mat[i]=(int*)malloc(ncolonnes*sizeof(int));
}
return mat;

//Fonction d'affichage d'une (partie d'une) matrice


void AffMat(int **m,int ligne, int colonne) {

for (int i=0;i<ligne;i++) {


for(int j=0;j<colonne;j++) {
printf("%3d\t",m[i][j]);
}
putchar('\n');
}putchar('\n');

//renvoie le coefficient dont la valeur abslue est la plus grande


int GetPivot(int **m,int k, int nb_ligne) //k est le numéro de colonne
{
int big=0;
int ligne_pivot=0;
for(int i=k;i<nb_ligne;i++) { //on cherche le pivot à partir de
la ligne k
if(val_abs(m[i][k])>big || m[i][k]<-big) {
big=val_abs(m[i][k]);
ligne_pivot=i;
}
}
return ligne_pivot;

//affiche le systeme defini par la matrice sous forme algebrique


void AffSys(int **m,int ligne, int colonne)
{
printf(" /\n");

for (int i=0;i<ligne;i++) {

printf("| ");
for(int j=0;j<colonne;j++) {
if(j!=colonne-1) {
if(m[i][j]>=0 && j) {printf(" + ");}
printf("%3d*X%d",m[i][j],j);
}
else {printf("=%3d (L%d)",m[i][j],i);}
}
putchar('\n');
}

printf(" \\ \n");
}

//predicat disant si deux lignes sont liees


bool Lignes_Liees(int **m,int l1,int l2,int col)
{
bool res=false;
double x=(double)m[l1][0]/(double)m[l2][0];
printf("coef : %f",x);
for(int i=1;i<col;i++) { //pour chaque coefficient, verifie le
coef
if((double)m[l1][i]/(double)m[l2][i] != x) {res=false;}
}
return res;
}
//predicat : la matrice contient elle des lignes combinaisons
linéaires d'autres
bool Famille_Liee(int **m,int ligne,int colonne)
{
bool res=false;

for (int i=0;i<ligne;i++) {//for each line, compare aux autres


//et CL d'autres ???
for(int j=i+1;j<ligne;j++) {//parcours des autres lignes
if (Lignes_Liees(m,i,j,colonne)) {res=true;}
}

return res;
}

Vous aimerez peut-être aussi