Fichiers fournis pour ces travaux pratiques :
matrix.h,
main_matrix.c,
Makefile,
test.c,
test_matrix.c,
utest.h.
Le but de ces travaux pratiques est de programmer en C en
implémentant minimalement une structure de données
matrix permettant de stocker des matrices de nombres
(des double). On considère le code suivant d'un
programme main_matrix.
#include <stdlib.h>
#include "matrix.h"
int main(void)
{
// We consider matrix of double's
// Create an identity matrix of size 3×3
matrix m = matrix_identity(3);
// Create a 3×3 matrix full of 1.'s
matrix n = matrix_create(3, 3, 1.);
// Put 42. in the first cell of the matrix n
*matrix_get(n, 0, 0)=42.;
// Create the matrix r, addition of matrices m and n
matrix r = matrix_add(m, n);
// Display the matrix r
matrix_print(stdout, r);
/* The result should be:
* 43.00 1.00 1.00
1.00 2.00 1.00
1.00 1.00 2.00 */
// Free the memory allocated for all three matrices
matrix_destroy(m);
matrix_destroy(n);
matrix_destroy(r);
return EXIT_SUCCESS;
}
matrix.h contenant la définition du
type matrix et la déclaration des fonctions utilisées
par le programme.
matrix.c
Makefile aussi propre que possible
permettant de compiler ces
différents fichiers et de tester le programme
main_matrix. Utiliser gdb pour déboguer
votre programme.
libmatrix.so et une bibliothèque statique
libmatrix.a contenant les fonctions de
matrix.c, et pour compiler le programme
print_matrix en utilisant l'une ou l'autre de ces
deux bibliothèques. Tester.
ldd, nm -D sur les
versions dynamique et statique de votre programme.
valgrind et efence.
utest.h pour ajouter des
tests unitaires à votre programme, en vous familiarisant au
préalable avec son usage.