#include #include void print_matrise(int m, int** matrise); int** alloker_matrise(int m); void matrisemultiplikasjon(int m, int** matrise_1, int** matrise_2, int** resultat); void matrisemultiplikasjon(int m, int** matrise_1, int** matrise_2, int** resultat){ for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ resultat[i][j] = 0; for(int k = 0; k < m; k++){ resultat[i][j] += matrise_1[i][k]*matrise_2[k][j]; } } } } void print_matrise(int m, int** matrise){ for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ printf("%d ", matrise[i][j]); } printf("\n"); } printf("\n"); } int** alloker_matrise(int m){ int* matrise_data = malloc(sizeof(int)*m*m); int** matrise = malloc(sizeof(int*)*m); for(int i = 0; i < m; i++){ matrise[i] = &matrise_data[i*m]; } return matrise; } int main(int argc, char** argv) { int m = 4; int** matrise_1 = alloker_matrise(m); int** matrise_2 = alloker_matrise(m); int** resultat = alloker_matrise(m); for(int i = 0; i < m; i++){ for(int j = 0; j < m; j++){ matrise_1[i][j] = i; matrise_2[i][j] = j; } } print_matrise(m, matrise_1); print_matrise(m, matrise_2); print_matrise(m, resultat); matrisemultiplikasjon(m, matrise_1, matrise_2, resultat); print_matrise(m, resultat); free(matrise_1[0]); free(matrise_1); free(matrise_2[0]); free(matrise_2); free(resultat[0]); free(resultat); return 0; }