Skip to content
Snippets Groups Projects
Commit a5cd2dd1 authored by dario.genga's avatar dario.genga
Browse files

Add finished ex1

parent 9cf596f4
Branches
No related tags found
No related merge requests found
......@@ -7,7 +7,69 @@
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include <math.h>
double **alloc_matrix(int nb_row, int nb_col) {
double **matrix = malloc(sizeof(double) * nb_row);
for (int i = 0; i < nb_row; i++) {
matrix[i] = malloc(sizeof(double) * nb_col);
}
return matrix;
}
double **create_matrix(int nb_row, int nb_col) {
double **matrix = alloc_matrix(nb_row, nb_col);
for (int row = 0; row < nb_row; row++) {
for (int col = 0; col < nb_col; col++) {
matrix[row][col] = sqrt(row + col);
}
}
return matrix;
}
double **average_matrix(double **matrix, int nb_row, int nb_col) {
double **average = alloc_matrix(nb_row, nb_col);
for (int row = 0; row < nb_row; row++) {
for (int col = 0; col < nb_col; col++) {
double ave = 0;
if (row >= 1 && row <= nb_row -2 && col >= 1 && col <= nb_col - 2) {
ave = (1.0 / 5.0) * (matrix[row][col] + matrix[row+1][col] + matrix[row-1][col] + matrix[row][col+1] + matrix[row][col-1]);
} else {
ave = matrix[row][col];
}
average[row][col] = ave;
}
}
return average;
}
void destroy(double **matrix, int nb_row) {
for (int row = 0; row < nb_row; row++) {
free(matrix[row]);
}
free(matrix);
}
void print_matrix(double **matrix, int nb_row, int nb_col) {
for (int row = 0; row < nb_row; row++) {
for (int col = 0; col < nb_col; col++) {
printf("%f ", matrix[row][col]);
}
printf("\n");
}
}
int main() {
int row = 5;
int col = 4;
double **matrix = create_matrix(row, col);
double **average = average_matrix(matrix, row, col);
print_matrix(average, row, col);
destroy(matrix, row);
destroy(average, row);
return EXIT_SUCCESS;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment