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 :

question sur une déclaration de tableau


Sujet :

C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut question sur une déclaration de tableau
    Bonjour

    j'ai remarqué que si je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int matrice_adj[4][4]={
                   {1,1,1,0},
    	{1,1,1,0},
       	{1,1,1,0}, 
                   {0,0,0,1} 
                  };
    cout <<matrice_adj[3][3]<<endl;
    ben le programme marche (bon "cout" c'est pas du C mais bon)

    et si je déclare ainsi toutes les cases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int matrice_adj[3][3];
     
                 matrice_adj[3][0] = 0;
    	matrice_adj[3][1] = 0;
    	matrice_adj[3][2] = 0;
    	matrice_adj[3][3] = 1; // dernier point de ma matrice
    cout <<matrice_adj[3][3]<<endl;
    ben là j'ai un affichage et une erreur dans la mémoire quelque part.
    (pareil si je fais int matrice_adj[4][4];)

    (j'ai un tableau de 4 colonne 4 lignes)

    les 2 déclaration me semblaient pourtant justes.

    merci

  2. #2
    Membre averti
    Inscrit en
    Septembre 2006
    Messages
    414
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 414
    Points : 354
    Points
    354
    Par défaut
    moi je dirai qu'il faut que tu revoi tes cours sur les tableau....

    quand tu defini un tableau tab[3]
    l'indice max est 2....pas 3 ! (a cause du 0)

    sinon....c'est pas du C !donc t'es pas dans le bon forum
    __________
    "Any sufficiently advanced technology is indistinguishable from magic" Arthur C. Clarke

  3. #3
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Salut,

    C'est drôle de poster du code C++ sur un forum C, mais bon...

    Citation Envoyé par isidore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int matrice_adj[4][4]={
                   {1,1,1,0},
    	{1,1,1,0},
       	{1,1,1,0}, 
                   {0,0,0,1} 
                  };
    cout <<matrice_adj[3][3]<<endl;
    ben le programme marche (bon "cout" c'est pas du C mais bon)
    Cela fonctionne, pas de surprise ici!

    Citation Envoyé par isidore
    et si je déclare ainsi toutes les cases :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int matrice_adj[3][3];
     
                 matrice_adj[3][0] = 0;
    	matrice_adj[3][1] = 0;
    	matrice_adj[3][2] = 0;
    	matrice_adj[3][3] = 1; // dernier point de ma matrice
    cout <<matrice_adj[3][3]<<endl;
    ben là j'ai un affichage et une erreur dans la mémoire quelque part.
    Normal, tu as déclaré un tableau de 3x3. Les indices pour chacune des dimensions varient entre 0 et 2. matrice_adj[3][3] est en dehors de la mémoire réservée pour le tableau.

    Citation Envoyé par isidore
    les 2 déclaration me semblaient pourtant justes.
    Le code ci-dessus n'est pas correct, car tu essaies d'accéder à un espace mémoire hors du tableau.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    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
    #include <stdio.h>
     
    int main(void)
    {
        int matrice_adj[4][4];
     
        matrice_adj[3][0] = 0;
        matrice_adj[3][1] = 0;
        matrice_adj[3][2] = 0;
        matrice_adj[3][3] = 1; 
     
        fprintf(stdout, "%d\n", matrice_adj[3][3]);
     
        return 0;
    }
    Ce code fonctionne correctement!

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 80
    Points : 51
    Points
    51
    Par défaut
    merci pour la réponse
    (en fait je code en C mais je mets des "cout" pour faire simple
    donc c'est du C sauf pour les printf où je remplace par cout pour des raison de facilités.=

  6. #6
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par isidore
    merci pour la réponse
    (en fait je code en C mais je mets des "cout" pour faire simple
    donc c'est du C sauf pour les printf où je remplace par cout pour des raison de facilités.=
    cout ne fait pas partie du langage C. Si tu l'utilises, tu fais donc du C++ et compile avec un compilateur C++. Le fait que tu n'utilises qu'un sous-ensemble du langage excluant les extensions orientées-objets ne font pas de ton programme un programme C pour autant.

    Si c'est en langage C que tu désires programmer, il n'y a aucune raison d'utiliser cout. Si tu programmes en C++ dans un style procédural proche du C, tu programmes en C++ puisqu'aucun compilateur C n'acceptera ton fichier source. Si tu désire te former sur le langage C, n'utilise pas cout, mais les fonctions fournies par la bibliothèque standard de C.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

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

Discussions similaires

  1. Question sur une déclaration de fonction
    Par deubelte dans le forum Débuter
    Réponses: 2
    Dernier message: 08/03/2010, 10h13
  2. [Newbies] Question sur une technologie XML a utiliser
    Par superraider dans le forum Windows
    Réponses: 3
    Dernier message: 21/10/2005, 10h01
  3. [jdbc] question sur une connection
    Par berg dans le forum JDBC
    Réponses: 2
    Dernier message: 10/09/2005, 08h29
  4. decalage à gauche sur une tres grand tableau de char
    Par petitours dans le forum C++Builder
    Réponses: 10
    Dernier message: 14/07/2005, 22h40
  5. Lien sur une ligne de tableau
    Par Oluha dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 09/02/2005, 11h36

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