• Aucun résultat trouvé

1. On consid` ere la m´ ethode “mystere” de la classe “MesEntiers” :

N/A
N/A
Protected

Academic year: 2022

Partager "1. On consid` ere la m´ ethode “mystere” de la classe “MesEntiers” :"

Copied!
2
0
0

Texte intégral

(1)

LPSIL Ann´ ee 2008-2009 TD Algorithmique - Feuille 1

Terminaison et correction

1. On consid` ere la m´ ethode “mystere” de la classe “MesEntiers” :

public class MesEntiers {

/** ant´ec´edent : ...

* cons´equent : ... */

public static int mystere(int x) { int result = 0;

if (x==0) result = 1;

// A0 : ...(propri´et´e sur x et result pour v´erifier que c’est correct) else {

int n = x;

while (n!=0) {

// A1 : ...(propri´et´e sur n pour v´erifier que ¸ca termine)

// A2 : ...(propri´et´e sur result, n et x pour v´erifier que c’est correct) n = n/10;

result++;

}

// A3 : ...(propri´et´e sur x et result pour v´erifier que c’est correct) };

return result;

} }

// le main pour tester

public static void main(String args[]){

System.out.println(‘‘mystere de 9321 : ‘‘ + mystere(9321));

} }

• Que vaut mystere(9321) ?

• Donner les assertions A0, A1, A2 et A3 et en d´ eduire les cons´ equents (ant´ ec´ edent et cons´ equent) de la proc´ edure myst` ere.

1

(2)

2. Compl´ etez la m´ ethode suivante qui d´ etermine si c est un palindrome. Un palindrome est un mot qui se lit aussi bien de gauche ` a droite que de droite ` a gauche. Par exemple, “rever” et

“ressasser” sont des palindromes, “carotte” n’est pas un palindrome.

Pour acc´ eder aux caract` eres d’une chaine vous pouvez utiliser la m´ ethode “charAt(int i)” de la classe String. Exemple : String s = new String(“carotte”); s.charAt(3) renvoie ’o’.

Attention : ` a chaque ´ etape de la boucle, vous devez respecter l’assertion A1

public boolean palindrome(String c) { int i = 0;

int j = c.length()-1;

while ((i<j) && ...)) {

// A1 : si C1 est la sous-chaine de c allant de l’indice 0 `a l’indice i-1

// : si C2 est la sous-chaine de c allant de l’indice j+1 `a l’indice c.length()-1 // : alors C1C2 est un palindrome

...

...

}

return ...;

}

3. On a modifi´ e la ligne 9 de la m´ ethode “rechercheVite”. Trouver un exemple de tableau pour lequel cette nouvelle m´ ethode ne termine jamais.

1 public static int rechercheVite(int[] tab, int x) { 2 int gauche = 0;

3 int droite = tab.length - 1;

4 int milieu ;

5 while (gauche <= droite) {

6 milieu = (gauche + droite) / 2 ; 7 if (x==tab[milieu]) return milieu;

8 if (x<tab[milieu])

9 droite = milieu; // ERREUR (dans le cours : droite = milieu - 1) 10 else gauche = milieu + 1;

11 }

12 return -1;

13 }

Justifiez la terminaison de la m´ ethode “rechercheVite()” du cours.

4. Ecrire la m´ ethode “public static int recherche(int[] tab, int x, int o)” de la classe “TableauEn- tier” qui renvoie l’indice de l’occurence n

o de x ou −1 si x apparait moins de o fois dans le tableau. Par exemple, si tab = {1, 2, 4, 12, 0, 1, 5}, recherche(tab,1,2) renvoie 5, recherche(tab,1,1) renvoie 0 et recherche(tab,1,6) renvoie -1.

2

Références

Documents relatifs

Un nombre entier naturel non nul n est dit parfait si la somme des diviseurs de n qui sont supérieurs ou égaux à 1 est égale au double de n. Par exemple, 6 est un

Lebois par ses qualités d'aspect et par la diversité de ses mises en œuvre est en mesure d'établir cette transition entre bâti ancien et édifice nouveau en raison de son

Changements de variables : seuls ont ´et´e vus les passages en coordonn´ees cylindriques et en coordonn´ees sph´eriques ; pour ce dernier, θ d´esigne la longitude et ϕ la

I Applications : d´etermination du centre de gravit´e d’une plaque homog`ene, d’un solide homog`ene ; calcul du moment d’inertie d’un solide homog`ene par rapport ` a un axe..

[r]

Par imparit´ e de la fonction N ρ , on montre par une r´ ecurrence imm´ ediate que les suites de Newton de termes initiaux oppos´ es sont oppos´ ees... Cette suite est n´

Donc Int(A)

• Probl`eme bidimensionnel de Poisson (non trait´e en TD ) : flexion d’une plaque ´elastique, charg´ee perpendiculairement ` a son plan moyen de