Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3128 connectés 

  FORUM HardWare.fr
  Programmation
  Perl

  Retourner une liste privée des multiples d'un nombre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Retourner une liste privée des multiples d'un nombre

n°1453929
Gattuso
Posté le 08-10-2006 à 12:49:21  profilanswer
 

Bonjour,
 
j'ai écrit une fonction Intervalle(n,x) qui permet de retirer l'élément n d'une liste allant de 1 à n.
Je souhaite utiliser cette fonction pour retirer tous les multiples de x qui sont dans cet intervalle.
La fonction NonMult(n,x) doit faire celà
Le problème est que cette dernière fonction ne fonctionne pas comme je le souhaite.
 
Voici mon code :

Code :
  1. #!/usr/bin/perl
  2. use strict;
  3. sub Intervalle
  4. {
  5.     my ($n,$x) = @_;
  6.     my @tab;
  7.     for(my ($i)=1; $i<$x; $i++){
  8. push(@tab,$i);
  9.     }
  10.     for(my ($j)=$x+1; $j<=$n; $j++){
  11. push(@tab,$j);
  12.     }
  13.     return @tab;
  14. }
  15. sub NonMult
  16. {
  17.     my ($n,$x) = @_;
  18.     my @t;
  19.     for(my ($i)=1; $i*$x<=$n; $i++){
  20. @t = Intervalle($n,$i*$x);
  21.     }
  22.     return @t;
  23. }
  24. print join(" ",Intervalle(10,7))."\n";
  25. print join(" ",NonMult(20,3))."\n";

mood
Publicité
Posté le 08-10-2006 à 12:49:21  profilanswer
 

n°1454171
gen2
Posté le 09-10-2006 à 11:49:54  profilanswer
 

Dans ta boucle for de ta fonction NonMult, tu écrases à chaque fois ta liste @t.
Ca doit pas aider ou alors j'ai pas compris ton code.
 
Et puis pour simplifier tout ça, tu devrais peut être regarder du côté de la fonction grep, ça pourrait t'aider.

n°1454203
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-10-2006 à 12:17:56  profilanswer
 

Perso j'aurais tout fait en une fonction beaucoup plus simplement:

Code :
  1. sub Intervalle {
  2.   my ($n,$x, $mult) = @_;
  3.   my @tab;
  4.   foreach(1..$n){
  5.     push(@tab,$_) if !( $_==$x || ( defined $mult && $mult==1 && !($_%$x)));
  6.   }
  7.   return @tab;
  8. }


Si tu passes 1 comme troisième argument, il vire aussi les multiples sinon il vire juste le 2eme argument

n°1454622
matafan
Posté le 09-10-2006 à 23:11:35  profilanswer
 

Ca ne repond pas a ta question, mais ta fonction Intervalle peut s'ecrire simplement return (1 .. $x-1, $x+1 .. $n).


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Perl

  Retourner une liste privée des multiples d'un nombre

 

Sujets relatifs
[JS] transformer un nombre de seconde en minutes, heures, etc...Rafraichir la liste des tables sous access via vb
Comment récupérer la valeur d'un élément dans une zone de liste"retourner" un nombre
[MSSQL] Liste des usersparcourire un tableau et compter le nombre de valeurs d'une clé
Zone de liste - largeur des colonnes[VBA] Access pb avec selections multiples
[résolu] Comment récupérer nom + quantité dans liste déroulante 
Plus de sujets relatifs à : Retourner une liste privée des multiples d'un nombre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR