Correction du TP n°1

Exercice 1

/* Auteur: Nicolas JANEY */
/* nicolas.janey@univ-fcomte.fr */
/* Fevrier 2005 */
import java.io.*;
public class NombreInconnu {
static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
/* Fonction principale */
public static void main(String [] args) throws IOException {
int nombre =(int) (Math.random()*101); // Tirage au sort du nombre a trouver
int v; // Valeur testee par l'utilisateur
int cpt = 0; // Compteur d'essais
/* Boucle de demande des nombres a tester */
do {
/* Lecture clavier du nombre a tester */
System.out.print("Tentez votre chance : ");
v = Integer.valueOf(flux.readLine()).intValue();
/* Increment du compteur d'essai */
cpt++;
/* Affichages des messages d'aide en fonction */
/* des valeurs respectives du nombre a trouver */
/* et du nombre teste */
if ( v > nombre )
System.out.println("Trop haut");
if ( v < nombre )
System.out.println("Trop bas"); }
while ( v != nombre );
/* La boucle s'execute tant que la bonne valeur */
/* n'a pas ete donnee. */
System.out.println("Gagne en "+cpt+" coups");
}
}

NombreInconnu.java

Exercice 2

/* Auteur: Nicolas JANEY */
/* nicolas.janey@univ-fcomte.fr */
/* Fevrier 2005 */
import java.io.*;
public class Moyenne {
static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
/* Fonction principale */
public static void main(String [] args) throws IOException {
double total = 0.0; // Total des notes accumulees int
int cpt = 0; // Compteur de notes accumulees double
double note; // Note a traiter
/* Boucle de lecture des notes */
do {
/* Lecture d'une note au clavier int double */
System.out.print("Nouvelle note (-1 pour arreter) : ");
note = Double.valueOf(flux.readLine()).doubleValue();
/* Si la note est differente de -1. */
/* -> Elle doit etre accumulee. */
if ( note != -1.0 ) {
/* Increment du compteur et accumulation */
cpt++;
total = total + note; } }
while ( note != -1.0 );
/* Arret de la boucle quand -1 est tape */
/* Test du nombre de note tapees pour eviter */
/* une division par zero lors du calcul de la moyenne */
/* si aucune note n'est saisie. */
if ( cpt == 0.0 )
System.out.println("Pas de note saisie\n");
else
System.out.println(cpt+" note(s), "+total+" au total, "+
(total/cpt)+" de moyenne\n");
}
}

Moyenne.java

Exercice 3

/* Auteur: Nicolas JANEY */
/* nicolas.janey@univ-fcomte.fr */
/* Fevrier 2005 */
import java.io.*;
public class SoundexCode {
static BufferedReader flux = new BufferedReader(new InputStreamReader(System.in));
/* Fonction principale */
public static void main(String [] args) throws IOException {
String nom; // Nom a traiter
String code; // Code genere
/* Lecture clavier du nom a traiter */
System.out.print("Nom a traiter : ");
nom = flux.readLine();
/* Mise en majuscule du nom a traiter */
nom = nom.toUpperCase();
/* Initialisation du code avec la chaine de caracteres */
/* composee du premier caractere du nom a traiter */
code = nom.substring(0,1);
/* Boucle principale de traitement des autres lettres */
/* du nom a traiter */
for ( int i = 1 ; i < nom.length() ; i++ ) {
/* Extraction d'un caractere du nom a traiter */
char lettre = nom.charAt(i);
/* Suppression des voyelles et des doublons */
if ( ( lettre != 'A' ) &&
( lettre != 'E' ) &&
( lettre != 'I' ) &&
( lettre != 'O' ) &&
( lettre != 'U' ) &&
( lettre != 'Y' ) &&
( lettre != nom.charAt(i-1) ) )
/* Ajout de la lettre conservee au bout du code */
code = code + lettre; }
/* Conservation des seuls 4 premiers caracteres du code */
if ( code.length() > 4 )
code = code.substring(0,4);
System.out.println(code);
}
}

SoundexCode.java

Auteur: Nicolas JANEY
UFR Sciences et Techniques
Université de Besançon
16 Route de Gray, 25030 Besançon
nicolas.janey@univ-fcomte.fr