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
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
Il existe une fonction SAS te calculant directement le factoriel : la fonction fact
Les balises code
FAQ SAS
Rubrique SAS
Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
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
Bonjour,
C'est dans le cadre d'un exercice scolaire?
Les balises code
FAQ SAS
Rubrique SAS
Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
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
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!
Les balises code
FAQ SAS
Rubrique SAS
Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
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));
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
Les balises code
FAQ SAS
Rubrique SAS
Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
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);
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);
Les balises code
FAQ SAS
Rubrique SAS
Si vous souhaitez contribuer à la rubrique SAS, contactez-moi ou tout autre membre de l'équipe BI par MP.
Partager