/* Auteur: Nicolas JANEY          */
/* nicolas.janey@univ-fcomte.fr   */
/* Fevrier 2005                   */

public class InversionTableauCaracteresEnConsole {

  /* Fonction de creation d'un tableau de caracteres      */
  /* initialise avec tous les caracteres                  */
  /* d'une chaine de caracteres                           */
  /* s : chaine de caracteres a traiter                   */
  /* Resultat fonction : tableau de caractere             */

  public static char [] initTableau(String s) {
    int n = s.length();
    char [] t = new char[n];
    for ( int i = 0 ; i < n ; i++ )
      t[i] = s.charAt(i);
    return(t);
  }

  /* Fonction de creation d'une chaine de caracteres      */
  /* initialisee avec tous les caracteres                 */
  /* d'une tableau de caracteres                          */
  /* t : tableau de caractere a traiter                   */
  /* Resultat fonction : chaine de caracteres             */

  public static String chaine(char [] t) {
    String s = "";
    for ( int i = 0 ; i < t.length ; i++ )
      s = s+t[i];
    return(s);
  }

  /* Fonction d'affichage d'un tableau de caracteres      */
  /* t : tableau de caractere a afficher                  */

  public static void afficheTableau(char [] t) {
    for ( int i = 0 ; i < t.length ; i++ )
      Console.out.print(t[i]);
  }

  /* Fonction d'inversion des caracteres d'un tableau     */
  /* de caractere                                         */
  /* t : tableau de caractere a inverser                  */

  public static void inversion(char [] t) {
  /* Calcul de la taille du tableau de caractere          */
    int l = t.length;
  /* (l sur 2) inversions doivent etre realisee           */
    for ( int i = 0 ; i < l/2 ; i++ ) {
  /* On inverse les caracteres d'indice i et l-1-i        */
  /* Une variable auxiliaire du meme type que les deux    */
  /* variables a inverser doit etre utilisee              */
      char c = t[i];
      t[i] = t[l-1-i];
      t[l-1-i] = c; }
  }

  /* Fonction principale                                  */

  public static void main(String [] args) {
    Console.setTitle("InversionTableauCaracteres");
  /* Creation d'un tableau de caractere a partir          */
  /* de la chaine de caracteres "ABCDEFGHI"               */
  /* Inversion de ce tableau et affichage du resultat     */
    { char [] mot = initTableau("ABCDEFGHI");
      Console.out.println(chaine(mot));
      inversion(mot);
      Console.out.println(chaine(mot)); }
  /* Au sein d'une boucle infinie                         */
  /* Lecture au clavier d'une chaine de caracteres        */
  /* Creation d'un tableau de caractere a partir          */
  /* de cette chaine de caracteres                        */
  /* Inversion de ce tableau et affichage du resultat     */
    while ( true ) {
      Console.out.print("Quelle est la chaine a traiter? : ");
      String s = Console.in.readLine();
      char [] mot = initTableau(s);
      Console.out.print(chaine(mot));
      inversion(mot);
      Console.out.println(" -> "+chaine(mot)); }
  }
}