Rangement de nombre [Résolu]

Signaler
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012
-
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012
-
Bonjour à tous, pour les fana s d'algorithme,

Je dois trier une liste de nombre par ordre croissant.

Là, pas de problème sauf que ces nombres sont des ordres de fabrication et ont une portée de 32767 (du N°1 au N°32767),puis le suivant du 32767 repart à 1. Le numéro est généré automatiquement.
Je dois ranger par ordre du plus ancien au plus jeune pour prioriser le travail. Par jour environ 200 ordres sont émis, 10% sont traités en retard le lendemain voire 2 jours après..

Mon problème est de trier lorsque l'on a chevauchement au niveau du basculement entres 32767 et 1, puisque le 1 est plus "jeune" que le 32767. d'autant plus que les travaux ne sont pas forcément réaliser dans l'ordre et donc j'ai des travaux très en retard à prioriser.

Est ce que quelqu’un peut m'aider (je suis plombé la dessus)?
Ce test fait parti d'un développement en VBA Excel (de rangement, d'organisation et de hiérarchisation).
J'ai posté sur ce théme car je programme également en VB6 et je trouve que VBA est très proche.

Merci pour vos conseils.
Phoenix

22 réponses

Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Salut à tous,

Je ferme le sujet, le gestion de bulle de nombre semble fonctionner.
Je le fais tester à quelques collègues pour finaliser l'algo.

Merci pour toutes vos réflexions, à bientôt sur le forum.

Phoenix.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour,
Juste une question :
A quoi reconnais-tu le plus jeune N° 1 et le moins vieux N° 32767 ?
Si tu as la réponse à cette "bête" question, tu as dans la foulée ta réponse
Si tu ne le peux, par contre, aucune solution possible !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
En remarquant au passage :
- que 32767 est la limite d'un Integer
- que ton problème résulte très manifestement d'un défaut de conception, à la base-même.
La "baguette magique" n'existe pas (et encore moins en matière de développement), sauf si ton appli a prévu un "drapeau" ou une donnée additionnel(le), à utiliser alors.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Salut ucfoutu,

En fait cela fait comme si j'avais une bulle de nombre qui se déplace.
Bulle d'environ 100 nombres ayant ne portée de 500.

Et oui la est le problème, comment faire pour ranger tout ce monde.

J'espère avoir été clair.
Phoenix
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Je pense t'avoir répondu, non ?
- ou tu as un critère additionnel (à utiliser alors) et lequel ? et c'est possible
- ou tu n'en as pas et c'est impossible (et c'est alors un défaut de conception, pas de code)


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Erreur,

En fait c'est plutôt 400 nombres sur une portée de 1000.
Si tu vois ce que je veux dire.

Phoenix
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Non je ne suis pas de ton avis ucfoutu,

Beaucoup de système génère de chiffre en "Integer" en supprimant le signe vers d'autres systèmes qui doivent s'en servir.
Rare sont les installations qui émettent des balises pour que l'on s'y retrouve.
Je pense que l'idée de bulle est à creuser pour effectuer un décalage avant le rangement.
Demain je regarde cette piste.

Phoenix
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
que ce soient 10 sur une portée de 100 ou 20 sur une portée de 1000, cela ne change pas un seul iota à ce que je t'en ai dit !
As-tu ou non la possibilité (s'il a été prévu) d'utiliser un critère additionnel ? Si oui : Lequel ? si non : conception à revoir !
Comment te le dire autrement ?


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Merci pour ton avis ucfoutu, j'en prends bonne note.

Je cherche un quelconque critére additionnel mais il n'y en a pas, alors il faut peut être me le dire autrement.
Cela fait 2 jours que je suis sur le sujet, un jour de plus ne me fera pas de mal.

Bonne soirée à toi, Phoenix.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
alors il faut peut être me le dire autrement

je ne peux rien inventer !
Si tu n'en as pas : grave problème de conception. Et c'est là un constat et rien d'autre.
Ce n'est pas un problème de développement, mais bel et bien un problème de conception.
Et la conception : c'est à toi de la voir, elle.
Tu m'étonnes, là !


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
J'ai dans mon pré des vaches à 100 euros, des vaches à 80 euros et des vaches à 60 euros.
Elles n'ont toutefois pas le même âge, mais ne portent sur elles que l'étiquette de leur prix et rien d'autre.
Comment les classer par tranche d'âge, mais également par prix ?
Question existentielle, non ?
Et la réponse est : impossible si elles n'ont que l'étiquette de leur prix !
Voilà voilà ! Et je me demande comment tu peux en arriver à de telles questions et à la recherche d'une baguette magique inexistante.
Si on veut s'en sortir, on ne peut le faire qu'en ajoutant une étiquette de plus par vache.
Et cela s'appelle la conception.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Bonjour,
ces nombres sont des ordres de fabrication

Ils arrivent comment sur ton application? tapés à la main? par un automate?

La façon la plus logique serait d’incrémenter un chiffre ou une lettre à chaque passage de 32767 à 1.

A noter que le zéro doit compter également, il repart surement à zéro, c'est du binaire: 1, 2, 4, 8, 16, 32, 64, 128, 256 .... 32768, par exemple le 256 a 256 possibilités (du 0 au 255 inclus, ou si l'on préfère de 0 à FF en Hexadécimal).

A chaque fois qu'ils sont inscrits dans ton programme tu devrais "compter + 1" à chaque passage 32767 à 1 et l'enregistrer quelque part (dans un fichier par exemple) non?

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Ou encore une autre façon, serait de leur ajouter la date et l'heure à la quelle ils sont arrivés chez toi...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
235
Bonjour, Acive
Tout ce que l'on peut (qu'il peut) imaginer comme mécanisme "identificateur" additionnel, tout ce qu'il voudra ... mais il en faudra un !
Et (pour reprendre l'exemple des vaches) : va bene s'il commence maintenant à les mettre dans le pré, mais "in the baba" s'il n'a rien prévu à la base et que le pré est déjà rempli.
Dans tous les cas de figure : la difficulté maintenant présente met une fois de plus en exergue l'absolue nécessité d'accorder beaucoup plus de temps à la réflexion et à la conception que celui que l'on destine au développement. Faire l'inverse conduit généralement droit au mur (et cela fait mal).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

J'ai dans mon pré des vaches à 100 euros
A ce prix ce sont plutôt des vachettes
Plus sérieusement, chez nous, les OF étaient codés par l'année (2 digits),
le numéro de la semaine d'entrée du produit (2 digits) suivie d'un nombre incrémenté sur 3 digits. 999 était estimé suffisament grand pour la quantité de produits entrés en une semaine. Sur un seul chiffre donc, nous avions ainsi 3 infos différentes.

Bonjour Uc,
Oui... s'il a déjà plusieurs séries à trier et qu'aucun mécanisme additionnel, c'est clair que ça ne va pas être possible.

A moins que les séries arrivent dans un fichier, et la il faut voir la date et heure de création du fichier (à condition que le fichier contienne moins de 65534 ordres de fabrication). Sinon il aura deux passages à 1 dans le même fichier.

Ceci-dit si c'est enregistré dans l'ordre d'arrivé il peut quand même les trier...


Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Bonjour Banana,
A ce prix ce sont plutôt des vachettes

Plutôt le prix de quelques cotes de boeuf oui...

C'est possible aussi...
Ceci-dit il faut toujours tenir en compte l'année, car au passage du 31 décembre nous allons recommencer à la semaine 1...

Ça me rappelle le bug de l'an 2000 tiens...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique

Bonsoir acive,
C'est bien ce que j'ai noté plus haut (année/semaine/ordre) genre 1218007 en plus très facile à trier
T'as finis l'apéro ?

Ah pardon.. j'ai pas fait gaffe...

Il est 16:40... il faut pas exagérer non plus...
Surtout que je viens de voir nos amis sur la route...

Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
Messages postés
32
Date d'inscription
mercredi 5 décembre 2007
Statut
Membre
Dernière intervention
18 mai 2012

Salut à tous,

Je voie qu'en soirée (ici en métropole) mon sujet a fait couler beaucoup d'encre ou plutôt de touches.
Au fait avec un peu de retard acive bonne bière pour se rafraichir avant le ti punch de l'apéro du soir...

Bon revenons à mes moutons (je ne sais pas ce que les vaches de ucfoutu viennent faire dans mon bureau, soit disant les moutons non plus....)

Tous d'abord, merci de vous pencher sur mon sujet, te penche pas trop fort acive, le ti punch à forte dose te ferais tomber.

Pour répondre aux questions:
- non il n'y a pas de donnée supplémentaire, pas de date par exemple, qu'une numéro d'ordre et le libellé,
- Ces numéros sont donnés par un système informatique autonome sur lequel je n'ai pas accès au code du soft,
- Pour l'appli excel de développement intermédiaire, je ne traite que 20 Chiffres,
- Avant de m'avouer vaincu et de demander un paramètre temporel au système qui me génère les numéros, je voudrais exploiter toute les possibilités (une demande de modification demanderais un temps de développement non négligeable, donc un coût qu'il faudra justifier)

Bon, personne n'a réfléchi sur la possibilité de travailler sur une bulle de nombre! plus j'y pense et plus je me dit que la solution est là, je la code dans la journée et vous donne le résultat...

A+, Phoenix.