Skip to content
Snippets Groups Projects
Commit d7a38e59 authored by omar.alkheja's avatar omar.alkheja
Browse files

EXO OK

parent 470389a4
No related branches found
No related tags found
No related merge requests found
#include <math.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main() {}
\ No newline at end of file
typedef struct matrix {
int n;
int m;
float **data;
} matrix;
matrix *matrix_create(int n, int m) {
matrix *mat = malloc(sizeof(matrix));
mat->n = n;
mat->m = m;
mat->data = malloc(n * sizeof(float *));
for (int i = 0; i < n; i++) {
mat->data[i] = malloc(m * sizeof(float));
}
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
mat->data[i][j] = sqrt(i + j);
}
}
return mat;
}
void matrix_destroy(matrix *mat) {
for (int i = 0; i < mat->n; i++) {
free(mat->data[i]);
}
free(mat->data);
free(mat);
}
void matrix_print(matrix *mat) {
for (int i = 0; i < mat->n; i++) {
for (int j = 0; j < mat->m; j++) {
printf("%f ", mat->data[i][j]);
}
printf("\n");
}
}
matrix *matrix_moyenne(matrix *mat) {
matrix *mat2 = malloc(sizeof(matrix));
mat2->n = mat->n;
mat2->m = mat->m;
mat2->data = malloc(mat->n * sizeof(float *));
for (int i = 0; i < mat->n; i++) {
mat2->data[i] = malloc(mat->m * sizeof(float));
}
for (int i = 0; i < mat->n; i++) {
for (int j = 0; j < mat->m; j++) {
if (i >= 1 && j >= 1 && i <= mat->n - 2 && j <= mat->m - 2) {
mat2->data[i][j] =
(mat->data[i][j] + mat->data[i + 1][j] + mat->data[i - 1][j] +
mat->data[i][j + 1] + mat->data[i][j - 1]) /
5;
} else {
mat2->data[i][j] = mat->data[i][j];
}
}
}
return mat2;
}
int main() {
matrix *mat = matrix_create(5, 4);
for (int i = 0; i < 10; i++) {
matrix *mat2 = matrix_moyenne(mat);
matrix_destroy(mat);
mat = mat2;
}
printf("voici une matirce moyenné d'une taille 5X4 \n");
matrix_print(mat);
matrix_destroy(mat);
return EXIT_SUCCESS;
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment