PERL   11

meteo.pl

Guest on 25th July 2021 04:47:39 PM

  1. #! /usr/local/bin/perl
  2. use strict;
  3.  
  4. sub ConversionCK {
  5.   my $v = shift;
  6.   $v += 273.15;
  7.   return $v;
  8. }
  9.  
  10. sub ConversionFK {
  11.   my $v = shift;
  12.   return $v*0.555556 + 255.37;
  13. }
  14.  
  15. sub File_Tab {
  16.   my $file = shift;
  17.   open(METEO1, "<$file") or die ("not open TempPt1");
  18.   my @tab = ();
  19.   while (<METEO1>) {
  20.     chomp($_);
  21.     push(@tab, $_);
  22.   }
  23.   close(METEO1);
  24.   #Ajout fonction de conversion
  25.   for (my $i =0; $i < 80; $i++) {
  26.     my $v = $tab[$i];
  27.     my $unit = chop($v);
  28.     #print(" $unit \n");
  29.     if ($unit eq 'C') {
  30.       $v = ConversionCK($v);
  31.     } elsif ($unit eq 'F') {
  32.       $v = ConversionFK($v);
  33.     }
  34.     $tab[$i] = $v.'K';
  35.   }
  36.   return @tab;
  37. }
  38.  
  39. sub moyenne {
  40.   my @tab = @_;
  41.   my $moy = 0;
  42.   foreach my $v (@tab) {
  43.     my $unit = chop($v);
  44.     #print(" $unit \n");
  45.     $moy += $v;
  46.   }
  47.   return ($moy/80);
  48. }
  49.  
  50. #print("Donner le nom du fichier à ouvrir \n");
  51. #my $v = <STDIN>;
  52. #chomp($v);
  53.  
  54.  
  55. my @Tab1 = File_Tab("TempPt1.txt");
  56. my @Tab2 = File_Tab("TempPt2.txt");
  57. my @Tab3 = File_Tab("TempPt3.txt");
  58.  
  59. my $moy1 = moyenne(@Tab1);
  60. my $moy2 = moyenne(@Tab2);
  61. my $moy3 = moyenne(@Tab3);
  62.  
  63. print("$moy1 K, $moy2 K, $moy3 K \n");
  64.  
  65. my @moy = ();
  66. for (my $i =0; $i < 80; $i++) {
  67.   $moy[$i] = ($Tab1[$i] + $Tab2[$i] + $Tab3[$i]) / 3;
  68. }
  69.  
  70. open(RES, "+> Resultats.txt");
  71. print "RES open";
  72. for (my $i =0; $i < 80; $i++) {
  73.   my $j = $i+1;
  74.   print(RES "$j $Tab1[$i] $Tab2[$i] $Tab3[$i] \n");
  75. }
  76. print(RES "\n");
  77. print(RES "$moy1 K, $moy2 K, $moy3 K \n ");
  78. close(RES)

Raw Paste


Login or Register to edit or fork this paste. It's free.