bonjour
je suis encore débutant en perl
je veux savoir comment on fait pour distinguer si une valeur saisi par l'utilisateur est un entier ou un réel ??
merci
bonjour
je suis encore débutant en perl
je veux savoir comment on fait pour distinguer si une valeur saisi par l'utilisateur est un entier ou un réel ??
merci
Les valeurs "saisies" par l'utilisateur (au prompt par exemple) sont des string. A toi de les convertir en entier ou en flottant, ou de forcer la conversion. (Perl est un context-based language et il n'est donc pas étonnant que la conversion de type soit forcée par le contexte).
Que veux-tu faire ? Donne un exemple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 my $input = <>; my $float_n = $input + 0.0; printf("%.3f", $float_n);
par exemple si l'utilisateur saisit 2 il lui affiche un message "c'est un entier"
s'il saisi 3,4 il lui affiche un message "c'est un réel"
merci
Tu veux dire quelque chose commeOn lit une chaîne de caractère et on teste si elle correspond à un motif d'entier ou de réel (j'ai inclus, pour rigoler et juste pour que tu vois le principe, un pattern possible pour la notation avec exposant des réels).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 while (<>) { print "Entier\n" if /^\d+$/; print "Réel\n" if /^\d+\.\d+(E[+-]?\d+)?$/; }
je t'avoue je n'ai rien compris parcque je vien juste de commencer avec perl
en tout cas je te remercie beaucoup pour ton aide
Pardon si j'ai été trop rapide.
<> est l'opérateur readline sur un descripteur de fichier. Quand il n'y a rien dedans, Perl lit l'entrée standard (ou mieux, si des fichiers sont passés en arguements de commande Perl les ouvrent et les lit pour toi).
if /^\d+$/ teste si la ligne lue matche une certaine expression régulière : ^ (début de chaîne), \d un chiffre, + répété une ou plusieurs fois, $ fin de chaîne.
Ah oui et pour répondre à nouveau à ta question de départ, ce que tu lis ce sont des chaînes de caractères : tu peux les interpréter et les convertir (pour calcul par exemple) en entier ou flottant, comme je t'ai montré plus haut.
merci pour ta réponse
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager