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 :

negation d un string


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut [regex], [substr], [grep]: compter nombre d occurence, substitution d un vecteur
    Salut tout le monde!

    j ai ecris ce petit code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    use strict;
    use String;
     
    my $str = new String("1000");
     
    my $bit_least =$str->charAt(3), "\n";
    print $bit_least, "\n";
    print !$bit_least, "\n";
     
    my $bit_most =$str->charAt(0), "\n";
    print $bit_most, "\n";
    print !$bit_most;
    et j ai eu ce resulat:
    C:\Perl\bin>perl u:\souce_code_perl\string.pl
    0
    1
    1

    C:\Perl\bin>
    mais j ai voulu un resultat comme ca:
    C:\Perl\bin>perl u:\souce_code_perl\string.pl
    0
    1
    1
    0
    C:\Perl\bin>
    je ne sais pas pourquoi ca marche pas!

    Merci pour votre aide!

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    print interpréte ton !$bit_most comme une valeur booleenne fausse qu'il retraduit en chaine vide.
    Pour garder une valeur numérique, écrit plutôt :

    print 0+$bit
    ou
    print 0+!$bit

  3. #3
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    Merci!

  4. #4
    Expert confirmé
    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
    Par défaut
    String est un module profondément inutile, n'ajoutant absolument rien aux strings classiques de Perl... Si tu veux manipuler des vecteurs de bits, utilise plutôt un module efficient et dédié à cela tel que Bit::Vector.

    --
    Jedaï

  5. #5
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    Merci Jedai!
    j essaye d utiliser Bit::Vector.

  6. #6
    Membre confirmé
    Étudiant
    Inscrit en
    Novembre 2008
    Messages
    87
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2008
    Messages : 87
    Par défaut
    Bonjour tout le monde!

    j ai ecris ce moreau de code:

    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
    #!/usr/bin/perl -w
    use strict;
    use warnings;
     
    print "CAN-Mapping : ", "\n";
    my $can_map = <STDIN>;
    chomp $can_map;
    print "CAN Mapping values: ", "\n";
     
    &can_mapping($can_map);
     
     
     
    sub can_mapping 
    {
      my $can_mapping = shift @_;
      $can_mapping =~ s/\s//g;
      my $count_=()= $can_mapping =~ m/\d/g;
      my %hash_can_mapping=();
      my %mapping=();
     
      for (1..$count_)
      {
        (#le probleme est ici! 
          my $new_can_mapping = $can_mapping) =~ s/[0-1]/int(rand(2))/ge;
         #le probleme est ici!
     
    	 $new_can_mapping =~ s/-/int(rand(2))/ge;
    	redo if (exists $mapping{$new_can_mapping});
    	$mapping{$new_can_mapping}=1;
     
        my $bin_prefix="0b";
        my $can_mapping_bin = $bin_prefix.$new_can_mapping;
        my $can_mapping_dec = oct($can_mapping_bin); 
    	$hash_can_mapping{$new_can_mapping}=$can_mapping_dec;
      }
     
      foreach my $new_can_mapping(keys %hash_can_mapping)
      {
    	print $new_can_mapping, "=>", $hash_can_mapping{$new_can_mapping}, "\n"; 
      }
     
      return;
    }
    et voila le resultat:
    CAN-Mapping:
    1--- 0000
    CAN Mapping values:
    01101010=>106
    00111000=>56
    10101100=>172
    00011010=>26
    10100011=>163
    Maintenant j essaye d etre clair ou est mon probleme:
    mon input est un vecteur ou il y a des dont care bits et des bit bit bien preci
    (ici 1--- 0000)
    dans mon output je veux remplacer les dont care par des 1 et 0 aléatoirement et j ai fais deja ca avec la fonction rand!
    mon probleme est avec les autres bits!!!
    je veux les remplacer un par un!
    un exemple concret:
    input: 1--- 0000

    output: 5 vecteurs!
    0010 0000
    1010 1000
    1010 0100
    1010 0010
    1010 0001

    ci l exemple etait:
    input: 1000
    output serai: 4 vecteurs!
    0000
    1100
    1010
    1001

    j espere que j ai posé mon probleme de maniere claire!
    Merci pour votre aide!

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

Discussions similaires

  1. éliminer un caractere d'un string
    Par no-vice dans le forum Langage
    Réponses: 5
    Dernier message: 09/08/2002, 15h55
  2. String -> long double (_strlold ?)
    Par haypo dans le forum C
    Réponses: 7
    Dernier message: 25/07/2002, 21h22
  3. URGENT: retour de string
    Par Pinggui dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 10h47
  4. Réponses: 2
    Dernier message: 05/06/2002, 13h29
  5. String Grid et choix d'une couleur pour une ligne
    Par Gigottine dans le forum C++Builder
    Réponses: 12
    Dernier message: 17/05/2002, 16h23

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