Perl débutant: afficher une température et une heure

Fermé
Eno145 - Modifié le 26 févr. 2022 à 22:46
Eno145 Messages postés 8 Date d'inscription samedi 26 février 2022 Statut Membre Dernière intervention 3 mai 2022 - 18 mars 2022 à 20:02
Bonjour,

Je débute en Perl.
Pour un exercice de programmation, je dois pouvoir à partir d'une modification d'un script comme celui-ci indiquer en plus du nombre obtenu une heure (soit seconde valeur):


use warnings;
use strict;
use diagnostics;
my $file = $ARGV[0];
open (FICHIER, "<", $file) or die ("Impossible de lire le fichier $ARGV[0]" );
my $minimum= <FICHIER>;
while (my $ligne =<FICHIER>)
{
if ($ligne< $minimum)
{
$minimum = $ligne;
}
}
print ($minimum);


Le fichier texte utilisé trie un mot par ligne.
Une ligne = une heure.

Je ne vois pas comme gd débutant comment ajouter un compteur à ma première valeure qui indiquerait donc la position ( ou plus précisément l'heure).

Configuration: Android / Chrome 98.0.4758.101

2 réponses

[Dal] Messages postés 6175 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 30 avril 2024 1 083
Modifié le 18 mars 2022 à 18:56
Salut Eno145,

Désolé, je ne vois ta demande que maintenant.

J'avoue que je ne comprends rien à ce que tu veux faire.

Le plus simple est que tu nous dises, à partir d'un fichier de départ de quelques lignes (3, 4 lignes) quel est le résultat à l'écran que tu veux obtenir, avec une brève explication en des termes simples et concis. Parce ce que là, tu parles d'"heure", de "seconde valeur", de "mot", de "position" et franchement rien n'est clair.


Dal
1
Eno145 Messages postés 8 Date d'inscription samedi 26 février 2022 Statut Membre Dernière intervention 3 mai 2022 1
Modifié le 18 mars 2022 à 20:05
Le problème a été résolu. Pour clarifier l'énoncé qui était assez flou (désolé), il s'agissait de créer un programme comme ceci:
# Ce programme prend en argument le nom d'un fichier
# comportant des températures, à raison d'une valeur par ligne.
# Il renvoie la température minimale rencontrée dans ce fichier,
# ainsi que les heures auxquelles cette température a été minimale.
Une solution a été proposée:

use strict;
use warnings;

# 1/ On récupère le nom du fichier de températures
my $fichier = $ARGV[0];

# 2/ On ouvre le fichier de températures
open( my $temp_fh, '<', $fichier )
or die("Impossible de trouver le fichier $fichier\n");

# 3/ La plus petite température est celle de la 1re ligne du fichier
# lorsqu'on n'a lu qu'une seule ligne. L'heure où il fait le plus
# frois est la première heure.
my $temp_min = <$temp_fh>;
my $heure_cour = 0;
my $heure_min = $heure_cour . 'h';
chomp($temp_min);

# 4/ Tant qu'on peut lire des températures dans le fichier
while ( my $temp_cour = <$temp_fh> ) {
chomp($temp_cour);

$heure_cour++; # on incrémente l'heure courante

# Si on rencontre une température plus basse que la température minimale,
# on fait de la température courante la nouvelle température minimale
# et de l'heure courante la nouvelle heure où la température est la
# plus basse.
if ( $temp_cour < $temp_min ) {
$temp_min = $temp_cour;
$heure_min = $heure_cour . 'h';

}

# Si la température courante correspond à la tepérature la plus basse
# rencontrée jusque là, on ajoute l'heure courante à la chaîne de
# caractère qui contient les heures où la température a été la plus basse.
elsif ( $temp_cour == $temp_min ) {
$heure_min = $heure_min . ', ' . $heure_cour . 'h';
}
}

close($temp_fh);

# 5/ On affiche la température minimale
# et la/les heures où elle a été la plus basse
print "Temp. min. : " . $temp_min . "°C ($heure_min)";


Merci pour les commentaires à ce post.
0