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 :

Soustraction entre ligne d'un fichier


Sujet :

Langage Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut Soustraction entre ligne d'un fichier
    Bonjour,

    le lis un fichier contenant des infos :

    A 1 0.400
    B 2 1.000
    C 3 1.200
    D 4 1.300

    je dois calculer la différence qu'il y a entre entre chaque ligne de la colonne 3.

    Je devrais obtenir la meme valeur sur la ligne 1 (0.400) et faire des souscractions sur les suivantes avec les lignes précédentes :

    A 1 0.400
    B 2 0.600
    C 3 0.200
    D 4 0.100

    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
    use strict;
    use warnings;
     
    my $fic_ouvert = "fichier.txt";
    open my $FICHIER, ">", "$fic_ouvert" or die "Erreur: $!";
    my $calcul;
    while (my $ligne_alire  = <$FICHIER>)
    {
      chomp($ligne_alire);
      my ($data1, $data2, $num) = split m/\s+/, $ligne_alire;
      $num = abs($num);
      $calcul -= $num;
     
      print "$data1 $data2 $calcul\n"; 
    }
    Le pb c'est que ca marche pour les 2 premieres lignes, mais ensuite ca ne me retourne pas les bons résultats

    Peut on m'aiguiller?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 221
    Par défaut
    C'est normal que cela ne fonctionne pas ;-)

    Ton algo est mauvais, puisque tu soustrais la nouvelle ligne avec le résultat du calcul précédant et non la valeur de la ligne précédante...


    il faut dans ton cas stocké la valeur précédente dans une variable qui va te servir au calcul, et faire une exception pour la première ligne.

    voici un exemple:

    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
    use strict;
    use warnings;
     
    my $fic_ouvert = "./fichier.txt";
    open my $FICHIER, "<", "$fic_ouvert" or die "Erreur: $!";
    my $calcul;
    my $tmp_value;
    my $first = 0;
     
    while (my $ligne_alire  = <$FICHIER>)
    {
      chomp($ligne_alire);
      my ($data1, $data2, $num) = split m/\s+/, $ligne_alire;
      $first += 1;
      if ( $first == 1)
      {
      	$calcul = $num;
      	$tmp_value = $num;
      }
      else
      {
      	$calcul = $num - $tmp_value;
      	$tmp_value = $num;
      }
     
     
      print "$data1 $data2 $calcul\n"; 
    }

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    36
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2005
    Messages : 36
    Par défaut
    Merci mamax29 ! Ca fonctionne parfaitement, et en plus j'ai compris mon erreur

    A+

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

Discussions similaires

  1. [LibreOffice][Tableur] Fusion soustraction de lignes entre deux fichiers xls/csv
    Par yankyank dans le forum OpenOffice & LibreOffice
    Réponses: 8
    Dernier message: 24/04/2014, 22h01
  2. Gnuplot Tacer soustraction entre des colones d'un fichier
    Par Pilote26 dans le forum Autres langages
    Réponses: 0
    Dernier message: 18/02/2014, 10h57
  3. Réponses: 9
    Dernier message: 25/06/2011, 00h40
  4. Réponses: 1
    Dernier message: 11/01/2009, 11h34
  5. Supprimer la premiere ligne d'un fichier
    Par Kahiba dans le forum Langage
    Réponses: 7
    Dernier message: 11/02/2003, 10h18

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