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 :

pointeurs exercice corrigé aide


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut pointeurs exercice corrigé aide
    Bonjour,

    Demain j'ai un examen en C et je voulais avoir votre avis pour me corriger un exercice et me dire si possible quelles fautes j'ai commis

    Voilà l’exercice

    Un tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int array[] = {1,2,3,4,5,6,7,8,9,10,20,30,40,50,60};
    il faut trouver ce qu'affiche les printf

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    k=array[5];
    p1=&k;
    p2=&p1;
    printf("a : %d", **p2);
    //ma réponse est a : 6

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    p1=array;
    p1 += 8 ;
    printf("b : %d", *p1);

    //ma réponse : b : 9

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    (*p1)+=8;
    printf("c : %d, *p1);
    //réponse = c : 17
    // ici je ne suis pas sur du tout (*p1)+=8 donne bien 9 + 8 donc 17 ?? pas sur du tout

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    i = array + 11;
    p1 = array + 13;
    printf("d :  %d", p1-i);
    printf("e : %d ", *p1 - *i);
    //réponse = d : 2 et e : 59 // pas sur non plus pour 59...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p1 = array;
    p1 += 12;
    printf("f : %d", *(p1 - 1));
    printf("g : %d", *p1 - 1);
    //réponse = f : 40 et g : 49

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    p1 = array;
    p1 += 20;
    i = p1 - 15;
    printf("h : %d", *i);
    //réponse = h : 7

    Voilà si quelqu'un est à l'aise avec les pointeurs, si il peut m'aider avant ce soir ça me sauverai bien
    merci beaucoup


    <config>Mac OS X Lion (10.7.5) / Safari 6.0.2</config>

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 493
    Par défaut
    Bonjour,

    Tu as globalement compris le principe. Toutefois, il faudrait déjà déclarer les variables que tu utilises. À part cela, ton programme compile, et donne les résultats que tu attends, à ces exceptions près :

    //réponse = d : 2 et e : 59 // pas sur non plus pour 59...
    En effet, la réponse est « e : 20 ». i pointe le douzième élément de ton tableau (array+11) et p1 le quatorzième, soit respectivement « 30 » et « 50 ». L'asterisque « * » déréférence le pointeur pour indiquer que l'on s'intéresse à la valeur pointée plutôt qu'au pointeur lui-même. On récupère donc ces deux valeurs, puis l'opérateur « - » en calcule la différence. Donc 50 - 30 = 20.

    //réponse = f : 40 et g : 49
    En fait, c'est « 30 » et « 39 ». Tu t'es trompé d'une position mais ton raisonnement était quand même le bon.

    //réponse = h : 7
    Même chose : « h = 6 ». N'oublie pas que l'indice d'un tableau commence à zéro et non à un. Et pour les mêmes raisons, si « array » pointe le premier élément d'un tableau, alors

    • array+1 pointe le second ;
    • array+2 pointe le troisième ;
    • array+3 pointe le quatrième ;
    • array+4 pointe le cinquième ;
    • etc.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2009
    Messages : 11
    Par défaut
    yes merci, j'avais meme pas pensé à tester le code... lol Merci mec

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    Septembre 2007
    Messages
    7 493
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 493
    Par défaut
    Citation Envoyé par capa57 Voir le message
    Merci mec
    À ton service, mais n'oublie pas .

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 16/06/2014, 17h09
  2. Réponses: 1
    Dernier message: 24/03/2012, 20h26
  3. Exercices corrigés en XML
    Par soumou dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 01/04/2006, 15h33
  4. Un cours de C/C++ avec exercices corrigés
    Par merrheim dans le forum C++
    Réponses: 65
    Dernier message: 18/01/2005, 22h30

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