Calcul de temps entre une distance et une vitesse

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Calcul de temps entre une distance et une vitesse

Message par GallyHC »

Bonjour,

J'ai fait cette petite fontion pour calculer le temps d'un deplacement entre le nombre de Km et la vitesse en Km/h. Je ne sais pas du tout si cela sera utile a quelqu'un mais bon je vous la partage tout de même.

Code : Tout sélectionner

Procedure.s KmbyTime(lkm.f, speed.l)
;
  Define result.f

  result = (lkm * 1000) / ((speed * 1000) / 3600)
  ProcedureReturn FormatDate("%hh:%ii:%ss", result)

EndProcedure

; KmbyTime(Distance, Vitesse)
Debug KmbyTime(320, 130)
J'ai aussi mis le code sur mon site a l'adresse "http://koakdesign.info/news/?url=4d&val=33"

Cordialement,
GallyHC
Dernière modification par GallyHC le mer. 14/sept./2011 17:56, modifié 2 fois.
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Calcul de temps entre une distance et une vitesse

Message par Ar-S »

Cool :)
merci, ça sent l'option sur maxibox non ?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Calcul de temps entre une distance et une vitesse

Message par GallyHC »

Salut Ar-s,

Heuuuuu, peu etre lolll

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Re: Calcul de temps entre une distance et une vitesse

Message par Kwai chang caine »

Merci du partage, fallait y penser 8)
Ca peu toujours être utile..on sait jamais
ImageLe bonheur est une route...
Pas une destination

PureBasic Forum Officiel - Site PureBasic
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Calcul de temps entre une distance et une vitesse

Message par GeBonet »

Merci,
Mais essais un peu : Debug KmbyTime(900, 30)
ou bien en générale un nombre de Km qui ferais qu'a cette vitesse là, ça dépasse 24 heures !!!
En gros il manque les jours...
comme par exemple SOLUTION :

Code : Tout sélectionner

Procedure.s KmbyTime(lkm.f, speed.l)
 
  Shared NbJour
	Define result.f
	NbJour=Int(lkm.f/speed.l/24)
	result.f=(lkm.f-(NbJour*24*speed.l))/speed*3600
  ProcedureReturn FormatDate("%hh:%ii:%ss", result)

EndProcedure
;     KmbyTime(Distance, Vitesse)
Temp$=KmbyTime(8590,84)
Debug Str(NbJour)+" jours "+Temp$
Voilà, voilà...
Dernière modification par GeBonet le jeu. 15/sept./2011 15:31, modifié 1 fois.
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Calcul de temps entre une distance et une vitesse

Message par GallyHC »

Bonjour,

On ajoute simplement %dd et le texte et cela devrais fonctionner.

Code : Tout sélectionner

Procedure.s KmbyTime(lkm.f, speed.l)
;
  Define result.f

  result = (lkm * 1000) / ((speed * 1000) / 3600)
  ProcedureReturn FormatDate("%dd jour(s) et %hh:%ii:%ss", result)

EndProcedure

; KmbyTime(Distance, Vitesse)
Debug KmbyTime(8590, 84)
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Calcul de temps entre une distance et une vitesse

Message par Backup »

GallyHC a écrit :Bonjour,

On ajoute simplement %dd et le texte et cela devrais fonctionner.
non !

Code : Tout sélectionner

Procedure.s KmbyTime(lkm.f, Speed.l)
      ;
      Define Result.f
      
      Result = (lkm * 1000) / ((Speed * 1000) / 3600)
      ProcedureReturn FormatDate("%dd jour(s) et %hh:%ii:%ss", Result)
      
EndProcedure

; KmbyTime(Distance, Vitesse)
Debug KmbyTime(40, 40)

devrai ecrire 0 jours , 1 heure

hors ça ecris 1 jours, 1 heure ... :roll: c'est pas pareil .... ;)
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Calcul de temps entre une distance et une vitesse

Message par GallyHC »

Bonjour,

Dobro> merci pour l'info je pense que sa aurait pu fonctionner je vais revoir cela. bon le calcul de base est bon, je vais voir a ajouter cette fonction.

Cordialement,
GallyHC

PS: pour mon truc a moi sa parte d'un calcul qui ne devrais pas depasser 5h donc cela ete bon (POUR MOI).
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Calcul de temps entre une distance et une vitesse

Message par GeBonet »

@Dobro
Exactement... Et c'est bien pour cela que j'ai joins l'exemple... Ci dessus !!! :wink:
Voilà, voilà..

@GallyHC
A Noter que "FormatDate("%hh:%ii:%ss", Date() )" n'est qu'une forme de présenter Date() et composantes inclue comme "hh:mm:ss"
Donc %dd comme %mm ne peuvent être dissocié d'une date() et donc tant qu'on lui donne quelque chose inférieur à 24 heures pas de problème on peut l'utiliser, au delà il faut que ce soit une date, sinon cela n'as plus de sens du moins pour ce qui est des jours, mois...

Extrait de la DOC ou F1 sur Date()
Renvoie la valeur du temps système (nombre de secondes écoulées depuis le '01/01/1970 0:00:00'). Si les variables Année, Mois, Jour, Heure, Minute et Seconde sont spécifiées, la représentation en secondes de cette date est retournée. FormatDate() peut être utilisé pour transformer la date en format utilisateur.
Voilà. :wink:
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Calcul de temps entre une distance et une vitesse

Message par GallyHC »

Bonjour,

Je penses que comme cela c mieu mais pas parfait :)

Code : Tout sélectionner

 Procedure.s KmbyTime(lkm.f, speed.l)
;
  Define result.f

  result = (lkm * 1000) / ((speed * 1000) / 3600)
  If result < 86400
    Debug FormatDate("%hh:%ii:%ss", result)
  Else
    Debug FormatDate("%dd jour(s) et %hh:%ii:%ss", result)
  EndIf

EndProcedure

; KmbyTime(Distance, Vitesse)
Debug KmbyTime(8590, 84)
Debug KmbyTime(84, 84)
Debug KmbyTime(60, 84)
Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Calcul de temps entre une distance et une vitesse

Message par GeBonet »

@GallyHC

Excuse moi, mais je crois que tu n'as pas lu ce que j'ai passé de la doc officielle... Ni même essayé l'exemple que je place ci dessus !
L'exemple que je met plus haut ne touche pas à %dd et n'en est pas dépendant !

Ce que tu place là, fonctionne mais jusque ou ???
Imagine que la distance reste 8950 ou plus et la vitesse 15 Km/hrs, il faudra y inclure des mois, et de nouveau il faudrait introduire des :
If result < 86400 ???
Debug FormatDate("%hh:%ii:%ss", result)
Else
Debug FormatDate("%dd jour(s) et %hh:%ii:%ss", result)
EndIf
pour chaque niveau de temps ou distance... :wink:
Je penses que comme cela c mieux mais pas parfait :) OUI mais pas une solution...
:mrgreen:

Il y a une base d'exemple ci dessus qui respect des règles de calcul normale comme :
Ors pour moi ? FAIT a la calculatrice et à la main...
8590 Klm / 84 km/h = En Heures => 102.2619.. ou 102 heures et 2619.. unitée
ou en jours: 102.2619 / 24 heures = 4.2609126984126986 (4 jours +...)

Donc 8590 à faire - (4 jours à 84 Klm/hrs) ==> 8064 Klm
Et donc 8590 - 8064 = Reste 526 klm/84Km/h ==> 06:15:43
D’où résultat 4 Jours et 6 heures 15 minutes et 43 secondes.
Cordialement aussi !
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Avatar de l’utilisateur
GallyHC
Messages : 1708
Inscription : lun. 17/déc./2007 12:44

Re: Calcul de temps entre une distance et une vitesse

Message par GallyHC »

@GeBonet,

Ok merci comme je disait perso c'ete pour une calcul qui ne depasse pas 5h donc tout ete bon pour ma part. Je vais tout de meme jour a essaye de faire le calcul complet comme cela vous serez content :)

Cordialement,
GallyHC
Configuration : Tower: Windows 10 (Processeur: i7 "x64") (Mémoire: 16Go) (GeForce GTX 760 - 2Go) - PureBasic 5.72 (x86 et x64)
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Calcul de temps entre une distance et une vitesse

Message par GeBonet »

GallyHC a écrit :@GeBonet,
Ok merci comme je disait perso cette pour une calcul qui ne depasse pas 5h donc tout ete bon pour ma part. Je vais tout de même jour a essaye de faire le calcul complet comme cela vous serez content :)
Cordialement,
GallyHC
C'est gentil, mais pas la peine de vous tracasser pour moi, j'ai des solutions... :lol:
Dont celle que J'AI PLACÉE ci-dessus 8) Ou forme détaillée ci-dessous !
Merci.

Pour Rappel :

Code : Tout sélectionner

Procedure.s KmbyTime(lkm.f, speed.l)
  ;
  Shared NbrJours.i
  Define result.f
  ;
  NbrHeures.f = lkm/speed               ; 1 - Nombre d'heures utiles
  NbrJours    = Int(NbrHeures.f/24)     ; 2 - Nombre de jours utiles  
  ResteEnKlm  = lkm-(NbrJours*24*speed) ; 3 - Klm restant en plus des jours (s'il y a lieu)
  ;           Debug :  Pour vérification.... A supprimer ! 
  Debug "======================================="
  Debug "Total Heures Utile : "+StrF(NbrHeures) ; Affiche réponse 1
  Debug "Nombre de Jours  : "+Str(NbrJours)    ; Affiche réponse 2
  Debug "Km en Heures       : "+Str(ResteEnKlm)  ; Affiche réponse 3
  Debug "======================================="
  ;
  result = ResteEnKlm / (speed  / 3.6) * 1000   ; Forme pour les Kilomètres restants !
  ProcedureReturn FormatDate("%hh:%ii:%ss", result)

EndProcedure
;            KmbyTime(Distance, Vitesse)
TempRestant$=KmbyTime(8590, 84)
Debug "> Nombre de jours : "+Str(NbrJours)+" et "+TempRestant$
Debug "============================================================"
; 
End
; =============================================================
; Et ICI pour 8590 Klm à 84 klm/hrs 
; on doit avoir "4 jours et 06 Hrs 15 Min 43 Sec. 
; =============================================================
; Alors passons par la case départ et faisons ça à la main...
; ------------------------------------------------------------------------------------------------------------
; Ors pour moi ?  FAIT a la calculatrice et à la main... 
;                 8590 Klm / 84 km/h = En Heures => 102.2619.. ou 102 heures et 2619.. unitée
;                 ou en jours: 102.2619 / 24 heures = 4.2609126984126986 (4 jours +...)
;    
; Donc 8590 à faire - (4 jours à 84 Klm/hrs) ==> 8064 Klm 
; Et donc 8590 - 8064 = Reste 526 klm/84Km/h ==> 06:15:43 D'ou 4 Jours et 6 heures 15 minutes et 43 secondes.
; ----------------------------------------------------------------------------------------------------
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
beruska
Messages : 21
Inscription : sam. 28/mai/2011 12:32

Re: Calcul de temps entre une distance et une vitesse

Message par beruska »

Tout simple:

Code : Tout sélectionner

Procedure.s kmbytime(d.f, v.f)
  
  Shared jours,heures,minutes,secondes
  
  t.f = d/v
  t = t/24
  jours = Int(t)
  t = (t - Int(t)) * 24
  heures = Int(t)
  t = (t - Int(t)) * 60
  minutes = Int(t)
  t = (t - Int(t)) * 60
  secondes = Round(t, #PB_Round_Nearest)
  
  Debug Str(jours) + " jour(s)  " + Str(heures) + " h  " + Str(minutes) + " mn  " + Str(secondes) + " s."  
  
EndProcedure

kmbytime(8590, 84)
kmbytime(350, 130)
kmbytime(72, 90)
kmbytime(7289, 18)
Salve!
Avatar de l’utilisateur
GeBonet
Messages : 453
Inscription : ven. 29/févr./2008 16:17
Localisation : Belgique

Re: Calcul de temps entre une distance et une vitesse

Message par GeBonet »

Ben, oui, revenir au base du calcul !!! C'est toujours juste pour tout cas !
Maintenant à la décharge de "GallyHC" c'est que pour SON problème il n'as besoin que
d'un valeur pouvant-être facilement donné par FormaDate(....,Date()).

Mais alors dans son cas (- de 24Heures), pourquoi pas utiliser directement et simplement :

Code : Tout sélectionner

NbKm.f=155:Vitesse.f=24
Debug FormatDate("%hh:%ii:%ss", (NbKm / Vitesse) * 3600 )
OU

Code : Tout sélectionner

Debug FormatDate("%hh:%ii:%ss", (155.00 / 24.00) * 3600 )
Attention :
155.00 et non 155 c'est ce qui marque la différence entre l'Entier et le Flottant

Et c'est tout ! :wink:
Windows 7 et Windows 8.1 Pb 5.0 jusque 5.24 Lts 64 et 5.3 (64)/b]
“Ceux qui rêvent éveillés ont conscience de mille choses qui échappent à ceux qui ne rêvent qu’endormis.”
-Edgar Allan Poe-
Répondre