Bonjour, est-ce-que l'on peut trier des dates avec le quicksort???
Bonjour, est-ce-que l'on peut trier des dates avec le quicksort???
Foa,
On peut trier n'importe quoi avec un algorithme de tri.
Il faut bien évidemment que tu saches comparer 2 dates, en disant si l'une est plus grande, égale, ou supérieure à l'autre, ce qui dépend de la manière dont tu définis tes dates.
Bonjour
je ne sais pas trop comment comparer mes 2 dates, actuelement je les ai stocké dans un tableau à une dimension de 3 colonnes (jj, mm, aaaa), declarer en word.Envoyé par droggo
Doe,
Manière que je trouve compliquée.Envoyé par relena93
ici, édité --------------
Il faut commencer par définir un type pour stocker les dates, ce qui permet de gérer une seule variable par date.
-------------- fin édition
Deux manières principales :
- un enregistrement:
et faire tableau de date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type date = record an, mois, jour : integer; end;
Pour comparer, d'abord sur an, puis mois, puis jour.
- stocker le tout dans une seule variable, en se donnant la manière de faire,
par exemple
Ainsi encodée, pour comparer les dates, il suffit de comparer directement leur valeur.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 { pour éviter les trop grandes valeurs dues à l'année, on peut décaler, par exemple de doffset, en considérant qu'on va stocker 0 pour l'année valant doffset } const doffset = 1980; type date = longint; { pour stocker on va mettre les différentes valeurs avec des facteurs de multiplication différents, en prenant soin qu'il ne puisse pas y avoir recouvrement des valeurs après multiplication } const an_mult = 10000; mois_mult = 100; { pour le jour, 1, donc pas besoin de définir } { et pour stocker la date au bon format } function date_genere(a,m,j : integer) : longint; var res : longint; begin res := (a - doffset) * an_mult; res := res + m * mois_mult; res := res + j; date_genere := res; end; { pour extraire les valeurs de l'année, mois et jour, il suffira de faire l'inverse } ...
Oué ca marche comme ça, mais dans ce cas, on ne peut pas faire d'opération sur les dates (ajout, soustraction). Pour cela il faut effectivement compter les jours avec les années bissextiles et tout. En général, dans le monde UNIX, on prend le 1er janvier 1970 comme référence.
Gae,
La demande est "trier des dates", pas faire des opérations avec.Envoyé par wormful_sickfoot
Et la référence que j'ai mise à 1980, ce n'était qu'un exemple.
De toute manière, si référence il y a, elle est variable selon les systèmes, les implémentations différentes pour les langages, etc...
Le tout est de savoir ce qu'on fait, et de bien documenter.
Certes la demande est pour comparer, mais je trouve que la solution que tu proposes risque de donner de mauvaises habitudes. Ce n'est pas une programmation propre à mon goût. Si on doit gérer des dates, autant le faire proprement, car cette fonction pourra être réutilisable dans d'autres cas, et compatibles avec d'autres opérations comme l'addition et la soustraction de dates. C'est pour ça que je préconise une "vraie" conversion en respectant année bissextile, nombre de jours par mois, etc...
Quand à la référence, UNIX prend le 1er janvier 1970, mais on peut prendre le 1er janvier de l'an 0, ou le 24 août 1972 si ca nous chante
Jao,
Je sais bien, et ce n'est pas ainsi que je stocke les dates.
De toute manière, quelle que soit la représentation choisie, on peut toujours implémenter les fonctions qui font les calculs nécessaires, ce qui n'est pas forcément un mauvais exercice au début, et permet justement de réfléchir à une éventuelle meilleure implémentation.
Bonjour,
petit point de digression...
les dates depuis l'an zéro pas facile à gérer je pense vu qu'on a changé de système entre le calendrier julian et grégorien et que dix jours on été "supprimé" mais si Unix le fait alors super !wormful_sickfoot
Quand à la référence, UNIX prend le 1er janvier 1970, mais on peut prendre le 1er janvier de l'an 0, ou le 24 août 1972 si ca nous chante
Unix ne fait qu'à partir du 1er janvier 1970 à ma connaissance, je ne pense pas qu'on puisse le changer.
Deo,
[troll]Envoyé par wormful_sickfoot
Tiens, ça m'avait échappé à la 1ère lecture.
Il n'y a pas d'année 0 dans le calendrier.
[/troll]
Je sais, c'était de l'humour...Envoyé par droggo
Mei,
Et la réponse aussi.Envoyé par wormful_sickfoot
Gio,
Brisons-là, sinon ça risque de durer longtemps.
Bonjour,
de toute façon ça aide à se poser des questions les dates à zéro....
entre les calendriers comme nous le connaissons, ceux des autres civilisations, les calendriers astronomiques etc...., on s'aperçoit qu'un petit problème peut soulever bien des questions...
Pour revenir à cela j'ai du travailler sur le bug de l'an 2000 et après on nous disait "tu vois c'était un truc médiatique il ne s'est rien passé..."
Les personnes ne savent pas toutes les centaines d'heures qui ont été passées pour remettre au format date (propre) les anciennes dates qui étaient stockées sur 6 caractères (sous la forme AAMMDD), et qui maintenant sont stockées en vrai format date sur lesquels on peut faire des calculs directs.
Alors c'est vrai on veut aller vite pour programmer mais après quand il faut revenir dessus, que de temps perdu juste pour de la maintenance.
désolé j'avais pas vu la réponse pour mon post précédent...droggo a écrit :
Brisons-là, sinon ça risque de durer longtemps.
Moe,
Ça s'adressait à wormful_sickfoot, j'aurais dû le préciser.Envoyé par JoseF
Et pour ta remarque sur le format des dates : à l'époque, chaque octet, que dis-je, chaque bit de mémoire était précieux (j'ai commencé dans les années 70, où le "gros" ordinateur régional disposait de 32 Koctets au total[oui, 32 Kilo octets]), il fallait donc faire avec.
Mes logiciels n'ont jamais souffert de ce problème, car je n'ai eu besoin de gérer des dates que plus tard, quand je suis passé à la programmation sur micro ordi. Au début, la mémoire était également précieuse, mais comme je ne gérais que quelques dates en simultané, je stockais l'année avec sa valeur réelle, ce que je n'aurais peut-être pas pu faire si j'avais dû en gérer des centaines ou milliers en même temps.
Et c'est vrai qu'il y a eu pas mal de travail effectué pour ce fameux "bug" (entre guillemets, car pour moi ce n'était pas un bug, mais un manque d'anticipation sur la pérenité de certains logiciels, et de certaines habitudes aussi).
bonjour
j'ai utiliser ta methode drogoo.
Sa marche nikel
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager