Bonjour,
J'essaye de revenir sur TIGCC, j'ai un peu du mal, je ne vois pas pourquoi mon premier printf qui fait "dim(Id) :" ne se place pas en haut à gauche lorsque j'appelle la fonction creer_mat_Id et se place un peu n'importe où. De plus en plus bas à chaque lancement de programme...
Voici mon main.c et mon matrice.c (mon matrice.h contient juste les prototypes de fonctions).
main.c#define USE_TI89
#define MIN_AMS 100
#include <stdio.h>
#include <stdlib.h>
#include <tigcclib.h>
#include "matrice.h"
int _main(void)
{
int **mat, **mat_Id;
int L,c,dim; /* L : nb lignes, c : nb colonnes */
int i;
// splash(); // Optionnel
FontSetSys (F_4x6);
ClrScr();
mat_Id=creer_mat_Id(&dim);
printf("\nId =\n");
afficher_mat(mat_Id,&dim,&dim);
mat=creer_mat(&L,&c);
printf("\nM =\n");
afficher_mat(mat,&L,&c);
ST_helpMsg("Appuyer sur une touche pour avoir la transposee...");
ngetchx();
transposer_mat(mat,&L,&c);
/* Désalloue la mémoire */
for (i=0 ; i<L ; i++)
free(mat[i]);
free(mat);
ST_helpMsg("(c) Fl0d 2007.");
//if (ngetchx()==KEY_ENTER)
ngetchx();
return 0;
}
matrice.c#include <tigcclib.h>
#include <stdio.h>
#include <stdlib.h>
#include "matrice.h"
int** creer_mat(int* L, int* c)
{
int** mat;
int i,j,n;
printf("nb lignes : ");
scanf("%d",L);
printf("\nnb colonnes : ");
scanf("%d",c);
/* Alloue la mémoire pour le tableau de tableau*/
mat = (int**) malloc((*L) * sizeof(int*));
/* Alloue la mémoire pour chaque tableau (chaque ligne)*/
for (i=0 ; i<*L ; i++)
mat[i] = (int*)malloc(*c*sizeof(int));
for (i=0 ; i<*L ; i++)
{
for (j=0 ; j<*c ; j++)
{
printf("\nvaleur de M[%d,%d] : ",i+1,j+1);
scanf("%d",&n);
mat[i][j]=n;
}
}
return mat;
}
int** creer_mat_Id(int* dim)
{
int** mat_Id;
int i,j;
printf("dim(Id) : ");
scanf("%d", dim);
mat_Id = (int**) malloc((*dim) * sizeof(int*));
for (i=0 ; i<*dim ; i++)
mat_Id[i] = (int*)malloc(*dim*sizeof(int));
for (i=0 ; i<*dim ; i++)
{
for (j=0 ; j<*dim ; j++)
{
if (i!=j)
mat_Id[i][j]=0;
else
mat_Id[i][j]=1;
}
}
return mat_Id;
}
void afficher_mat(int **mat,int *L, int *c)
{
int i,j;
for (i=0 ; i<*L ; i++)
{
printf("[");
for (j=0 ; j<*c ; j++)
{
printf(" %d ",mat[i][j]);
}
printf("]\n");
}
}
void transposer_mat(int **mat,int *L, int *c)
{
int i,j;
printf("T_M =\n");
for (i=0 ; i<*c ; i++)
{
printf("[");
for (j=0 ; j<*L ; j++)
{
printf(" %d ",mat[j][i]);
}
printf("]\n");
}
}
Je pense que j'utilise également des librairies pas judicieusement aussi
Merci de votre aide.