Problème de fonction conversions durée

Fermé
dounkad - 7 mars 2011 à 14:50
 dounkad - 7 mars 2011 à 16:08
Bonjour, pour les besoins d'un exercice, je dois créer une fonction durée dont voici l'énoncé :
La durée doit recevoir deux paramètres de types chaînes au format suivant : "jj/mm HH:MM:SS", et un paramètre de type tableau d'entiers de 12 cases déjà initialisées (contenant dans chaque case le nombre de jours du mois correspondant : par exemple la case 1 qui correspond à janvier contiendra 31, ect.).

La fonction doit retourner la différence entre les deux dates et heures précises. Cette différence sera retournée au format "Jjours HH:MM:SS". "J" peut être de taille variable, alors que "HH", "MM" et "SS" doivent obligatoirement comporter deux positions. Les deux dates sont obligatoirement la même année (d'ailleurs l'année n'est pas précisée).

Quel que soit l'ordre chronologique des dates, la valeur retournée ne peut pas être négative.
Exemple : si la fonction reçoit "10/04 23:00:02" et "20/08 03:10:05", elle devra retourner :"131jours 04:10:03" car entre les deux dates et heures, il y a exactement une différence de 131 jours, 4 heures, 10 minutes et 3 secondes.

Vous avez aussi à votre disposition les fonctions suivantes :
fonction extraireChaine (mot : chaine, debut : entier, longeur : entier) : chaine
// permet d'extraire une sous chaine dans la chaine mot, à partir de la position debut et avec un nombre de caractères = à longueur
Exemple : extraireChaine ("bonjour", 4, 2) va retourner "jo"
fonction val (valeur : chaine) : entier
// convertit valeur au format entier
fonction str (valeur : entier) : chaine
// convertit valeur au format chaine
Vous disposez de la constante NBSECJOUR qui contient 86400 (nombre de secondes dans un jour) et également de deux fonctions que j'ai crée :

A)
Fonction Différence (nb1, nb2) : entiers

Var
diff : entier

Début
Si nb1 > nb2
Alors diff = nb1 - nb2
Sinon si nb1 < nb2
Alors diff = nb1 - nb2
Fin si
Fin si
Retourner (diff)
Fin

B)
Fonction hhmmss (nombreSec : entier)

Var
heure := chaîne
minute := chaîne
seconde := chaîne
nombreConverti := chaîne

Début
heure = nombreSec / 3600
Si heure < 10
Alors heure = « 0 » + heure
Fin si
minute = (nombreSec - (heure * 3600)) / 60
Si minute < 10
Alors minute = « 0 » + minute
Fin si
seconde = (nombreSec - (heure * 3600) + (minute * 60)) / 60
Si seconde < 10
Alors seconde = « 0 » + seconde
Fin si
nombreConverti = heure + « : » + minute + « : » + seconde
Retourner (nombreConverti)
Fin



A voir également:

1 réponse

choubaka Messages postés 39375 Date d'inscription jeudi 4 avril 2002 Statut Modérateur Dernière intervention 14 avril 2024 2 100
7 mars 2011 à 15:10
bonjour

Et quelle est ton problème exactement ?
Quelle est ta question ?
0
la question est : Est-ce que quelqu'un peut m'aider a créer la fonction durée ?
à l'aide des fonctions fournis et celles que j'ai créer
0