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

Add finished ex1

parent 9cf596f4
No related branches found
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.
Finish editing this message first!
Please register or to comment