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

Macro Discussion :

macro calcul factorielle


Sujet :

Macro

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut macro calcul factorielle
    ReBonjour et bonne année existe t'il une fonction par le biais d'une macro qui calcul n! factorielle par exemple avec une fonction recursive qui calcul n*n-1*n-2...? avec n en paramètre

  2. #2
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Il existe une fonction SAS te calculant directement le factoriel : la fonction fact

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut rep
    C'est sur à quoi ca sert de faire une macro qd une fonction existe mais c'est une macro que je suis obligé de faire

  4. #4
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Bonjour,
    C'est dans le cadre d'un exercice scolaire?

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Plus ou moin c'est surtout pour m'entrainer alors je fais des exercices que j'ai trouvé car je vais avoir un partiel sur ls macros sas

  6. #6
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Citation Envoyé par elimaur Voir le message
    Plus ou moins c'est surtout pour m'entrainer alors je fais des exercices que j'ai trouvé car je vais avoir un partiel sur les macros sas
    Si c'est pour t'entraîner, je ne saurais trop te conseiller de réaliser d'abord une ébauche de programme puis de venir ensuite nous poser des questions sur : ce qui ne marche pas, les difficultés rencontrés, l'optimisation de ton programme, ....
    Je ne pense pas que le fait que nous fassions directement ton exercice t'aidera, ...., en programmation la réflexion prime sur l'action!

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    Je ne sais pas comment commencer, j'ai fait cela mais je sais que ce n'est pas ca, je ne sais pas comment présenter la formule ou avec un while je sais pas besoin d'aide!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    %macro factorielle(n);
    %do i=-1 %to -&n;
    %if &n^=0 and &n^=1 %then %evalf(&n*(&n-&i));

  8. #8
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Hello,
    Il faut d'abord que tu écrives ton algorithme et que tu le traduises ensuite en langage macro :
    Ton algo :
    Si n=0 alors res=1
    Si n=1 alors res=1*1
    .....
    Si n=10 alors n=1*2*3*...*10

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2009
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 27
    Points : 19
    Points
    19
    Par défaut
    est ce un bon début?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    %macro factorielle(n);
    %if fact=&n %then res=%do i=1 %to &n;
    %eval(&i*&n)%end;;
    %mend;
     
    %factorielle(2);

  10. #10
    Responsable SAS


    Inscrit en
    Septembre 2006
    Messages
    3 176
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 176
    Points : 16 157
    Points
    16 157
    Par défaut
    Hello,
    Tu as beaucoup d'erreurs de ";".
    Une autre remarque : ta variable fact n'est déclarée nulle part et n'est pas une macro-variable, de même pour res qui ne fait référence à rien.

    Pour déclarer une macro-variable, tu dois utiliser %let

    Pense aussi à utiliser les %PUT pour voir le résultat de ce que tu fais.

    Voici ce que ton programme fait actuellement, après corrections des ";":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    %macro factorielle(n);
    %IF fact=&n %then res=;
    %do i=1 %TO &n;
    %PUT %eval(&i*&n);
    %end;
    %mend;
     
    %factorielle(2);

Discussions similaires

  1. macro calcul de correlation
    Par oliver75 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/06/2007, 17h53
  2. [Q] VB Excel: Macros calcul de date jours ouvrés
    Par naouara17 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2007, 13h59
  3. probleme de calcul factoriel
    Par argon dans le forum C
    Réponses: 39
    Dernier message: 19/02/2007, 08h53
  4. [Math] Fonction pour calculer Factorielle(n)
    Par Asdorve dans le forum Vos contributions VB6
    Réponses: 2
    Dernier message: 10/08/2006, 21h20
  5. Calcul Factorielle
    Par Mestoph dans le forum Langage
    Réponses: 3
    Dernier message: 18/03/2006, 22h27

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