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 :

creer plusieurs combinaisons de donnees


Sujet :

Langage Perl

  1. #1
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut creer plusieurs combinaisons de donnees
    Bonjour,

    Voila, j ai un fichier texte ou se trouvent deux types de donnees

    nom coordonnees
    lili 564 546
    mo 695 56

    Bien sur il s agit d un long enchainement de ce genre....

    Ce que je souhaiterais faire c est calculer des distances et generer toutes les combinaisons possibles!!!!

    J ai pour idee de creer une boucle qui generait toutes les solutions possibles de cette maniere :




    Pour chaque nom{
    1- Calculer distance avec le nom suivant(Pythagore)
    enchainement jusqua revenir au nom de depart
    2- associer a chaque distance calculee le couple de
    noms respectif pour lesquels nous avons calcule chaque distance


    }


    Seulement je ne sais pas coder ce genre d enchainement avec des points de depart de boucle qui changent!!!


    Un grand besoin d aide svp

  2. #2
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    tu connais les graphes? l'algorithme de Dijkstra pourrait peut etre t'aider

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  3. #3
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut reponse a ta reponse
    Merci pour la bonne intention mais g rien pige

  4. #4
    Membre Expert
    Avatar de Jim_Nastiq
    Homme Profil pro
    Architecte, Expert Flex
    Inscrit en
    Avril 2006
    Messages
    2 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Architecte, Expert Flex
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 2 335
    Par défaut
    avec les mots que t'as pas capté tu vas voir ton copain google et ca devrait normalement t'aider

    je vais pas me lancer dans une explication de l'algo de Dijkstra de peur de te dire une connerie je prefere que tu découvre via des sites bien documenté cet algo

    Pensez vraiment à effectuer une recherche avant de poster, ici et sur un moteur de recherche! c'est la moindre des choses
    Pensez au tag

    Mon Blog sur la techno Flex
    Ma page sur Developpez.com

    Jim_Nastiq

  5. #5
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par Jim_Nastiq
    tu connais les graphes? l'algorithme de Dijkstra pourrait peut etre t'aider
    Je ne pense pas qu'il ait besoin de Dijkstra : il n'est pas dans un graphe, il est dans un plan, et dans un plan la plus courte distance entre deux points c'est la droite...

    Je pense que ce qu'il cherche à faire est :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    #!/usr/bin/env perl
    use strict;
    use warnings;
     
    #on récupère le contenu du fichier, dans un tableau de ligne
    my @lines = <>;
     
    # on supprime la première ligne d'entête
    shift @lines;
     
    # on supprime les retours à la lignes
    chomp @lines;
     
    my %points;
    foreach (@lines) {
        my @fields = split;
     
        # si la ligne a bien trois champs comme une ligne valide
        if ( @fields == 3 ) {
     
            # on récupère le point de cette ligne
            $points{ $fields[0] } = [ @fields[ 1, 2 ] ];
        }
    }
     
    my %distances;
     
    # on récupère la liste des noms de points, triée alphabétiquement
    my @points_names = sort keys %points;
     
    # double boucles, les distances seront stockées dans %distances
    # la distance entre deux points a et b sera dans
    # $distances{a}{b} si a lt b, $distances{b}{a} si b lt a
    for my $i ( 0 .. $#points_names ) {
        for my $j ( $i+1 .. $#points_names ) {
            my ( $pa, $pb ) = ( $points_names[$i], $points_names[$j] );
            $distances{$pa}{$pb} =
              sqrt( ( $points{$pa}[0] - $points{$pb}[0] )**2 +
                  ( $points{$pa}[1] - $points{$pb}[1] )**2 );
        }
    }
    --
    Jedaï

  6. #6
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    Merci c gentil mais je dispose en fait d un fichier beaucoup plus complique ou du moins n ayant pas 3 variables mais plus...


    aujourd hui si qqun pouvait m aider sur la recupe des donnees pour le calcul des distances ce serait fort sympa...


    Voila je declare au debut mon tableau : my @namememories;

    ensuite j ouvre mon fichier : if (!open...

    puis boucle while qui lit mon fichier : while($line=<DESC>...

    if (expression reguliere)


    je stocke ensuite mes variables dans le tableau: @namememories=$1;

    puis quand je veux printer pour savoir si j ai acces au dernier elemnt de mon tableau je fais : print "$namememories[$#namememories]\n";


    mais il ne m affiche rien, pourriez vous m aider svp???

  7. #7
    Expert confirmé
    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
    Par défaut
    Citation Envoyé par norachaouia
    je stocke ensuite mes variables dans le tableau: @namememories=$1;
    Ce ne serait pas plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    push @namememories, $1;
    ( ton code écrase le tableau à chaque fois )

    Par ailleurs je veux bien que ton fichier ait plus de champs, mais ça ne change pratiquement rien à mon code...

    --
    Jedaï

  8. #8
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    Salut


    Merci...J y arrive tjs pas...
    Je peux demander comment tu fais pour afficher toutes les distances a partir de ton code???

  9. #9
    Expert confirmé
    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
    Par défaut
    Et bien par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for my $pa ( @points_names ) {
      my %dist_for_pa = %{$distances{$pa}};
      for my $pb ( sort keys %dist_for_pa ) {
        print "Distance entre $pa et $pb égale à $dist_for_pa{$pb}.\n";
      }
    }
    --
    Jedaï

  10. #10
    Membre averti
    Inscrit en
    Mai 2007
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 58
    Par défaut
    merci

    Helas je ne sais pas manipuler ce genre d outils et ca ne marche pas ,
    Je vais tenter de t expliquer exactement ce que je veux faire et ce que j ai reussi a a faire...

    2 min j arrive..

Discussions similaires

  1. Comment creer une base de donnée?
    Par Doberman dans le forum Installation
    Réponses: 3
    Dernier message: 09/01/2006, 14h46
  2. creer plusieurs requêtes à partir d'une
    Par pixeldargent dans le forum Access
    Réponses: 8
    Dernier message: 18/10/2005, 11h44
  3. liaison entre plusieurs base de donnee
    Par GMI dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/12/2004, 18h42
  4. Accès à plusieurs bases de données
    Par k4eve dans le forum Hibernate
    Réponses: 11
    Dernier message: 22/04/2004, 15h43
  5. [VB6]Créer une Base de données
    Par ThierryAIM dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 07/04/2003, 17h24

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