Skip to content
Snippets Groups Projects
Commit 33768bf3 authored by thib's avatar thib
Browse files

test

parents
Branches
No related tags found
No related merge requests found
*.0
*.x
Makefile 0 → 100644
matrix: matrix.o main.o
gcc matrix.o main.o -o matrix.x -lm -g -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak
matrix.o: matrix.c matrix.h
gcc -Wall -Wextra -c matrix.c -g -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak
main.o: main.c
gcc -Wall -Wextra -c main.c -g -Wall -Wextra -pedantic -fsanitize=address -fsanitize=leak
clean:
rm -f *.o matrix
rebuild: clean matrix
\ No newline at end of file
main.c 0 → 100644
#include "matrix.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
int main() {
matrix mat;
matrix_init(&mat, 5, 4);
matrix_destroy(&mat);
return EXIT_SUCCESS;
}
main.o 0 → 100644
File added
matrix.c 0 → 100644
#include "matrix.h"
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
// typedef struct _matrix {
// int m, n;
// int **data;
// } matrix;
//m ligne n col
error_code matrix_init(matrix *mat, int m, int n) {
mat->data = malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
mat->data[i] = malloc(n * sizeof(int));
}
mat->n = n;
mat->m = m;
return ok;
}
error_code matrix_destroy(matrix *mat) {
for (int i = 0; i < mat->m; i++) {
free(mat->data[i]);
}
free(mat->data);
return ok;
}
error_code matrix_init_from_array(matrix *mat, int m, int n, int data[]){
mat->data= malloc(m * sizeof(int *));
for (int i = 0; i < m; i++) {
mat->data[i] = malloc(n * sizeof(int));
}
int k=0;
for(int i=0;i<m;i++){
for (int j = 0; j < n; j++) {
mat->data[i][j]=data[k++];
}
}
mat->n = n;
mat->m = m;
return ok;
}
error_code matrix_clone(matrix *cloned, const matrix mat);
\ No newline at end of file
matrix.h 0 → 100644
#ifndef _MATRIX_H_
#define _MATRIX_H_
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
typedef enum _error_code {
ok,
out_of_bounds,
memory_error,
uninitialized,
} error_code;
typedef struct _matrix {
int m, n;
int **data;
} matrix;
error_code matrix_init(matrix *mat, int m, int n);
error_code matrix_destroy(matrix *mat);
error_code matrix_init_from_array(matrix *mat, int m, int n, int data[]);
error_code matrix_clone(matrix *cloned, const matrix mat);
error_code matrix_transpose(matrix *transposed, const matrix mat);
error_code matrix_print(const matrix mat);
error_code matrix_extract_submatrix(matrix *sub, const matrix mat, int m0, int m1, int n0, int n1);
bool matrix_is_equal(matrix mat1, matrix mat2);
error_code matrix_get(int *elem, const matrix mat, int ix, int iy);
error_code matrix_set(matrix mat, int ix, int iy, int elem);
error_code matrix_map_ip(matrix mat, void (*foo)(int *));
error_code matrix_map(matrix *mapped, const matrix mat, void (*foo)(int *));
#endif
matrix.o 0 → 100644
File added
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment