IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Perl Discussion :

[Debutant] Substitution de doubles lettres


Sujet :

Langage Perl

  1. #1
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut [Debutant] Substitution de doubles lettres
    Bonjour à tous,

    En tant que débutant, j´essaie de parcourir différents tutoriaux mais j´ai un problème avec l´exercice suivant.

    Le but est de créer un programme qui compte les lignes d´un fichier (et rajoute leur numéro en début de ligne), mais seulement celles qui comprennent des doubles lettres (minuscules, comme aa ou bb par exemple). Il faut de plus remplacer ces doubles lettres par elles-mêmes entourées de parenthèses :

    Ex :
    ------
    Amp, James Watt, Bob Transformer, etc. These pioneers conducted many

    doit donner :

    023 Amp, James Wa(tt), Bob Transformer, etc. These pion(ee)rs conducted many



    J´arrive à retrouver les doubles lettre avec un :

    /([a-z])\1/

    dans un if,

    mais je ne vois pas comment faire le remplacement, surtout s´il y a plusieurs doubles lettres différentes dans la même ligne.

    Voilà ce à quoi j´étais arrivé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    open(INFO,$file);
    $unites=1;
    $dizaines=0;
    $centaines=0;
    while($ligne=<INFO>)
    	{
    		$_=$ligne;
    		if(/([a-z])\1/)
    			{
    				$pattern=$1;
    				s/($pattern$pattern)/($1\)/g;
    				print $centaines  . $dizaines  . $unites . " $_";
    				$unites++;
    			}
    		else
    			{
    				print "$ligne";
    			}
     
    		if ($unites==10)
    			{
    			$dizaines++;
    			$unites=0;
    			}
     
    		if($dizaines==10)
    			{
    				$centaines++;
    				$dizaines=0;
    			}
     
    	}

    Cela ne fonctionne clairement que pour un seul type de double lettre par ligne .


    Merci pour le temps que vous passerez à me répondre !!

    A bientôt

  2. #2
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Simple et rapide, ton exercice sera de comprendre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #! /usr/bin/perl
    use strict; use warnings;
     
    while( <> ){
      s/^/sprintf "%03d ", $./e if s/([a-z])\1/($1$1)/g ;
      print;
    }
    --
    Jedaï

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2003
    Messages
    1 583
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 1 583
    Points : 2 031
    Points
    2 031
    Par défaut
    Citation Envoyé par Jedai
    Simple et rapide, ton exercice sera de comprendre le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    #! /usr/bin/perl
    use strict; use warnings;
     
    while( <> ){
      s/^/sprintf "%03d ", $./e if s/([a-z])\1/($1$1)/g ;
      print;
    }
    --
    Jedaï
    Heu

    Bon courage !!!

  4. #4
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Eventuellement tu peux aussi le réécrire avec des commentaires et en plus étalé.

    --
    Jedaï

  5. #5
    Candidat au Club
    Inscrit en
    Mars 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2007
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Ok !
    Ok merci à vous, c´est réglé et compris !!

    A bientôt

    Zack

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant]Return en double ?
    Par jcaspar dans le forum Langage
    Réponses: 4
    Dernier message: 23/01/2007, 21h06
  2. [PHP-JS] Debutant :Pb de double cote Php /javacript
    Par o_live dans le forum Langage
    Réponses: 2
    Dernier message: 23/03/2006, 09h55
  3. [DEBUTANT] Transformer une variable Double en STring
    Par Battosaiii dans le forum Langage
    Réponses: 6
    Dernier message: 13/06/2005, 16h43
  4. [debutant][swt] CellEditor / CellModifier avec double clic
    Par antares24 dans le forum SWT/JFace
    Réponses: 2
    Dernier message: 10/05/2005, 02h25
  5. Réponses: 9
    Dernier message: 30/06/2004, 23h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo