Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Modérateur : Politburo
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Allez un dernier MPO avant la fin du monde !
On entre une heure de départ et une heure d'arrivée d'un vol : soit heure1/minutes1 et heure2/minutes2, à rentrer sous forme de 4 données (donc pile remplie pour les RPN et 4 variables pour les BASIC)
L'objectif est de calculer la durée en heures et minutes du vol, sans utiliser les fonctions intégrées de calcul d'heure, ni de conversion style H/HMS. La petite contrainte amusante est que le vol dure moins de 24 heures, mais peut s'étaler sur deux jours !
Le résultat est à présenter en une fois sur le même écran, donc pour les machines sans alpha hh.mm et pour les BASIC, je vous laisse le choix.
A vous de jouer !
On entre une heure de départ et une heure d'arrivée d'un vol : soit heure1/minutes1 et heure2/minutes2, à rentrer sous forme de 4 données (donc pile remplie pour les RPN et 4 variables pour les BASIC)
L'objectif est de calculer la durée en heures et minutes du vol, sans utiliser les fonctions intégrées de calcul d'heure, ni de conversion style H/HMS. La petite contrainte amusante est que le vol dure moins de 24 heures, mais peut s'étaler sur deux jours !
Le résultat est à présenter en une fois sur le même écran, donc pour les machines sans alpha hh.mm et pour les BASIC, je vous laisse le choix.
A vous de jouer !
- bernouilli92
- Fonctionne à 14400 bauds
- Messages : 5268
- Enregistré le : 21 nov. 2012 13:03
- Localisation : Ile de France
Re: Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Voici ma solution pour HP48 (ou équivalente) :
« SWAP 60 * + ROT
60 * ROT + - DUP
IF 0 <
THEN 1440 +
END DUP 60 / IP
SWAP 60 MOD 100 / +
»
Autre version qui affiche le résulat sous forme de chaîne de caractères :
« SWAP 60 * + ROT
60 * ROT + - DUP
IF 0 <
THEN 1440 +
END DUP 60 / IP
"h" + SWAP 60 MOD +
»
« SWAP 60 * + ROT
60 * ROT + - DUP
IF 0 <
THEN 1440 +
END DUP 60 / IP
SWAP 60 MOD 100 / +
»
Autre version qui affiche le résulat sous forme de chaîne de caractères :
« SWAP 60 * + ROT
60 * ROT + - DUP
IF 0 <
THEN 1440 +
END DUP 60 / IP
"h" + SWAP 60 MOD +
»
HP, Casio, Sharp, Psion, quelques TI et divers autres
- C.Ret
- Fonctionne à 9600 bauds
- Messages : 3421
- Enregistré le : 31 mai 2008 23:43
- Localisation : N 49°22 E 6°10
Re: Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Ah! Zut j'avais pensé un truc simple type HMS- .Hobiecat a écrit :L'objectif est de calculer la durée en heures et minutes du vol, sans utiliser les fonctions intégrées de calcul d'heure, ni de conversion style H/HMS.
Mince alors
Interessant:La petite contrainte amusante est que le vol dure moins de 24 heures, mais peut s'étaler sur deux jours !
Donc si je déclare que mon avion décolle de Paris à 08:23 et atterrit à Papette à 08:23 j'ai voyagé 24h00 et non 0h0min !?!
Par contre entre 08:22 et 08:23 je n'ai qu'une minute de vol et de 08:23 à 08:22 j'ai 23h59min !!
OK.Ok; Il faut bien réfléchir aux valeurs limites !!
Une version pour HP28S très proche de l'HP48:
Code : Tout sélectionner
« ROT - 60 / LAST MOD 100 / 4 ROLLD FLOOR + SWAP - 24 MOD + »
Code : Tout sélectionner
« ROT - // (m2-m1)
60 / // nombre d'heure dans m2-m1
LAST MOD // (m2-m1) exprimé en minutes dans intervalle [0 ; 60 [
->STR "min" + // converti en chaine de caractères
4 ROLLD // mémorise en haut de pile
FLOOR + // ajoute nombre d'heure m2-m1 à h2
SWAP - // (h2' - h1)
24 MOD // exprime heures (négatives) en durée [0;24[
->STR "h" + // converti en chaine de caractères
SWAP + // ajoute la chaine donnant les minutes.
»
8 34 18 43 [DUREE] affiche 10.09 (respectivement "10h9min" selon la version).
Même principe pour HP-41C et consoeurs :
Code : Tout sélectionner
001 LBL "DUREE"
002 x:y
003 R^
004 - // (h2-h1)
005 RDN
006 x:y
007 - // (m2-m1)
008 STO Y
009 60
010 ST/ Z // calcule nombre d'heures dans (m2-m1)
011 MOD // exprime reste (m2-m1) en minutes dans [0; 60 [
012 100
013 / // mise en forme pour affichage .mm
014 ST+ Z // ajoute .mm à (h2-h1)
015 RDN
016 INT // arrondi nombre d'heure dans (m2-m1) et ajoute durée
017 +
018 24 // exprime durée au format hh.mm dans intervalle [ 0 ; 24 [
019 MOD
020 END
Code : Tout sélectionner
10:INPUT "DEPART: H,M=";A,B,"ARRIVEE: H,M=";C,D
20:F=D-B,H=INT (F/60,E=C-A+H,F=F-60H,E=E-24*INT (E/24
30:USING "###":PRINT "D";A;B;" A";C;D;"=";E;F
40:END
A comparer avec la version "naturelle de ce programme où l'on entre les heures de départ et d'arrivée naturellemtn au format hh.mmss :
Code : Tout sélectionner
10:INPUT "HH.MMSS DEPART:";A,"HH.MMSS ARRIVEE:",B
20:C=DMS (DEG B-DEG A:USING "###.####":IF C<=0 THEN C=24+C
30:PRINT A;B;C
40:END
Ou l'équivalent en RPL ;
Code : Tout sélectionner
« 24 + SWAP HMS- 24 MOD »
Modifié en dernier par C.Ret le 21 déc. 2012 13:14, modifié 7 fois.
SHARP PC-1211 PC-1360 EL-5150 PC-E500 | Commodore C=128D | Texas Instruments Ti-57LCD Ti-74BASICalc Ti-92II Ti-58c Ti-95PROCalc Ti-30XPROMathPrint | Hewlett-Packard HP-28S HP-41C HP-15C HP-Prime HP-71B | CASIO fx-602p | NUMWORKS | Graphoplex Rietz Neperlog | PockEmul | Sommaire des M.P.O. | Ma...dov'il sapone.
Re: Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Oui mais si on voyage vers l'Est ou l'Ouest ? et les fuseaux horaires ? C'est heure de vol de depart dans le fuseau de départ et idem pour l'arrivée. Parce que selon le sens du vol, on peut voyager plusieurs heures mais n'avoir que quelques minutes d'écart entre les vols, voire même moins...
- Hobiecat
- Fonctionne à 9600 bauds
- Messages : 3644
- Enregistré le : 06 sept. 2011 14:57
- Localisation : Normandie
Re: Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Palme de la rapidité pour Bernouilli92, et une nouvelle fois, brillante démonstration de C.Ret !
Ce n'est pas la question : on veut le nombre d'heures de vol, indépendamment des fuseaux horaires et du sens de vol . Le genre de calcul qui, cumulé, va servir par exemple à savoir quand remplacer une pièce sur un avion...doum-doum a écrit :Oui mais si on voyage vers l'Est ou l'Ouest ? et les fuseaux horaires ? C'est heure de vol de depart dans le fuseau de départ et idem pour l'arrivée. Parce que selon le sens du vol, on peut voyager plusieurs heures mais n'avoir que quelques minutes d'écart entre les vols, voire même moins...
Re: Misez P'tit, Optimisez - N°26 (Calcul d'heures de vol)
Ok, le nombre d'heures de vol de l'avion, pas la durée du vol. J'avions point compris