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

Scripts/Batch Discussion :

Qui est pour de petits execices pour manipulation de chaînes de caractères ?


Sujet :

Scripts/Batch

  1. #1
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut Qui est pour de petits execices pour manipulation de chaînes de caractères ?
    Salut,

    qu'on dites vous de petits exercices pour tester vos acquis en scripting et rentrer en compétition avec les autres membres ? vous pouvez utiliser vbscript ou Powershell mais surtout pas de scripts hybrides et/ou d'utilitaires tierces. Chaque exercice aura une note sur 20

    le barême est un peu spécial:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Solution en scripting de commande NT:
    
    solution qui marche: 13points
    paramètrable: 2points
    explication du code: 5point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Solution en Vbscript:
    
    solution qui marche: 10points
    paramètrable: 2points
    explication du code: 5point
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Solution en PS:
    
    solution qui marche: 8points
    paramètrable: 2points
    portable en PS2: 1points
    explication du code: 5point
    je suis un dictateur, je sais


    Execice (1):
    ------------


    capturer la première lettre non repétés dans une chaîne de caractères, par exemple nous avons une chaine

    les lettres non répétes sont les caractères 'd','v', 'z', '.','c' et le 'm'
    ont veux le premier à savoir le 'd'


    Execice (2):
    -----------


    convertir en lettre majuscule apres chaque occurence d'un caractères, par exemple on a une chaine.

    l'occurence est le caractere '.'

    le resultat doit être:


    les notes seront accordés par les membres.

    bonne chance

  2. #2
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    une tentative en Vbscript pour l'execice N°1
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
    'Déclaration des variables globales
    Dim Titre,MaChaine,fso,ws,LogFile
    'Titre du Script
    Titre = "Extraction du premier caractère dans une chaîne"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject("Wscript.Shell")
    'Nom du fichier qui va stocker le résultat
    LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
    if fso.FileExists(LogFile) Then 'Si le fichier LogFile existe 
        fso.DeleteFile LogFile 'alors on le supprime
    end If
    'La boîte de saisie de la chaîne de caractères
    MaChaine = InputBox("Taper votre chaîne",Titre,"developpez.com")
    'Si la Chaîne est vide ou bien on ne tape rien dans l'inputbox,alors on quitte le script
    If MaChaine = "" Then Wscript.Quit 
    'on affiche le résultat dans un MsgBox
    MsgBox "Le premier caractère dans la chaine " & DblQuote(Machaine) &" est "& DblQuote(ExtractDebutChaine(Machaine)),64,Titre
    'Ecrire le résultat dans un fichier
    WriteLog "Le premier carctère dans la chaine " & DblQuote(Machaine) &" est "& DblQuote(ExtractDebutChaine(Machaine)),LogFile
    ws.Run LogFile,1,False
    
    '*****************************************************************
    Function ExtractDebutChaine(MaChaine)
    'Extraction du premier caractère
        ExtractDebutChaine = Left(Machaine,1)
    End Function
    '*****************************************************************
    
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************
    
    '*****************************************************************
    'Fonction pour écrire le résultat dans un fichier texte
    Sub WriteLog(strText,LogFile)
        Dim fs,ts 
        Const ForAppending = 8
        Set fs = CreateObject("Scripting.FileSystemObject")
        Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
        ts.WriteLine strText
        ts.Close
    End Sub
    '*****************************************************************

  3. #3
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Une tentative en Vbscript pour l'execice N°2
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    Option Explicit
    'Déclaration des variables globales
    Dim Titre,MaChaine,fso,ws,LogFile
    'Titre du Script
    Titre = "convertir en lettre majuscule après chaque occurence d'un caractères"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject("Wscript.Shell")
    'Nom du fichier qui va stocker le résultat
    LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
    if fso.FileExists(LogFile) Then 'Si le fichier LogFile existe 
    	fso.DeleteFile LogFile 'alors on le supprime
    end If
    'La boîte de saisie de la chaîne de caractères
    MaChaine = InputBox("Taper votre chaîne de caractères séparé par un point "& DblQuote(".") & vbCrLf &_
    "Exemple : " & DblQuote("www.developpez.com"),Titre,"www.developpez.com")
    'Si la Chaîne est vide ou bien on ne tape rien dans l'inputbox,alors on quitte le script
    If MaChaine = "" Then Wscript.Quit 
    'On affiche le résultat dans un MsgBox
    MsgBox "Le résultat de la conversion est : " & DblQuote(MajDebutChaine(MaChaine,".")),64,Titre
    'Ecrire le résultat dans un fichier
    WriteLog MajDebutChaine(MaChaine,"."),LogFile
    ws.Run LogFile,1,False
    
    '*****************************************************************
    Function ExtractDebutChaine(MaChaine)
    'Extraction du premier caractère à gauche
    	ExtractDebutChaine = Left(Machaine,1)
    End Function
    '*****************************************************************
    
    '*****************************************************************
    Function MajDebutChaine(MaChaine,Separateur)
    	Dim strText,arrText,i
    	'instancier notre variable strText
      	strText = ""
      	'On stocke notre chaîne de caractères dans un tableau
      	arrText = Split(MaChaine,Separateur)
      	'On parcourt notre tableau à partir du 2ème indice i = LBound(arrText) + 1
      	For i = LBound(arrText) + 1 to  UBound(arrText)
      	'On écrit notre nouvelle chaîne de caractères dans la variable strText
      		strText = strText & Separateur & Ucase(Left(arrText(i),1)) & mid(arrText(i),2)
      		'Si l'indice i est égale à l'indice le plus haut de notre tableau alors
      		'le separateur = ""
    		If i = UBound(arrText) Then Separateur = ""
      	Next
      	'Retour de notre résultat
      	MajDebutChaine = arrText(0) & Separateur & strText
    End Function
    '*****************************************************************
    
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
    	DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************
    
    '*****************************************************************
    'Fonction pour écrire le résultat dans un fichier texte
    Sub WriteLog(strText,LogFile)
    	Dim fs,ts 
    	Const ForAppending = 8
    	Set fs = CreateObject("Scripting.FileSystemObject")
    	Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
    	ts.WriteLine strText
    	ts.Close
    End Sub
    '*****************************************************************

  4. #4
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Superbe idée I'M Here,

    Hackoo solution 1
    - Tu n'as apparemment pas compris l'énoncé du problème.
    Il ne suffit pas seulement de récupèrer le premier carctères du string.
    Mais le premier caractère UNIQUE du string.

    Hackoo Solution 2

    - 10/10


    Voici ma solution pour le problème No 1 en BAT :

    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
    @echo off&cls
    
    set /p $var=Entrez votre string :
    if ["%$var%"]==[""] set $var=developpez.com
    echo Traitement de : %$var%
    setlocal enabledelayedexpansion
    
    :::Decomposition de la liste (test=t e s t)
    
    :test
    if defined $var (                     
                     set $car=%$var:~0,1% 
                     set $l=!$l! !$car!
                     set $var=%$var:~1%
                     goto:test)
    
    :::comptage de chaque occurence de lettre %%a dans liste %%b
    :::si $count est égal à 1 en final de traitement on a trouvé la première lettre unique du string   
    
    for %%a in (!$l!) do (set $count=0
                          for %%b in (!$l!) do (if %%a==%%b set /a $count+=1)
                          echo %%a !$count!
                          if !$count!==1 call:fin %%a) &:: si il n'y a palus de 1 occurence de %%a on a trouvé
    
    :fin
    if !$count!==1 (echo.&echo Premiere lettre unique = %1&endlocal&pause&exit)
    echo Aucune occurence unique&pause&exit
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  5. #5
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Salut hackoofr, sachadee

    Vous ne dormez pas ? En tout cas merci pour votre contribution.

    Hackoofr ton premier code ne respecte pas l'enonnce 1, par contre ton deuxieme code lui il le fait, donc t'as mérité les 17 points pour l'exercice 2

    Sachadee, j'ai teste ton code et voici le resultat:
    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
    > sacha.bat
    entrez votre string:
    traitement de: developpez.com
    d 1
    
    > sacha.bat
     entrez votre string:abcdeabcdz
    traitement de: abcdeabcdz
    d 3
    e 4
    v 1
    
    > sacha.bat
    entrez votre string:ceci est un test
    traitement de: ceci est un test

  6. #6
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut I'm Here,

    Chez-moi ça fonctionne à merveille, ça doit-être à cause des "&" en cascade.
    Je les ai supprimés Test de nouveau :

    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
    34
    35
    36
    37
    38
    39
    @echo off
    cls
    
    set /p $var=Entrez votre string :
    if ["%$var%"]==[""] set $var=developpez.com
    echo Traitement de : %$var%
    setlocal enabledelayedexpansion
    
    :::Decomposition de la liste (test=t e s t)
    
    :test
    if defined $var (                     
                     set $car=%$var:~0,1% 
                     set $l=!$l! !$car!
                     set $var=%$var:~1%
                     goto:test)
    
    :::comptage de chaque occurence de lettre %%a dans liste %%b
    :::si $count est égal à 1 en final de traitement on a trouvé la première lettre unique du string   
    
    for %%a in (!$l!) do (set $count=0
                          for %%b in (!$l!) do (if %%a==%%b set /a $count+=1)
                          rem echo %%a !$count!
                          if !$count!==1 call:fin %%a) 
    
    :: si il n'y a palus de 1 occurence de %%a on a trouvé
    
    :fin
    
    if !$count!==1 (echo.
                    echo Premiere lettre unique = %1
                    endlocal
                    pause
                    exit)
    
    echo Aucune occurence unique
    pause
    exit
    Pour le problème No 2 voici ma solution (assez minimaliste) :

    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
    @echo off&cls
    ::le carctère qui va definir la majuscule
    set $c=.
    setlocal enabledelayedexpansion
    set /p $var=Entrez votre string :
    if ["%$var%"]==[""] set $var=www.developpez.com
    echo Traitement de : !$var!
    
    :::Les éléments de substitution (.A .B .C, etc..) 
    set $alph=%$c%A %$c%B %$c%C %$c%D %$c%E %$c%F %$c%G %$c%H %$c%I %$c%J %$c%K %$c%L %$c%M %$c%N %$c%O %$c%P %$c%Q %$c%R %$c%S %$c%T %$c%U %$c%V %$c%W %$c%X %$c%Y %$c%Z
    
    :::La substitution
    
    for %%a in (%$alph%) do (set $var=!$var:%%a=%%a!)
    
    :::Le résultat
    echo.
    echo Resultat = !$var!
    echo.
    endlocal
    pause
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  7. #7
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    Citation Envoyé par sachadee Voir le message

    Chez-moi ça fonctionne à merveille, ça doit-être à cause des "&" en cascade.
    Je les ai supprimés Test de nouveau
    bravo ça marche maintenant, si tu permet j'ai quelques remarques au sujet de ton code final de l'exercice 1:


    REMARQUE1:

    on peux inversé l'enoncé en changeant "!$count!==1" en "!$count! GTR 1" pour capturé le premier caractère "répété" on peux ausi en changeant "set $l=!$l! !$car!" en "set $l=!$car! !$l!" inverser le processus pour ne capturer que le dernier caractère non répéte (ou répété)

    REMARQUE2:

    sécuriser la variable avec des guillemets set $l=!$l! "!$car!" permettera d'interpréter les caractères '<espace>,;=' qui ne sont interprété par l'interpreteur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    (CMD) > for=%a;;;in==(;;"hello=",=),do===@echo %a
    "hello="
    REMARQUE3:

    si on veux tester des numériques il vaux mieux utiliser 'EQU' au lieu de '==' parceque si l'interpreteur 'tombe' sur l'operateur '==' dans avec un 'if' il conserve 'l'expression' littérale puis l'execute, par contre s'il 'tombe' sur l'operateur 'EQU' il essayera d'abord de convertir "l'expression" en numérique avant de l'executer, si elle n'est pas entre guillemets.

    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
    @echo off
    
    echo test1:
    set x=0xa
    
    if  %x%==10       echo     ==
    if "%x%"=="10"    echo   ""==""
    if  %x% EQU 10    echo    EQU
    IF "%x%" EQU "10" echo "" EQU ""
    
    echo test2:
    set x=0000000000010
    
    if  %x%==8       echo     ==
    if "%x%"=="8"    echo   ""==""
    if  %x% EQU 8    echo    EQU
    IF "%x%" EQU "8" echo "" EQU ""
    
    pause

    pour l'exercice 1 je vote: 19 points


    Citation Envoyé par sachadee Voir le message
    Pour le problème No 2 voici ma solution (assez minimaliste) :

    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
    @echo off&cls
    ::le carctère qui va definir la majuscule
    set $c=.
    setlocal enabledelayedexpansion
    set /p $var=Entrez votre string :
    if ["%$var%"]==[""] set $var=www.developpez.com
    echo Traitement de : !$var!
    
    :::Les éléments de substitution (.A .B .C, etc..) 
    set $alph=%$c%A %$c%B %$c%C %$c%D %$c%E %$c%F %$c%G %$c%H %$c%I %$c%J %$c%K %$c%L %$c%M %$c%N %$c%O %$c%P %$c%Q %$c%R %$c%S %$c%T %$c%U %$c%V %$c%W %$c%X %$c%Y %$c%Z
    
    :::La substitution
    
    for %%a in (%$alph%) do (set $var=!$var:%%a=%%a!)
    
    :::Le résultat
    echo.
    echo Resultat = !$var!
    echo.
    endlocal
    pause
    je n'ai pas testé avec differents cas, mais à priori ça marche et c'est le but final, t'as mérité tes 19 points...bon j'attends encore hackoofr pour son code de l'enoncé 1

    Exercice 3

    un code qui compte le maximum d'occurences qui se suivent dans une chaine puis reduit la chaîne selon un nombre choisi par l'utilisateur, supposant qu'on aie une chaine: "AabccccbaaaayyteeeAasaaaa" l'utilisateur choisi la lettre 'a' et une reduction de '1' le resultat doit être:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Before    : AabccccbaaaayyteeeAasaaaa
    character : a
    Reduce    : 1
    After     : AabccccbayyteeeAasa
    Maxcount  : 4
    Bonne chance

  8. #8
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Merci I'm HERE pour tes corrections

    Voici ma solution au problème No 3 :

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    @echo off&cls
    setlocal enabledelayedexpansion
    
    ::::::::Définition des conditions
    
    :::La chaine de caractère
    
    set /p $var=Entrez le string a tester : 
    
    :::la lettre traitée
    
    set /p $lettre=Entrez la lettre a tester :
    
    :::la réduction
    
    set /p $num=Entrez la réduction a appliquer : 
    cls
    
    :::Decomposition de la liste (test=t e s t)
    
    set $init=!$var!
    
    :test
    if defined $var (set $car=%$var:~0,1% 
                     set $l=!$l!!$car!
                     set $var=%$var:~1%
                     goto:test)
    echo !$l!
    
    :::comptage des occurences  
    
    set $count=0
    for %%a in (!$l!) do (if %%a==%$lettre% (set /a $count+=1
                                             set $max=!$count!) else (set $count=0)
                          set $occur=!$occur! !$count!)
    set $occur=!$occur:~1!
    echo !$occur!
    
    :::Traitement du maximum d'occurence
    
    set $max=0
    for %%a in (!$occur!) do (if %%a gtr !$max! set $max=%%a)
    
    ::::La Réduction à $num caractère de $lettre
    
    set $count=1
    for %%a in (!$occur!) do (set $count1=1
                              for %%b in (!$l!) do (if !$count! equ !$count1! (if %%a equ 0 (set $reconstruct=!$reconstruct! %%b)
                                                                               if %%a neq 0 (if %%a leq %$num% set $reconstruct=!$reconstruct! %%b))
                                                    set /a $count1+=1)
                              set /a $count+=1)
    
    echo.
    ECHO RESULTAT :
    echo.
    echo Before    : !$init!
    echo Character : !$lettre!
    echo Reduce    : !$num!
    echo After     : !$reconstruct: =!
    echo Maxcount  : !$max!
    pause >nul
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  9. #9
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut Solution de l'Exercice N°1

    Solution de l'Exercice N°1
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    Option Explicit
    'Déclaration des variables globales
    Dim Titre,MaChaine,fso,ws,LogFile
    'Titre du Script
    Titre = "Extraction du premier caractère dans une chaîne"
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ws = CreateObject("Wscript.Shell")
    'Nom du fichier qui va stocker le résultat
    LogFile = Left(Wscript.ScriptFullName,InstrRev(Wscript.ScriptFullName, ".")) & "txt"
    if fso.FileExists(LogFile) Then 'Si le fichier LogFile existe 
    	fso.DeleteFile LogFile 'alors on le supprime
    end If
    'La boîte de saisie de la chaîne de caractères
    MaChaine = InputBox("Taper votre chaîne",Titre,"developpez.com")
    'Si la Chaîne est vide ou bien on ne tape rien dans l'inputbox,alors on quitte le script
    If MaChaine = "" Then Wscript.Quit 
    'On affiche le résultat dans un MsgBox
    MsgBox "Le premier caractère dans la chaine " & DblQuote(Machaine) &" est "& DblQuote(MyFirstLettreUnique(Machaine)),64,Titre
    'Ecrire le résultat dans un fichier
    WriteLog "Le premier caractère dans la chaine " & DblQuote(Machaine) &" est "& DblQuote(MyFirstLettreUnique(Machaine)),LogFile
    ws.Run LogFile,1,False
    
    '*****************************************************************
    Function MyFirstLettreUnique(strText)
    	Dim j,r,c 
    'On parcourt dans une boucle for
    	For j = 1 To Len(strText)
    'On extrait la chaîne lettre par lettre
    		c = Mid(strText,j,1)
    'on compare la lettre extraite à la suivante
    		If InStr(j + 1,strText,c,vbTextCompare) = 0 And c <> vbcr Then
    			r = c
    			Exit For
    		Else
    'Remplacer la lettre répété avec "Vbcr" afin de ne pas la retrouver lors dans parcours de la boucle
    			strText = Replace(strText,c,vbcr)
    		End If
    	Next
    	MyFirstLettreUnique = r 
    End Function
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
    	DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************
    
    '*****************************************************************
    'Fonction pour écrire le résultat dans un fichier texte
    Sub WriteLog(strText,LogFile)
    	Dim fs,ts 
    	Const ForAppending = 8
    	Set fs = CreateObject("Scripting.FileSystemObject")
    	Set ts = fs.OpenTextFile(LogFile,ForAppending,True)
    	ts.WriteLine strText
    	ts.Close
    End Sub
    '*****************************************************************

  10. #10
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    @sachadee,

    j'ai un problème avec ton code de l'enoncé '3', voici ce qu'il me sort:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (CMD) > Entrez le string a tester:sachadee
    (CMD) > Entrez la  lettre a tester:e
    (CMD) > Entrez la reduction a appliquer:1
    
    Before     : sachadee
    Character  : e
    Reduce     : 1
    After      : sachadeesachadeesachadeesachadeesachadeesachadeesachadee
    MaxCount   : 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    (CMD) > Entrez le string a tester:saachaaaaaaaaadee
    (CMD) > Entrez la  lettre a tester:a
    (CMD) > Entrez la reduction a appliquer:2
    
    Before     : saachaaaaaaaaadee
    Character  : a
    Reduce     : 2
    After      : saachaaaaaaaaadeesaachaaaaaaaaadeesaachaaaaaaaaadeesaachaaaaaaaaade
    esaachaaaaaaaaadeesaachaaaaaaaaadeesaachaaaaaaaaadeesaachaaaaaaaaadeesaachaaaaaa
    aaadeesaachaaaaaaaaadee
    MaxCount   : 9
    le compte du max d'occurences est OK, mais la reduction ne marche pas bien.


    @hackoofr,

    +17 pour l'enoncé 1

    Exercice 4:

    créer une fonction qui retourne '0' si la chaine entrée par l'utilisateur est un palindrome sinon '1'

    Bonne chance

  11. #11
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut I'm Here,

    Quel est ton OS ?

    Lorsque je test mon code (W7 32bits) voici le résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    s a a c h a a a a a a a a a d e e
    0 1 2 0 0 1 2 3 4 5 6 7 8 9 0 0 0
    
    RESULTAT :
    
    Before    : saachaaaaaaaaadee
    Character : a
    Reduce    : 3
    After     : saachaaadee
    Maxcount  : 9
    Mais avec le résultat que tu m'as donné j'ai essayé de recréer l'erreur chez-moi et j'ai modifié le code en conséquence donc, voici la 2éme version
    qui marche également chez-moi.

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    :::la réduction
    
    set /p $num=Entrez la réduction a appliquer : 
    cls
    
    :::Decomposition de la liste (test=t e s t)
    
    set $init=!$var!
    
    :test
    if defined $var (set $car=%$var:~0,1% 
                     set $l=!$l!!$car!
                     set $var=%$var:~1%
                     goto:test)
    echo !$l!
    
    :::comptage des occurences  
    
    set $count=0
    for %%a in (!$l!) do (if %%a==%$lettre% (set /a $count+=1
                                             set $max=!$count!) else (set $count=0)
                          set $occur=!$occur! !$count!)
    set $occur=!$occur:~1!
    echo !$occur!
    
    :::Traitement du maximum d'occurence
    
    set $max=0
    for %%a in (!$occur!) do (if %%a gtr !$max! set $max=%%a)
    
    ::::La Réduction à $num caractère de $lettre
    
    set $count=1
    for %%a in (!$occur!) do (set $count1=1
                              for %%b in (!$l!) do (if !$count! equ !$count1!  (if %%a equ 0 (set $reconstruct=!$reconstruct! %%b
                                                                                                                                  ) else (
                                                                                                          if %%a leq %$num% set $reconstruct=!$reconstruct! %%b))
                                                    set /a $count1+=1)
                              set /a $count+=1)
    
    echo.
    ECHO RESULTAT :
    echo.
    echo Before    : !$init!
    echo Character : !$lettre!
    echo Reduce    : !$num!
    echo After     : !$reconstruct: =!
    echo Maxcount  : !$max!
    endlocal
    pause >nul
    Je m'attaquerai au "Palindrome" uniquement lorsque celui-çi fonctionnera chez-toi.



    A+
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  12. #12
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    Salut sachadee,

    Maintenant ça fonctionne j'ai un xpsp2

    je crois que tu sais ta note

    Juste pour ne pas rester passif et encourager les autres membres à contribuez aussi, car j'ai l'impression que seuls sachadee et hackoofr sont les seul membres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    set /a n=$max=0
    for %%b in (!$l!) do (
       if %%b==%$lettre% (
             set /a n+=1,$max+="^!((n-$max)>>31)*(n-$max)"
       ) else set n=0
       if !n! LEQ %$num%  set "$reconstruct=!$reconstruct!%%b"
    )
    set $
    Bonne chance pour la suite

  13. #13
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Excellent I'm HERE !!!!

    Voici le palindrome :

    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
    @echo off&cls
    setlocal enabledelayedexpansion
    
    set /p $var=Entrez votre string :
    if ["%$var%"]==[""] set $var=Mon nom
    echo Traitement de : %$var%
    
    ::On joint la valeur d'entrer (Mon nom -> Monnom)
    set $var_init=%$var: =%
    
    :::Inversion de la liste (sacha -> ahcas)
    :test
    if defined $var (                     
                     set $car=!$var:~0,1!
                     set $l=!$car!!$l!
                     set $var=!$var:~1!
                     goto:test)
    
    set $l=!$l: =!
    
    ::Si les 2 string sont égal (Monnom=monnoM) on set l'errorlevel à 0 sinon à 1
    if /i !$var_init!==!$l! (cmd /c exit 0) else (cmd /c exit 1)
    
    echo -!$var_init!-
    echo -!$l!-
    
    echo Resultat : %errorlevel%
    
    endlocal
    A+
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  14. #14
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    Solution Mot Palindrome en Vbscript :
    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
    Option Explicit
    Dim MyStr
    MyStr=UCase(inputbox("Entrez la chaîne de caractères :","Mot Palindrome","Radar"))
    If MyStr = "" Then WScript.Quit
    MsgBox CheckPalindrome(MyStr)
    
    Function CheckPalindrome(MyStr)
    Dim RevStr
    'La fonction StrReverse inverse une chaîne de caractères
    RevStr=strreverse(MyStr)
    'La fonction StrComp compare deux chaînes et retourne une valeur qui représente le résultat de la comparaison
    '  -1 (Si string1 < chaîne2)
    '   0 (si chaine1 = chaîne2)
    '   1 (si chaine1 > chaîne2)
    if strcomp(MyStr,RevStr) = 0 then
       Msgbox DblQuote(MyStr) & " = " & DblQuote(RevStr) & " est un palindrome !",64,DblQuote(MyStr) & " est un palindrome !"
       CheckPalindrome = 0
    else
       Msgbox DblQuote(MyStr) & " = " & DblQuote(RevStr) & " n'est pas un palindrome",48,DblQuote(MyStr) & " n'est pas un palindrome"
       CheckPalindrome = 1
    end if
    End Function
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************
    'http://www.listesdemots.com/motspalindromes.htm

  15. #15
    Membre chevronné
    Avatar de I'm_HERE
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 013
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 013
    Points : 1 991
    Points
    1 991
    Par défaut
    salut,

    @sachadee,

    une autre fois, tu prouve que t'es vraiment L'AMI DU BAT
    si tu permets j'ai quelques toutes petites remarques:

    REMARQUE 1:

    au lieu de "cmd /c exit n" tu peux utiliser directement "exit /b n" car ton code n'appel pas un programme externe

    REMARQUE 2:

    la raison pour laquelle on a choisi dans l'ennoncé 3 que le code retourne un errorlevel est pour avoir un code modulaire et composable pour ensuite l'utiliser comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    call ispalindrome.bat && if_True || if_False
    et bénéficier ainsi d'une simple "librairie" qui nous aidera dans nos futur codes

    @hackoofr

    Citation Envoyé par hackoofr Voir le message
    'La fonction StrReverse inverse une chaîne de caractères
    tu sais maintenant pourquoi je te donne 17points et sachadee 19points

    Exercice5:

    créer une fonction qui affiche qui parse la chaine introduite par l'utilisateur et exclu tous ce qui n'est pas un nombre puis si le nombre trouvée est paire alors elle retourne un '0', si il est impaire '1', et s'il ne s'agit pas de nombre '2'

    Bonne chance

  16. #16
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut,
    Citation Envoyé par I'm_HERE Voir le message
    Exercice5:
    créer une fonction qui affiche qui parse la chaine introduite par l'utilisateur et exclu tous ce qui n'est pas un nombre puis si le nombre trouvée est paire alors elle retourne un '0', si il est impaire '1', et s'il ne s'agit pas de nombre '2'
    Peux-tu reformuler ?

    Un peu de Powershell, pour changer.

    Exercice 1 :
    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
    $T=@(
     "developpez.com",
     "dédé à developpez.com",
     'aab',
     'baa'
     'aba',
     'aabC',
     'cbaa',
     'acba',
     'abca'
     )
    [int]$NombreOccurence=1
    foreach ($Phrase in $T)
    {
      Write-Warning "Traite '$Phrase'"
      foreach ($lettre in $Phrase.GetEnumerator()|Group-Object) 
      {
         #Se base sur l'ordre de classement de Group-Object 
        if ($Lettre.Count -eq $NombreOccurence) 
        { 
          Write-Host $Lettre.Name -fore green
          break
        }
      }
    }
    Exercice 2 :
    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
    $S='www.developpez.com'
     #http://stormimon.developpez.com/dotnet/expressions-regulieres/#L3.7.2
    $Pattern='(?<=\.)(.)'
    
    #Tests simples sur la regex
    '...' -replace $Pattern,'[$1]'
    $S -replace $Pattern,'[$1]'
    
    #Délégué utilisant un cast( V1)
    [regex]::replace( $S, $Pattern, {([string]$args[0]).ToUpper()} )
    
    #Délégué utilisant la clause Param ( V2 et > )
    [regex]::replace( $S, $Pattern, {param ([string]$Lettre) $Lettre.ToUpper()} )
    
    #Code verbeux mais plus lisible
    $MonScripBlock={param ([string]$Lettre) $Lettre.ToUpper()}
    [regex]::replace($S,$Pattern,$MonScripBlock)
    
    #En plus compliqué : génération de code
    #Ne nécessite pas de délégué, mais de l'aspirine
    Invoke-Expression "`"$($S -replace $Pattern,'$(''$1''.ToUpper())')`""
    Exercice 3 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $s='cAabccccbaaaabbbYYYteeeYyyyAasaaaayy'
    $sb={param ([string]$S, [string]$Char, [int]$Count) $S -creplace "$char{$count,}", "$($char*$count)"}
    &$sb $s 'a' 1

  17. #17
    Expert éminent
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 839
    Points : 9 222
    Points
    9 222
    Par défaut

    sans utilisation de la fonction StrReverse "and i need my" +1
    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
    34
    35
    36
    37
    'http://www.listesdemots.com/motspalindromes.htm
    'http://fr.wikipedia.org/wiki/Palindrome
    Option Explicit
    Dim MyStr,Titre
    Titre = "Mot Palindrome ou Non !"
    MyStr = UCase(inputbox("Entrez la chaîne de caractères :",Titre,"Sa nana snob porte de trop bons ananas"))
    If MyStr = "" Or IsNull(MyStr) Then WScript.Quit
    MyStr = Trim(MyStr)
    MyStr = Replace(MyStr," ","") 'Pour enlever les espaces dans la chaîne
    MsgBox DblQuote(MyStr) & vbcr & "Sans Espaces",64,"Sans Espaces"
    MsgBox CheckPalindrome(MyStr)
    
    Function CheckPalindrome(MyStr)
        Dim LongeurChaine,i,Str1,Str2
        LongeurChaine = Len(MyStr)
    '1ere boucle For : on parcourt et on extrait lettre par lettre
        For i = 1 To LongeurChaine
            Str1 = Str1 + Mid(MyStr,i,1)
        Next
    '2eme boucle For :  on parcourt et on extrait lettre par lettre en sens inverse
        For i = LongeurChaine To 1 Step -1
            Str2 = Str2 + Mid(MyStr,i,1)
        Next
        If Str1 = Str2 Then
            Msgbox DblQuote(Str1) & " = " & DblQuote(Str2) & " est un palindrome !",64,DblQuote(MyStr) & " est un palindrome !"
            CheckPalindrome = 0
        Else
            Msgbox DblQuote(Str1) & " <> " & DblQuote(Str2) & " n'est pas un palindrome",48,DblQuote(MyStr) & " n'est pas un palindrome"
            CheckPalindrome = 1
        End If
    End Function
    '*****************************************************************
    'Fonction pour ajouter des guillemets dans une variable
    Function DblQuote(Str)
        DblQuote = Chr(34) & Str & Chr(34)
    End Function
    '*****************************************************************

  18. #18
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut Laurent,

    Un peu de Powershell, pour changer.
    C'est vraiment extra ! et lorsque je vois la taille de tes codes en PS
    ça me donne vraiment envie d e m'y mettre.

    Hackoo !

    Et I'm Here encore merci.

    Une petite remarque également :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    au lieu de "cmd /c exit n" tu peux utiliser directement "exit /b n" car ton code n'appel pas un programme externe
    effectivement c'est une solution. Mais dans notre cas ou je dois afficher le résultat au final cela ne fonctionne pas car

    va interompre imédiatement le processus.



    N'oubliez pas les +1 pour I'm HERE (si je pouvais je mettrais un +1000)

    A+ pour le No 5
    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

  19. #19
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    Salut,

    Citation Envoyé par sachadee Voir le message
    N'oubliez pas les +1 pour I'm HERE (si je pouvais je mettrais un +1000)
    Vous voulez du vert
    Je vais faire ce que je peux

  20. #20
    Membre expert
    Avatar de sachadee
    Homme Profil pro
    AMI DU BAT
    Inscrit en
    Janvier 2013
    Messages
    1 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Brésil

    Informations professionnelles :
    Activité : AMI DU BAT
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2013
    Messages : 1 478
    Points : 3 768
    Points
    3 768
    Par défaut
    Salut minnesota,

    ça fait plaisir de te relire.

    Sympa le vert !

    ________________________________
    Un p'tit coup de pouce ça fait toujours plaisir, pensez-y !
    ________________________________

Discussions similaires

  1. Réponses: 11
    Dernier message: 13/12/2011, 17h41
  2. Réponses: 3
    Dernier message: 17/08/2011, 14h40
  3. Réponses: 3
    Dernier message: 26/05/2010, 23h39
  4. un petit probleme pour vous un grand pour moi
    Par forstyle dans le forum Réseau
    Réponses: 6
    Dernier message: 04/11/2009, 20h03
  5. Meilleur algorithme pour trier de très grandes quantités de chaînes de caractères
    Par Cecilka dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/05/2006, 11h23

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