IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Allocation d'une matrice


Sujet :

C

  1. #1
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Par défaut Allocation d'une matrice
    Bonjour,

    j'ai un problème d'allocation de matrice. J'aimerai créer un matrice de taille variable dont les dimensions sont demandées au début du programme.
    Ensuite j'aimerai pouvoir écrire des valeurs dans cette matrice. Je fais un simple test mais ca ne m'indique pas la valeur que j'ai donné.

    Voici mon code :

    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <math.h> 
     
    int main(int argc, char *argv[])
    {
     
        double** Aj = NULL;
            int n;
            int p;
            int i;
     
            // On demande le nombre d'amis à l'utilisateur
        printf("Combien de ligne ? ");
        scanf("%d", &n);
            printf("Combien de colonne ? ");
        scanf("%d", &p);
     
            Aj=(double**)malloc(sizeof(double*)*n);
            for ( i=0 ; i<n ; i++)
                    {
                            Aj[i]=(double*)malloc(sizeof(double)*p);
                    }
     
            Aj[1][1]=2;
            printf("%ld \n", Aj[1][1]);
     
        free(Aj);
     
      system("PAUSE");      
      return 0;
     
    }
    Si quelqu'un sait me dire ce qui ne va pas, ca m'aiderait beaucoup

  2. #2
    Expert confirmé
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Par défaut
    L'allocation me semble bonne, mais pour la libération free(Aj) est insuffisant. Il faut d'abord avoir libéré tous les Aj[i] avant de libérer Aj. Pour l'affichage, on utilise %f pour afficher un double (%lf pour saisir) et non %ld qui sert à afficher un long int. Autres remarques :

    - argc et argv ne sont pas utilisés, tu peux ne pas les déclarer.
    - Le cast de malloc est inutile en C. malloc retourne un void * qui est compatible avec tous les pointeurs.
    - malloc peut échouer, dans ce cas elle retourne NULL. Il manque les tests d'erreur.
    - system("PAUSE") n'est pas portable.

  3. #3
    Membre averti
    Inscrit en
    Mars 2008
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 14
    Par défaut
    OK c'était simplement %lf au lieu du %ld.

    Un grand merci ainsi que pour tes remarques, je vais corriger tout ca.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. allocation dynamique d'une matrice
    Par kochfet dans le forum C
    Réponses: 5
    Dernier message: 26/03/2014, 11h24
  2. Schéma d'allocation mémoire pour une matrice
    Par Thierry Chappuis dans le forum C
    Réponses: 6
    Dernier message: 01/05/2011, 13h21
  3. allocation d'une matrice.
    Par oliv27400 dans le forum MATLAB
    Réponses: 1
    Dernier message: 15/11/2010, 12h57
  4. Allocation dynamique d'une matrice
    Par cedrix57 dans le forum Fortran
    Réponses: 2
    Dernier message: 24/05/2010, 10h24
  5. Allocation dynamique d'une matrice
    Par magicstar dans le forum MATLAB
    Réponses: 7
    Dernier message: 27/04/2007, 09h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo