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 :

tableau et conception d'une algo


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 142
    Par défaut tableau et conception d'une algo
    Bonjour,

    Je ne vois pas comment concevoir mon algo, si vous pouvez m'orienter...

    j'ai un fichier comme ceci séparé par des tabulations
    seq1 id 2 27
    seq1 h 2 11 #segment1
    seq1 h 16 22 #segment2
    seq1 h 25 27 #segment3
    seq1 id 70 95
    seq1 h 70 85 #segment1
    seq1 h 90 95 #segment2

    Au final, je voudrais calculer la taille entre chaque segment et obtenir le tableau en étape2

    étape1:
    seq1 16 12 #12=11+1
    seq1 25 23 #23=22+1
    seq1 70 86
    seq1 90 96

    étape2:
    seq1 4 #16-12
    seq1 2 #25-23
    seq1 16
    seq1 6

    là ou je bloque, c'est considérer le fait que seq1 id 2 27 a 3 segments et seq1 id 70 95 a 2 segments (autrement dit c'est considérer chaque bloc de façon indépendante)

    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
    open (FINAL, "> final") or die("Impossible d'écrire dans le fichier $!");
    open(S, "< source")or die("Impossible d'ouvrir le fichier $!");
    my @tab=();
    my $nb=0;
    while( my $ligne=<S>){
        if($ligne =~ /id/){
         }
        else{
    	if($ligne =~ /^seq([0-9]+)\t(.+)\t([0-9]+)\t([0-9]+)$/){
    	        $nb++;
    		my $debut=$3;
    		my $fin=$4+1;
    		$tab [$nb][1]=$1;
    		$tab [$nb][2]=$debut;
    		$tab [$nb][3]=$fin;
    		print(FINAL "$1\t$debut\t$fin\n");
     
    	}
        }
    }
    close (S);
    close (FINAL);
     
     
    open (FINAL, "< final") or die("Impossible d'ouvrir le fichier$!");
    for(my $i=1; $i<=$nb; $i++){
        print("$tab[$i][1]\t $tab[$i][2]\t$tab[$i-1][3]\n");
    }
    close (FINAL);

  2. #2
    Expert confirmé

    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2009
    Messages
    3 577
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Avril 2009
    Messages : 3 577
    Par défaut
    Il faut que tu mémorises les lignes qui ne contiennent pas /id/, et que tu les traite en une fois lorsque tu tombes sur /id/ (ou à la fin du fichier si tu as mémorisé des choses).

Discussions similaires

  1. [Conception] Supprimer une ligne d'un tableau à partir d'un CHECKBOX
    Par snakejl dans le forum PHP & Base de données
    Réponses: 71
    Dernier message: 30/05/2006, 08h43
  2. [Conception] Construire une image à partir d'un tableau
    Par jacques_henry dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 07/02/2006, 14h53
  3. [Collections] Transformer un tableau de données en une chaîne
    Par NATHW dans le forum Collection et Stream
    Réponses: 12
    Dernier message: 03/06/2004, 16h44
  4. tableau javascript ecrit par une fonction asp
    Par LineLe dans le forum ASP
    Réponses: 4
    Dernier message: 03/11/2003, 08h38
  5. Conception d'une classe parente
    Par VincentB dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2003, 17h28

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