Rechercher : dans
Par :

[perl]operation de probabilites

Dernière réponse le 4 fév 2006 à 17:21:11 fredo10, le 4 fév 2006 à 13:41:45 
 Signaler ce message aux modérateurs

Salut a tous,
je n'arrive pas a me tirer d'affaire avec le perl alors j'ai besoin d'un petit coup de main.
En fait je dois faire une code qui prend en parametre une chaine de caractere qui est une operation arithmetique de probabilite.
ex d'execution:
>201event "1+-8" 0,954
>201event "1+3+5" 0,978

ben j'ai d'abord essayer de recuperer les chiffres dans un tableaux puisqu'il ya une operation prealable a faire pour chaque chiffre avant d'effectuez l'operation visible.voici mon code:
if(scalar @ARGV < 2)
{
print("201event needs some arguments \n");
exit 0;
}

my @tab = $ARGV[1];
$i = 0;
$a = 0;
my @opr;

while($tab[$i])
{
if($tab[$i] == '-')
{
$opr[$a] = 1 - (((4 * $tab[$i + 1]) + 5) / (10 * $tab[$i + 1]));
print ("$opr[$a]");
print ("$tab[$i + 2]");
}
else
{
$opr[$a] = (((4 * $tab[$i]) + 5) / (10 * $tab[$i]));
print ("$opr[$a]");
print ("$tab[$i + 1]");
}
$i += 2;
$a++;
}
print ("bon test");
exit 0;

et il me met une erreur comme suit:
./201event.pl: No match.
alors jene comprends pas vraiment pourkoi il me met cette erreur la vu que je suis encore debutant en perl, j'aimerai bcp que vs m'aidiez dans ce sens a parfaire ce code.merci d'avance pour votre comprehension.

Meilleures réponses pour « [perl]operation de probabilites » dans :
Perl - les opérateurs Voir Qu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les...
PHP - Les opérateurs Voir Qu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Opérateurs de téléphonie mobile et les numéros utiles VoirCoordonnées des opérateurs de téléphonie mobile et les numéros utiles Liste non exhaustive SFR Orange Bouygues Telecom Virgin Mobile Tele2 NRJ Mobile M6 Mobile Neuf Mobile Debitel Breizh Mobile Coriolis Fnac Mobile
L'opération demandée nécessite une élévation VoirSi vous avez un de ces messages lorsque vous essayer d'introduire une commande : "L'opération demandée nécessite une élévation" "Accès refusé, vous n'avez pas des privilèges suffisants. Vous devez invoquer cet utilitaire dans un mode...
Installer Opera sous Ubuntu VoirOpera est un navigateur tout comme Firefox. Il est également très confortable et possède des fonctionnalités intéressantes (comme un client BitTorrent intégré). Pour l'installer dans Ubuntu: Sous Gutsy Gibbon (7.10) Assurez-vous que tous les...
Télécharger Opera VoirMarre des trous de sécurité du navigateur par défaut ? Envie enfin d'avoir un navigateur simple et configurable facilement ? Opera est un navigateur gratuit possédant des fonctionnalités avancées : Sessions - Enregistrez un ensemble d'onglets...
Télécharger Opera USB VoirLe célèbre navigateur Opéra est enfin disponible en version USB. OperaUSB est la version portative du célèbre navigateur libre Opera. Il présente toutes les caractéristiques que possède la version de bureau, notamment : la navigation sur le...
Langage C - Les opérateurs VoirQu'est-ce qu'un opérateur ? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, etc. On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Javascript: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les opérateurs...
Java: les opérateurs VoirQu'est-ce qu'un opérateur? Les opérateurs sont des symboles qui permettent de manipuler des variables, c'est-à-dire effectuer des opérations, les évaluer, ... On distingue plusieurs types d'opérateurs : les opérateurs de calcul les...

1

lami20j, le 4 fév 2006 à 16:49:46

Salut,

je veux bien t'aider mais d'abord j'ai besoin de quelques petits détails:

1. que veux tu faire exactement avec tes arguments ?

Tu dis que ton script prends une chaine de caractere qui est une operation arithmetique de probabilite mais je vois 2 arg "1+3+5" et 0,978 ?

2. ton tableau my @tab = $ARGV[1]; contient que le 2ème arg 0,978.
donc print scalar @tab te donnera le resultat 1.

[lamitest@localhost corbeille]$ cat ddd
#! /usr/bin/perl
use warnings;
use strict;

my @tab=$ARGV[1];
print scalar @tab,"\n";
[lamitest@localhost corbeille]$ perl ddd "1+3+5" 0,978
1
[lamitest@localhost corbeille]$
Donc je ne vois pas le sens de ta boucle qui incrémente $i de 2 ( $i +=2), à moins que tu préconises utiliser plusieurs arguments et que tu ne veux traiter que les arguments dont leur position et paire (0,2,4....)

En bref expliques ton problème. D'où tu dois partir et que tu veux obtenir.
Je t'expliquerai un peu la façon d'ecrire le code.

Ex:
print avec paranthéses et consideré comme une fonction
print sans paranthèses et un opérateur de liste.
[lamitest@localhost corbeille]$ cat print
#! /usr/bin/perl

use warnings;
use strict;

print (1+2),3;
print "\n";
print 1+2,3;
print "\n";

[lamitest@localhost corbeille]$ perl print
print (...) interpreted as function at print line 6.
Useless use of a constant in void context at print line 6.
3
33
[lamitest@localhost corbeille]$

A la place de
if(scalar @ARGV < 2)
{
print("201event needs some arguments \n");
exit 0;
} 
écrit plutôt
while( @ARGV < 2){
        die "201event needs some arguments \n";
        last;
}
ou même
while( @ARGV < 2){
        die "201event needs some arguments \n" and last;
}

Donc je n'ai pas essayé de déchiffrer ton code pour l'instant puisque je n'ai pas compris ce que tu veux.

Répondre à lami20j

2

 lami20j, le 4 fév 2006 à 17:21:11

Encore une chose. Quand tu fait un test d'égalité en perl

 if($tab[$i] == '-') 
sache qu'il y a un opérateur pour les nombres == et un pour les chaînes de caractères eq.

Je ne crois pas que '-' est un nombre.
Plutôt
 if($tab[$i] eq '-') 

Répondre à lami20j
Collection CommentÇaMarche.net