Solution du TD d'informatique No. 1 :
Quelques programmes simples
Patrick Gros -- Patrick.Gros@irisa.fr
Didier Le Botlan -- didier.le_botlan@inria.fr
Lundi 13 novembre 2000
1 Permutation aléatoire d'un tableau
import java.io.* ;
import java.lang.* ;
import java.util.* ;
class tableau_aleatoire {
public static void main(String[] arg) {
// On verifie que les arguments sont corrects
if (arg.length != 1) {
System.out.println("Utilisation : java tableau_aleatoire n") ;
System.exit(0) ;
}
// Creation du tableau
int n = Integer.parseInt(arg[0]) ;
int[] tableau = new int[n] ;
// Initialisation du tableau
for (int i = 0 ; i < n ; ++i)
tableau[i] = i ;
// Permutation aleatoire du tableau
for (int i = n - 1 ; i > 0 ; --i) {
int a = (int)(Math.random() * i) ;
int x = tableau[a] ;
tableau[a] = tableau[i] ;
tableau[i] = x ;
}
// Affichage du tableau
for (int i = 0 ; i < n ; ++i)
System.out.println("tableau[" + i + "] = " + tableau[i]) ;
}
}
2 Recherche de palindromes
import java.io.* ;
import java.lang.* ;
import java.util.* ;
public class palindrome {
// Interaction avec l'utilisateur
/////////////////////////////////
// Demander une chaine de caracteres a l'utilisateur
static String Lire_Chaine(String question) {
System.out.println(question) ;
String texte = "" ;
try {
BufferedReader entree = new BufferedReader(new InputStreamReader(System.in)) ;
StringTokenizer st = new StringTokenizer(entree.readLine()) ;
texte = st.nextToken() ;
}
catch(java.io.IOException e) {
System.out.println("Erreur de lecture") ;
System.exit(0) ;
}
return texte ;
}
// Fonction simple de recherche de palindrome
/////////////////////////////////////////////
static boolean Palindrome1(String chaine)
{
int lc = chaine.length() ;
for (int i = 0 ; i < lc / 2 ; i++)
if (chaine.charAt(i) != chaine.charAt(lc - i - 1))
return false ;
return true ;
}
// Recherche plus compliquee de palindrome
//////////////////////////////////////////
static boolean Est_Separateur(char c)
{
int NSMAX = 12 ;
char[] separateurs = {',', ':', ' ', '.', '-', '(', ')', '{', '}', '\n', ''', ';'} ;
for (int i = 0 ; i < NSMAX ; i++)
if (c == separateurs[i])
return true ;
return false ;
}
static boolean Palindrome2(String chaine)
{
int lc = chaine.length(), d = 0, f = lc - 1 ;
while (d < f) {
while (d < lc && Est_Separateur(chaine.charAt(d))) d++ ;
while (f >= 0 && Est_Separateur(chaine.charAt(f))) f-- ;
if (d == lc || f < 0)
return true ;
if (chaine.charAt(d) != chaine.charAt(f))
return false ;
d++ ; f-- ;
}
return true ;
}
// Programme principal
//////////////////////
public static void main(String[] args) {
String chaine = Lire_Chaine("Entrer une chaine de caracteres :") ;
if (Palindrome1(chaine))
System.out.println("La chaine " + chaine + " est un palindrome de type 1.") ;
else
System.out.println("La chaine " + chaine + " n'est pas un palindrome de type 1.") ;
if (Palindrome2(chaine))
System.out.println("La chaine " + chaine + " est un palindrome de type 2.") ;
else
System.out.println("La chaine " + chaine + " n'est pas un palindrome de type 2.") ;
}
}
This document was translated from LATEX by
HEVEA.