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 :

Fourchette de nombre avec virgules


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut Fourchette de nombre avec virgules
    Salut a tous,

    J'aimerai testé si un nombre taper sur STDIN rentre bien dans une certaine fourchette.
    Le seul problème c'est que le nombre peut-etre aussi fractionnel (comprendre à virgule) et c'est la que ca passe pas avec le module Number::Range que j'ai trouvé sur CPAN.

    Voilà mon script avec Number::Range :

    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Number::Range;
     
    my ($s_q_audio);
    my ($q_audio);
    	do {
    		print "       Tapez un chiffre compris entre '-1' et '10' : ";
    		$q_audio = <STDIN>; chomp $q_audio;
    		my $range = Number::Range->new("-1.00..10.00");
    			if ( $range->inrange( $q_audio ) ) {
    				print "OK\n";
    				$s_q_audio = "20";
    			}
    			else {
    				print "Pas bon :(\n";
    				$s_q_audio = "20";
    			}
    	} until ( $s_q_audio eq "10" );
    C'est normal que l'on ne sorte jamais de la boucle do - until, c'est pour testé.

    Voilà ce que ca donne dans le shell :

    Tapez un chiffre compris entre '-1' et '10' : -1
    OK
    Tapez un chiffre compris entre '-1' et '10' : 10
    OK
    Tapez un chiffre compris entre '-1' et '10' : 2.75
    Pas bon
    Alors, comment testé si le nombre tapé sur STDIN soit bien compris entre -1 et 10 en sachant que celui-ci peut-être à virgule ?

    Jjeje007

  2. #2
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Bonjour,

    Je ne comprend pas pourquoi tu ne te contentes pas d'un test >= -1 and <=10 ... Il passera très bien !
    Mais si tu veux absolument utiliser ton module, ne garde que la partie entière de ton nombre avec la fonction int ! Fais juste attention aux fourchettes que tu vas utiliser dans ce cas, la partie entière de 10,5 selon Perl est 10 : si tu testes si ton nombre est plus petit ou égal à 10 et que tu prends la partie entière de 10.5, le test sera validé !
    "En essayant continuellement, on finit par réussir. Donc : plus ça rate, plus on a de chances que ça marche" (devise Shadock)
    Application :

    ainsi qu'à regarder la avant de poser une question.

    La rubrique Perl recrute, contactez-moi.

  3. #3
    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
    Citation Envoyé par Woufeil
    Bonjour,

    Je ne comprend pas pourquoi tu ne te contentes pas d'un test >= -1 and <=10 ... Il passera très bien !
    Je vais supposer d'emblée qu'il veut quelque chose de plus complexe que cela, par exemple une union d'intervalle de réels. Dans ce cas utiliser Number::Range pouvait sembler raisonnable, puisqu'on peut définir une "Range" de 1 à 10 et de 20 à 30, puis faire le test aussi facilement qu'avant (alors qu'avec ta solution c'est plus compliqué).
    Cependant Number::Range est visiblement limité aux entiers (et très efficace pour eux : O(1), mais un peu gourmand en espace), ce qu'il lui faut c'est plutôt Set::Infinite.

    --
    Jedaï

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 50
    Points : 41
    Points
    41
    Par défaut
    Je ne comprend pas pourquoi tu ne te contentes pas d'un test >= -1 and <=10 ... Il passera très bien !
    Simplement parce que je connaissais pas (suis un noob, j'aurais du le préciser )
    Il se trouve qu'en cherchant un peu avec mon pote google je suis tomber sur Number::Range et que c'était plutot simple à mettre en place

    Bref, je te remercie, je vais utiliser ">= -1 and <= 10", ca marche presque bien.
    Je dis presque parce que si on tape rien, j'ai ca :

    Tapez un chiffre compris entre '-1' et '10' :
    Argument "" isn't numeric in numeric ge (>=) at ./test3 line 12, <STDIN> line 9.
    OK
    Et il print quand même ok

    :::Edit :::

    Je viens de rajouter :

    Et c'est bon, je n'ai plus le "Argument "" isn't numeric in numeric ge (>=) at ./test3 line 12, <STDIN> line 9."

    Merci !!

    Jjeje007

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

Discussions similaires

  1. problème dans la somme des deux nombre avec virgule
    Par aymen8219 dans le forum Langage
    Réponses: 1
    Dernier message: 15/11/2011, 15h24
  2. PROC FORMAT pour un nombre avec virgule
    Par vallery dans le forum SAS STAT
    Réponses: 6
    Dernier message: 20/04/2011, 09h50
  3. affichage de nombre avec virgule sur crystal report
    Par itservice dans le forum VB.NET
    Réponses: 1
    Dernier message: 06/04/2009, 19h45
  4. Enregistrer un nombre avec virgule
    Par mitnick2006 dans le forum MySQL
    Réponses: 3
    Dernier message: 05/02/2009, 20h36
  5. sum avec des nombres avec virgule
    Par Bruno2000 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/09/2004, 15h01

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