SMI – S5 Solution du TD-5 POO - Java, 2012-2013 3
BufferedReader tampon = new BufferedReader(new InputStreamReader(System.in)); */
System.out.print("Entrez Une chaine:");
String s = tampon.readLine();
System.out.print("Entrez un caractère :");
int n = tampon.read();
char ch=(char)n;
int cp = nbCaracteres(s, ch);
System.out.println("cp= "+cp ); // affiche n=3
} catch (IOException ioe) {
System.out.print("Erreure de lecture au clavier :");
//System.err.println(ioe);
}
finally {
try {
tampon.close();
in.close();
} catch (IOException exception1) {
System.out.print("Erreure de fermeture des flux :");
exception1.printStackTrace();
}
}
}
}
Exercice 3:
Le but est de définir une classe qui calcule et affiche xn où x est un réel et n étant un entier strictement
positif.
1. Dans ce premier cas, on ne se préoccupe pas des cas d'erreurs qui peuvent se produire. Ecrire une
classe nommée CalcPuissance qui a deux méthodes:
- Une méthode non récursive nommée « puiss()» qui prend « x » et « n » en paramètres et qui
retourne xn.
- Une méthode récursive nommée « puissIter()» qui prend « x » et « n » en paramètres et qui
retourne xn.
- La méthode main(). Pour les tests, on suppose que x et n sont fournis en ligne de commande.
2. Dans le deuxième cas on s’intéresse aux erreurs qui peuvent se produire, en particulier:
- Si le nombre d’arguments est < 2, le programme affiche le message suivant : « Le nombre
d’arguments est <2 : Donner sur la ligne de commande un réel suivi d’un entier».
- Si les arguments fournis ne correspondent pas à un double suivi d’un entier (puissance), le
programme affiche le message suivant : «Mauvais format des arguments : Donner sur la ligne
de commande un réel suivi d’un entier ».
- Si n est négatif, le programme affiche le message suivant : «La puissance n doit être un entier
strictement positif ».
- Si la puissance n est trop grande (le résultat retourné est erroné), le programme affiche le
message suivant : « La puissance n est trop grande »
Solution
Question 1
public class CalcPuissance {
public static double puiss(double x, int n){
if (n==1)
return x;
else {
return x*puiss(x, n-1);
}
}
public static double puissIter(double x, int n){