bonsoir, je suis sur un petit programme de maths qui doit me faire des calculs de matrice. mon programme avançais bien (j'utilisais jusqu'à présent des int dans mes matrice), mais je ne comprend pas pourquoi mon programme ne marche pas lorsque je passe en double

voila mon code pour les matrice "int" :
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
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
 
typedef struct Matrice Matrice;
struct Matrice
{
    int **adresse;
    int lin;
    int col;
};
 
 
int main()
{
    Matrice Mresultat = {NULL,2,2};
    int lin = 2;
    int col = 2;
//matrice 2 2
 
    int i;
    Mresultat.adresse = malloc(lin * sizeof(*(Mresultat.adresse)));//reserve espace pour pointeur ligne matrice
    // creation d'un tableau de "col" cases à chaque ligne de la matrice
    for(i = 0; i < lin; i++)
    {
        (Mresultat.adresse)[i] = malloc(col * sizeof(int));
    }
 
// afficher la matrice
    int j;
    for (i = 0; i < Mresultat.lin; i++)
    {
        for (j = 0; j < Mresultat.col; j++)
        {
            (Mresultat.adresse)[i][j] = 7;
            printf("%d\t", (Mresultat.adresse)[i][j]);
        }
    printf("\n");
    }
    printf("\n");
 
    return 0;
}
je vois bien a l'ecran : 7 7
7 7

et le presque le meme pour des "double" :

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
37
38
39
40
41
42
#include <stdio.h>
#include <stdlib.h>
 
typedef struct Matrice Matrice;
struct Matrice
{
    int **adresse;
    int lin;
    int col;
};
 
 
int main()
{
    Matrice Mresultat = {NULL,2,2};
    int lin = 2;
    int col = 2;
//matrice 2 2
 
    int i;
    Mresultat.adresse = malloc(lin * sizeof(*(Mresultat.adresse)));//reserve espace pour pointeur ligne matrice
    // creation d'un tableau de "col" cases à chaque ligne de la matrice
    for(i = 0; i < lin; i++)
    {
        (Mresultat.adresse)[i] = malloc(col * sizeof(double));
    }
 
// afficher la matrice
    int j;
    for (i = 0; i < Mresultat.lin; i++)
    {
        for (j = 0; j < Mresultat.col; j++)
        {
            (Mresultat.adresse)[i][j] = 7.5842;
            printf("%f\t", (Mresultat.adresse)[i][j]);
        }
    printf("\n");
    }
    printf("\n");
 
    return 0;
}
je vois a l'écran : 0,00000 0,00000
0,00000 0,00000

je n'es pas mis les procédures de destruction des matrice une fois finie mais ce n'est pas elle qui plante le tout.

savez-vous pourquoi mon code ne marche pas pour les "double" ?

merci d'avance