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 :

Dérouler une procédure


Sujet :

C

  1. #1
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut Dérouler une procédure
    Bonjour a tous, voila j'ai un exercice a faire et il y 'a une question que je ne comprends pas:
    "Quel est le résultat de l'exécution de cette procédure (la dérouler avec une valeur de n=1964)"

    La procédure en question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void calcul(int n) { do { printf("%3d",n%10); n=n/10;} while(n>0);}
    Ce que je voudrais savoir c'est comment on fait pour dérouler et quel est le résultat de cette procédure.
    En vous remerciant.
    Amicalement.

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    je pense que "dérouler" signifie "la faire tourner"... "la faire exécuter"

  3. #3
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    "exécuter" ? , désolé mais je comprends pas trop, vu que c'est a l'écris et non sur machine.

  4. #4
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Tchupa Voir le message
    "exécuter" ? , désolé mais je comprends pas trop, vu que c'est a l'écris et non sur machine.
    Tu l'executes dans ta tete et tu ecris ce que sortirais le printf() si la fonction etait reellement executee. Bref, tu penses comme un ordinateur...

  5. #5
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Simplement en écrivant les étapes importantes de la fonction.

    - Changement de la valeur de n
    - Sortie des messages sur stdout (printf).

  6. #6
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Si je comprends bien, dans ma fonction calcul on me dis n=n/10,
    donc avec n=1964 si je deroules ça me donne:
    n=196,4
    n=19,6 ect... tant que n>0
    c'est bien ça?

  7. #7
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Attention, n est un entier donc on travaille en division entiere. Egalement, tu oublies le printf() pour l'instant: il imprime n modulo 10 dans un certain format.

  8. #8
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Je suis un peu lent , désolé, donc si je comprends bien le printf affiche le reste de la division ?
    Si on a n=1964 avec n%10
    ça va faire: 1964%10=4 c'est bien ça? donc le programme affiche 4.

  9. #9
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    Bonjour,

    la premiere boucle du programme affiche 4
    Ensuite, boucle suivante tant que n est positif

  10. #10
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Je sais j'insiste , mais je préfères être sur , en résumé quand mon printf contient un modulo c'est le reste de la division que l'on doit afficher.
    Donc si je déroules correctement ma procédure jusqu'au bout, il va s'afficher:
    4
    6
    et 9

    est ce bien ça?

  11. #11
    Membre éprouvé Avatar de BainE
    Inscrit en
    Mai 2004
    Messages
    1 327
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 1 327
    Par défaut
    et 1 pour finir
    en fait le prog affiche ton nombre a l'envers

  12. #12
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Comment ça il affiche a l'envers?

  13. #13
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Tchupa Voir le message
    Comment ça il affiche a l'envers?
    L'ordre normal est ... Milliers Centaines Dizaines Unités. Ici, il affiche U D C M ...

  14. #14
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    L'ordre normal est ... Milliers Centaines Dizaines Unités. Ici, il affiche U D C M ...
    Alors quand je fais ma division a la main a la fin je dois mettre tout dans le sens inverse comme ici :
    1964%10=4
    196%10=6
    19%10=1

    Donc je dois ensuite écrire 1,6,4 ??

  15. #15
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Tchupa Voir le message
    Alors quand je fais ma division a la main a la fin je dois mettre tout dans le sens inverse comme ici :
    1964%10=4
    196%10=6
    19%10=1

    Donc je dois ensuite écrire 1,6,4 ??
    Oui. Attention 19%10 ça fait 9 et pas 1...

  16. #16
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    %=modulo non ?
    je comprends plus rien moi

  17. #17
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Tchupa Voir le message
    %=modulo non ?
    je comprends plus rien moi
    Ben oui. Tu fais bien une décomposition en facteur de 10, non ?

    OK, j'ai relu. Tu as bien fais la division par 10, mais le % est faux

    C'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1964 % 10 = 4 (U)
    1964 / 10 = 196
    196 % 10 = 6 (D)
    196 / 10 = 19
    19 % 10 = 9 (C)
    19 /10 = 1 (M)
    1 est < 10 alors on s'arrête

  18. #18
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 398
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 398
    Par défaut
    Non, il ne fait pas n'importe quoi: Il n'y a qu'un seul % dans son code, et il est là où il doit être dans la boucle.

    Par contre, Tchupa, en effet la procédure écrit 4,6,9,1.

    Si tu voulais que la fonction écrive le nombre à l'endroit, le mieux serait de passer par un buffer intermédiaire, je pense:
    Code C : 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
    void calcul(int n)
    {
    	char buf[20]; /*Une taille raisonnable assez grande. */
    	int i = 0;
     
    	/* Calcul */
    	do
    	{
    		int chiffre = n%10;
    		buf[i] = (char)(chiffre + '0');
    		i++;
    		n /= 10;
    	} while(n>0);
     
    	/* Affichage */
    	while(i>0)
    	{
    		i--;
    		putchar(buf[i]);
    	}
    }
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  19. #19
    Membre confirmé Avatar de Tchupa
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2007
    Messages : 98
    Par défaut
    Ok, je vous remercies bien de votre aide.

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

Discussions similaires

  1. passage d'un nom de table dans une procédure stockée
    Par thierry V dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 26/07/2010, 16h48
  2. Transformation de date dans une procédure stockée
    Par bd0606 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 27/10/2003, 11h31
  3. Réponses: 12
    Dernier message: 27/08/2003, 11h04
  4. Problème avec une procédure stockée
    Par in dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/05/2003, 15h33
  5. Fin de programme dans une procédure
    Par Sinclair dans le forum Langage
    Réponses: 13
    Dernier message: 29/11/2002, 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