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 :

Problème avec un script qui donne l'ordre croissant d'un tableau.


Sujet :

Langage Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut Problème avec un script qui donne l'ordre croissant d'un tableau.
    Bonjour à toutes et à tous,

    J'ai trouvé un script qui donne l'ordre croissante d'un tableau. Le script en question est le suivant :
    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
     
    	my @test = qw/2 1 0/;
    	my ($n,$max,@tri,@tri_desc);
    	$max = $test[0];
     
    	while(@test){
    			$_ > $max and $max = $_ for @test;
    			for (@test){ $n++;last if $max == $_}
    			unshift @tri,$max;
    			push @tri_desc,$max;
    			splice(@test,$n-1,1);
    			$n=0;
    			$max = $test[0];
    	}
    	print "ordre croissante:\t@tri\n";
    Ce script fonctionne correctement quand le tableau d'entrée est donnée avec ce syntaxe : "my @test = qw/2 1 0/;".
    Dans mon cas, le tableau d'entrée est récupérée par une requête MySQL.
    Si j'utilise le tableau résultat de ma requête MySQL le script ne marche pas.
    Avez-vous une idée ?

    Cordalement
    Dimitri.

  2. #2
    Membre chevronné

    Homme Profil pro
    développeur
    Inscrit en
    Octobre 2013
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : développeur

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 576
    Points : 1 989
    Points
    1 989
    Par défaut
    Bonjour, tu récupères bien quelque chose de ta base? as tu essayer de comparer ton tableau résultat de mysql juste pour voir la différence?

  3. #3
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Voici un script de tri qui marche quel que soit le nombre d'éléments en entrée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my @test = qw/2 1 0/;
    my @sorted = sort {$a <=> $b} @test;
    print "@sorted \n";
    Sinon, donne-nous le tableau résultat de la requête SQL, on pourra alors certainement te dire ce qui ne marche pas.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Voici un script de tri qui marche quel que soit le nombre d'éléments en entrée:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    my @test = qw/2 1 0/;
    my @sorted = sort {$a <=> $b} @test;
    print "@sorted \n";
    Sinon, donne-nous le tableau résultat de la requête SQL, on pourra alors certainement te dire ce qui ne marche pas.
    Bonjour,

    Merci pour ta réponse lolo78.
    Le tableau résultat de la requête SQL a cette tête à l'affichage : 2 1 0.
    Comment dois-je faire pour passer ce tableau en entrée sur ce script :
    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
     
    	my @test = qw/2 1 0/;
      	my ($n,$max,@tri,@tri_desc);
    	$max = $test[0];
     
    	while(@test){
    			$_ > $max and $max = $_ for @test;
    			for (@test){ $n++;last if $max == $_}
    			unshift @tri,$max;
    			push @tri_desc,$max;
    			splice(@test,$n-1,1);
    			$n=0;
    			$max = $test[0];
    	}
    	print "ordre croissante:\t@tri\n";
    La valeur de la variable @test doit être le tableau résultat de la requête SQL.
    Actuellement la variable @test un une valeur en dur.
    Je ne sais pas si je suis clair à mes explications.

    Merci beaucoup
    Dimitri.

  5. #5
    Rédacteur/Modérateur

    Avatar de Lolo78
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Mai 2012
    Messages
    3 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2012
    Messages : 3 612
    Points : 12 469
    Points
    12 469
    Billets dans le blog
    1
    Par défaut
    Si ta requête SQL te renvoie un tableau, il suffit de faire le tri sur ce tableau.

    Je ne vois pas ce que je peux dire de plus. Montre le code effectuant la requête si tu veux plus d'aide sur une bonne façon de le faire. Mais, en gros, l'idée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @result = requete_sql();
    my @sorted_result = sort {$a <=> $b} @result;

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 121
    Points : 64
    Points
    64
    Par défaut
    Citation Envoyé par Lolo78 Voir le message
    Si ta requête SQL te renvoie un tableau, il suffit de faire le tri sur ce tableau.

    Je ne vois pas ce que je peux dire de plus. Montre le code effectuant la requête si tu veux plus d'aide sur une bonne façon de le faire. Mais, en gros, l'idée est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    my @result = requete_sql();
    my @sorted_result = sort {$a <=> $b} @result;
    Bonjour Lolo78,

    Finalement j'ai trouvé. C'était quelque-chose de tout bête. Le tableau que j'ai récupéré de ma requête était correctement affiché mais je l'envoyer vide au module d'après. Il fallait faire une commande push pour le remplir, puis ensuite l'envoyer au module d'après.
    Merci vous m'avez aider beaucoup.

    Cordalement
    Dimitri.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 22/04/2013, 18h10
  2. probléme avec la commande qui importe la base de donnée
    Par persé dans le forum Administration
    Réponses: 4
    Dernier message: 10/04/2013, 16h23
  3. probléme avec une recherche qui donne aucun résultat
    Par lila23 dans le forum Débuter
    Réponses: 8
    Dernier message: 18/04/2009, 22h47
  4. [MySQL] Problème avec un script qui ne marche pas
    Par greg056 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 15/03/2009, 21h07
  5. problème avec ma base de données
    Par pmboutteau dans le forum ASP
    Réponses: 6
    Dernier message: 25/02/2005, 13h59

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