Se connecter avec
S'enregistrer | Connectez-vous

Algorithme aide

Dernière réponse : dans Programmation
Lassé par la pub ? Créez un compte
Expert Programmation

C'est des simples calcul de modulo et divisions
Tu prends ton nombre de secondes par exemple :
  1. int sec = 130; //donc 0h 2min 10sec
  2. int min = sec/60;
  3. int heure = min/60;
  4.  
  5. sec = sec % 60;
  6.  
  7. cout << heure << "h " << min << "min " << sec << "sec" << endl;
  8. //Affiche : 0h 2min 10sec

voici l'algo , le problème qui se pose cest que par exemple lorsque j'entre une valeur 3600 et jmet seconde comme unite au lieu de mettre 1h il me met 60 min et 60 seconde ( double erreur : deja il y a le faite qu'il ne devrait pas afficher 60 minute mais une heure et ensuite il y a le faite qu'il y a toujours des secondes qui se promennent le résultat est donc faut " il calcule mal" voila si vous pouviez m'aidez merci ;) 

convertir seconde ou minute en heure-minute-seconde.

1 VARIABLES
2 Seconde EST_DU_TYPE NOMBRE
3 minute EST_DU_TYPE NOMBRE
4 heure EST_DU_TYPE NOMBRE
5 Durée EST_DU_TYPE NOMBRE
6 UNITE EST_DU_TYPE CHAINE
7 DEBUT_ALGORITHME
8 AFFICHER "entrez votre valeur"
9 LIRE Durée
10 AFFICHER "entrez l'unité (seconde ou minute)"
11 LIRE UNITE
12 SI (UNITE=="seconde") ALORS
13 DEBUT_SI
14 Seconde PREND_LA_VALEUR Durée%60
15 minute PREND_LA_VALEUR floor(Durée/60)
16 Seconde PREND_LA_VALEUR minute+Seconde
17 AFFICHER "le resultat est "
18 AFFICHER minute
19 AFFICHER " min "
20 AFFICHER Seconde
21 AFFICHER " sec"
22 SI (Seconde >= 3600) ALORS
23 DEBUT_SI
24 Seconde PREND_LA_VALEUR heure+minute+Seconde
25 heure PREND_LA_VALEUR minute*60
26 AFFICHER "le resultat est "
27 AFFICHER heure
28 AFFICHER "h"
29 AFFICHER minute
30 AFFICHER "min"
31 AFFICHER Seconde
32 AFFICHER "sec"
33 FIN_SI
34 FIN_SI
35 SI (UNITE=="minute") ALORS
36 DEBUT_SI
37 minute PREND_LA_VALEUR Durée%60
38 heure PREND_LA_VALEUR floor(Durée/60)
39 minute PREND_LA_VALEUR heure+minute+Seconde
40 AFFICHER "le resultat est "
41 AFFICHER heure
42 AFFICHER "h"
43 AFFICHER minute
44 AFFICHER "min"
45 AFFICHER Seconde
46 AFFICHER "sec"
47 FIN_SI
48
49 FIN_ALGORITHME
Expert Programmation

Je t'aide: Il faut que quelle que soit l'unitée d'entrée, tu convertisses la durée en secondes. Appelons cette variable Timestamp.
  1. SI (UNITE=="secondes") ALORS
  2. DEBUT_SI
  3. Timestamp = Durée
  4. FIN_SI
  5. SI (UNITE=="minutes") ALORS
  6. DEBUT_SI
  7. Timestamp = Durée*60
  8. FIN_SI
  9. SI (UNITE=="heures") ALORS
  10. DEBUT_SI
  11. Timestamp = Durée*3600
  12. FIN_SI

De là tu peux facilement convertir en heures, minutes et secondes.

cela ne fonctionne toujours pas , je crois que l'erreur est autre part , pouriez-vous me donner votre email pour que jpuisse vous envoyer l'algorithme entier parque sous format texte sa ne mavance pas
voici mon adresse : ******@hotmail.fr
merci d'avance

Pas de coordonnées
Expert Programmation

Non, je ne traite rien en privé, sinon ce n'est pas la peine d'être sur un forum.
Le système est pourtant très simple à faire, voici le code en PHP:
  1. <?php
  2. function duration2human($duration, $unit="s") {
  3. $heures = 0;
  4. $minutes = 0;
  5. $secondes = 0;
  6. switch($unit) {
  7. case "h": // heures
  8. $duration = 3600*$duration;
  9. break;
  10. case "m": // minutes
  11. $duration = 60*$duration;
  12. break;
  13. }
  14. if ($duration >= 3600) {
  15. $heures = floor($duration/3600);
  16. $duration = $duration % 3600;
  17. }
  18. if ($duration >= 60) {
  19. $minutes = floor($duration/60);
  20. $durations = $duration % 60;
  21. }
  22. $secondes = $duration;
  23. return sprintf("%02dh %02dm %02ds", $heures, $minutes, $secondes);
  24. }


Je pense que tu peux en tirer l'algo facilement.
Expert Programmation

C'est pourtant assez simple, il n'y a que des mots simples:
  1. VARIABLES
  2. seconde EST_DU_TYPE NOMBRE
  3. seconde PREND_VALEUR( 0 )
  4. minute EST_DU_TYPE NOMBRE
  5. minute PREND_VALEUR( 0 )
  6. heure EST_DU_TYPE NOMBRE
  7. heure PREND_VALEUR( 0 )
  8. Durée EST_DU_TYPE NOMBRE
  9. Unité EST_DU_TYPE CHAINE
  10. AFFICHER "entrez votre valeur"
  11. LIRE Durée
  12. AFFICHER "entrez l'unité (seconde, minute ouheure)"
  13. LIRE Unité
  14. DEBUT_ALGORITHME
  15. SI Unité VAUT "heure" ALORS
  16. Durée PREND_VALEUR( Durée * 3600 )
  17. FIN SI
  18. SI Unité VAUT "minute" ALORS
  19. Durée PREND_VALEUR( Durée * 60 )
  20. FIN SI
  21. heure PREND_VALEUR( floor(Durée / 3600) )
  22. Durée PREND_VALEUR( Durée MODULO 3600 )
  23. minute PREND_VALEUR( floor(Durée / 60) )
  24. seconde PREND_VALEUR( Durée MODULO 60 )
  25. AFFICHER "le resultat est "
  26. AFFICHER heure
  27. AFFICHER "h"
  28. AFFICHER minute
  29. AFFICHER "min"
  30. AFFICHER Seconde
  31. AFFICHER "sec"
  32. FIN_ALGORITHME

C'est pas bien compliqué non ?

jai reproduis ton algo et cela ne fonctionne pas ( il maffiche : ***L'algorithme contient une erreur : impossible de le lancer***
***Vérifiez la syntaxe des affectations et des conditions***)
ps :
(jutilise algobox et par exemple la commande modulo ny est pas )
et un autre probleme lalgorithme doit permettre de convertir les secondes ou les minutes en heure minute et seconde et non pas les heures et les minutes donc si tu pouvais une derniere fois me refaire au format texte avec tout sa pris en compte ce serais gentil .
Merci encore .
Expert Programmation

Je ne connais pas algobox, je sais juste écrire des algos. Et tu dois pouvoir trouver comment faire un modulo (% ?) dans ce pseudo-langage.
Et tu as maintenant tous les éléments pour faire par toi même. donc pose des questions précises et tu auras des réponses précises.
Expert Programmation

Mais c'est hyper simple ! Tu n'as qu'à modifier AFFICHER "entrez l'unité (seconde, minute ou heure)" pour que ça ne parle plus d'heures, et supprimer les lignes 15 à 17 (inclues).

Ou bien, tu n'as pas du tout compris l'algo ?
Expert Programmation

Ok, donc tu n'as rien compris.
L'algo que j'ai donné par du principe que si l'unité n'est pas des minutes (ni des heures si on conserve les lignes 15 à 17), et bien on est en secondes.
Vu que l'algo converti en secondes si on est pas en secondes.

Ok mais la en suprimant les lignes 15à 17 jme retoruve avec un si que pour les minutes
et donc quand jentre une valeur lalgo affiche le meme resultat quelque soit lunité que jai donné (seconde ou minute) donc il manque quelquechose
ex jentre 3600 seconde il mafiche 1 h
jentre 3600 minute il mafiche aussi 1 h

stp envoie un algo bete et mechant au format texte toi la tu as redigé un algo en partant du principe que si cetais pas les minutes cetais les secondes etccc
si tu peux me passer un algo simple un peu comme celui que javais commencer avec les conditions pour les secondes et celles pour les minutes tous simplement.
merci j'espere qu'on va finir par y arriver ;)  lol
Expert Programmation

Ok, alors je vais te le refaire et tu vas voir que ça ne change quasi rien.
  1. VARIABLES
  2. seconde EST_DU_TYPE NOMBRE
  3. seconde PREND_VALEUR( 0 )
  4. minute EST_DU_TYPE NOMBRE
  5. minute PREND_VALEUR( 0 )
  6. heure EST_DU_TYPE NOMBRE
  7. heure PREND_VALEUR( 0 )
  8. Durée EST_DU_TYPE NOMBRE
  9. Unité EST_DU_TYPE CHAINE
  10. AFFICHER "entrez votre valeur"
  11. LIRE Durée
  12. AFFICHER "entrez l'unité (seconde ou minute)"
  13. LIRE Unité
  14. DEBUT_ALGORITHME
  15. SI Unité VAUT "minute" ALORS
  16. Durée PREND_VALEUR( Durée * 60 )
  17. FIN SI
  18. SI Unité VAUT "seconde" ALORS
  19. Durée PREND_VALEUR( Durée )
  20. FIN SI
  21. heure PREND_VALEUR( floor(Durée / 3600) )
  22. Durée PREND_VALEUR( Durée MODULO 3600 )
  23. minute PREND_VALEUR( floor(Durée / 60) )
  24. seconde PREND_VALEUR( Durée MODULO 60 )
  25. AFFICHER "le resultat est "
  26. AFFICHER heure
  27. AFFICHER "h"
  28. AFFICHER minute
  29. AFFICHER "min"
  30. AFFICHER Seconde
  31. AFFICHER "sec"
  32. FIN_ALGORITHME

Et maintenant je clos, parce que tu ne fais pas le moindre effort.
Lassé par la pub ? Créez un compte
Tom's guide dans le monde