Salut à tous !
J'ai vu mardi, l'allocation dynamique multiple et depuis je patauge dans la semoule... Cependant en travaillant sur le sujet, j'ai l'impression que ça va mieux ! Par exemple dans le code suivant j'ai réussi à remplir une matrice ! Mais le programme plante... Voici la bêteEt maintenant voici ce que j'ai compris : Je crée un tableau de I tableau(x) de double contenant J double(s) ainsi pour accéder au tableau 1 de J double(s) je peux demander matrix[1] et pour accéder à la case 1 du tableau 1 je peux demander matrix[1][1].
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32 #include <stdio.h> #include <stdlib.h> #include <time.h> double** create_matrix(int I, int J){ double** matrix = calloc(sizeof(double*),I); int i;for(i=0;i<I;i++){ matrix[i] = calloc(sizeof(double),J); } return matrix; } void free_matrix(double **m, int I){ int i;for(i=0;i<I;i++){free(m[i]);} free(m); } void fill_matrix(double **m, int I, int J){ srand(time(NULL)); int i,j;for(i=0;i<I;i++){ for(j=0;j<J;j++){ m[i][j]=rand()%(I*J); } } } void print_matrix(double **m, int I, int J){ int i,j;for(i=0;i<I;i++){ for(j=0;j<J;j++){printf("%.2lf | ",m[i][j]);} printf("\n"); } }
Enfin voici jusqu'à où le programme déroule avant de planter : Il déroule jusqu'à l'affiche de ma deuxième matrice.
Voici mon main :Qu'en dites-vous ? Pouvez vous m'expliquer où sont mes erreurs que j'essaye d'apprendre ! J'espère arriver à comprendre cette nouvelle technique ce serait génial
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 int i, j, k; int dimA = 4; int dimB [] = {4,5}; int dimId = 4; double **A; double **B; double **C; double **Id; printf("Création de A et B\n"); A = create_matrix(dimA, dimA); B = create_matrix(dimB[0], dimB[1]); printf("\n"); printf("Suppression de A et B\n"); free_matrix(A, dimA); free_matrix(B, dimB[0]); printf("\n"); printf("Création de A et B\n"); A = create_matrix(dimA, dimA); B = create_matrix(dimB[0], dimB[1]); printf("\n"); printf("Remplissage de A et B\n"); fill_matrix(A, dimA, dimA); fill_matrix(B, dimB[0], dimB[1]); printf("\n"); printf("Affichage de A et B\n"); print_matrix(A, dimA, dimA); printf("\n"); print_matrix(B, dimB[0], dimB[1]); printf("\n"); printf("Création et affichage d'une matrice identité %dx%d\n", dimId, dimId);.
Partager