import java.io.*;
class chap4_fact {*
public static void main(String[] args) {
int cpt,resultat=1;
String txt="";
BufferedReader saisie;
saisie=new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Table ?");
txt=saisie.readLine();
}
catch(Exception excp) {
System.out.println("Erreur");
}
cpt=Integer.parseInt(txt);
resultat=cpt;
while(cpt>2) {
cpt-;
resultat=resultat*cpt;
}
System.out.println(resultat);
}
}
c. x à la puissance y
Il s’agit cette fois d’élever une valeur à une puissance quelconque. Pour rappel, x n est égal à x*x*x*x… n fois. C’est
donc très simple : une boucle Tant Que qui va compter de 1 à n, dans laquelle le résultat de la multiplication
précédente va être multiplié par x.
PROGRAMME puissance
VAR
x,n,cpt,resultat:entiers
DEBUT
Afficher "x,n ?"
Saisir x,n
cpt←1
resultat←1
Tant que cpt<=n Faire
resultat←resultat*x
cpt←cpt+1
FinTantQue
Afficher resultat
FIN
Cet algorithme fonctionne bien, mais ne gère pas tous les cas. En fait, il fonctionne uniquement si la puissance est
supérieure ou égale à zéro. Si n vaut zéro, le programme ne rentre même pas dans la boucle et le résultat vaut 1. Si
n vaut un, resultat vaut x. Et pour les puissances négatives ? x n est égal à 1/x n .
Il s’agit donc de déterminer le signe de la puissance et de faire une division. Il faut aussi récupérer la valeur absolue
de la puissance, ce que vous savez déjà faire. Dans l’algorithme suivant, un drapeau « signe » est utilisé pour savoir
si n est négatif ou non, afin d’effectuer une division à la fin.
Variables x,n,signe,cpt,resultat en Numérique
Début
Signe←0
Ecrire "x,n ?"
Lire x,n
Si n<0 Alors
Signe←1
n←-n
FinSI
cpt←1
resultat←1
Tant que cpt<=n Faire
resultat←resultat*x
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
76
class chap4_fact {*
public static void main(String[] args) {
int cpt,resultat=1;
String txt="";
BufferedReader saisie;
saisie=new BufferedReader(new InputStreamReader(System.in));
try {
System.out.println("Table ?");
txt=saisie.readLine();
}
catch(Exception excp) {
System.out.println("Erreur");
}
cpt=Integer.parseInt(txt);
resultat=cpt;
while(cpt>2) {
cpt-;
resultat=resultat*cpt;
}
System.out.println(resultat);
}
}
c. x à la puissance y
Il s’agit cette fois d’élever une valeur à une puissance quelconque. Pour rappel, x n est égal à x*x*x*x… n fois. C’est
donc très simple : une boucle Tant Que qui va compter de 1 à n, dans laquelle le résultat de la multiplication
précédente va être multiplié par x.
PROGRAMME puissance
VAR
x,n,cpt,resultat:entiers
DEBUT
Afficher "x,n ?"
Saisir x,n
cpt←1
resultat←1
Tant que cpt<=n Faire
resultat←resultat*x
cpt←cpt+1
FinTantQue
Afficher resultat
FIN
Cet algorithme fonctionne bien, mais ne gère pas tous les cas. En fait, il fonctionne uniquement si la puissance est
supérieure ou égale à zéro. Si n vaut zéro, le programme ne rentre même pas dans la boucle et le résultat vaut 1. Si
n vaut un, resultat vaut x. Et pour les puissances négatives ? x n est égal à 1/x n .
Il s’agit donc de déterminer le signe de la puissance et de faire une division. Il faut aussi récupérer la valeur absolue
de la puissance, ce que vous savez déjà faire. Dans l’algorithme suivant, un drapeau « signe » est utilisé pour savoir
si n est négatif ou non, afin d’effectuer une division à la fin.
Variables x,n,signe,cpt,resultat en Numérique
Début
Signe←0
Ecrire "x,n ?"
Lire x,n
Si n<0 Alors
Signe←1
n←-n
FinSI
cpt←1
resultat←1
Tant que cpt<=n Faire
resultat←resultat*x
- 4 -
© ENI Editions - All rigths reserved - Jonifar lina
76
