Hit-Parade .VB Research Center . Compteur
Accueil ~  Code ~  Programmes ~  Api ~  Forum ~  Cours ~  Livres ~  Quiz ~  Annuaire
~ Edito ~
12/03/2006 @ 13:39
Depuis la dernière mise à jour (qui remonte à... oulala plusieurs mois), un petit ménage de printemps s'impose. Ca tombe bien, c'est presque la période.
Au menu, et progressivement sur les jours à venir, rafraîchissement de plusieurs fonctions et procédures, nouvelles APIs et nouveaux programmes.

~ Rechercher ~

  

~ Annuaire VB ~
 Rechercher un site :
  

~ Partenaires ~


Le compte est bon

compte.exe (le programme en VB6 natif) ~  compte.zip (les sources du programme)

Si VB 6.0 n'est pas installé sur votre ordinateur, vous aurez peut-être besoin d'installer les Runtimes VB : DLL VB 6.0 DLL VB 6.0
Les deux DLL suivantes sont, en général, également nécessaires : VB6FR.DLL VB6FR.DLL ~  MSCOMCTL.OCX MSCOMCTL.OCX
(pour NT/2000, à copier dans WINNT\SYSTEM32 - pour 95/98/XP, à copier dans WINDOWS\SYSTEM)

Le programme est constitué d'une feuille et d'un module.

La feuille a cet aspect là :

  • 7 zones de textes : 1 première grande, pour contenir le compte à rechercher et 6 autres plus petites, pour recevoir le contenu des plaques.
  • 2 boutons : 1 pour lancer la recherche, l'autre pour quitter l'application.
  • 1 label destinée à afficher le résultat de la recherche.

Le module contient les fonctions de calcul et de recherche du compte.

Le principe utilisé dans ce programme pour trouver le bon à partir des 6 plaques est simple.
On part en fait du résultat à trouver, et par des calculs successifs sur ce chiffre, on essaye de l'amener jusqu'à zéro.
Le module de recherche prend les valeurs des plaques et applique les quatres opérations de base sur le chiffre résultat. L'ordre actuel des opérations est la soustraction, la division, l'addition et la multiplication.
Tout le travail est fait de manière arborescente.

si Résultat - Plaque 1 = 0 alors le compte est bon et on sort sinon on fait le calcul suivant
si Résultat - Plaque 1 - Plaque 2 =0 alors le compte est bon sinon
si Résultat - Plaque 1 - Plaque 2 - Plaque 3 =0 alors le compte est bon sinon
...
ainsi de suite jusqu'à la plaque 6
si Résultat - Plaque 1 - Plaque 2 - Plaque 3 - Plaque 4 - Plaque 5 - Plaque 6 = 0 alors le compte est bon sinon on passe à l'opérateur suivant pour la dernière plaque,
si Résultat - Plaque 1 - Plaque 2 - Plaque 3 - Plaque 4 - Plaque 5 / Plaque 6 = 0 alors le compte est bon sinon on change encore d'opérateur,
si Résultat - Plaque 1 - Plaque 2 - Plaque 3 - Plaque 4 - Plaque 5 + Plaque 6= 0 alors le compte est bon sinon, etc...

On fait donc tourner les opérateurs sur toutes les plaques de manière recursive. On touche ainsi un grand éventail de possibilités, et on a de fortes chances de tomber sur le résultat. Vous pouvez suivre bien sûr tout le cheminement en mode 'Debug', mais attention, avec tous ces appels on se perd assez vite!

Cette méthode a l'inconvénient que l'on part du résultat pour obtenir la méthode de calcul. Ainsi, notre tableau de plaque contient les opérations dans le sens inverse dans lequel elle doivent s'effectuer.
Par exemple, avec un compte de 437 et les plaques 2 5 7 9 10 25, le programme trouvera le résultat dans ce sens :
437 + 2 - 5 - 9 / 25 - 7 -10 = 0
mais devra nous l'afficher de cette manière :
( 10 + 7 ) * 25 + 9 + 5 - 2
C'est pourquoi vous pouvez voir que dans les procédures qui effectuent les opérations on stocke l'opérateur contraire avec la plaque.
De la même façon, lors de l'affichage du résultat, on part de la dernière plaque pour remonter jusqu'à la première.

Vous pouvez noter qu'en changeant l'ordre des opérations, vous obtiendrez des temps de réponse différents, à vous d'adapter cela pour avoir les meilleurs temps.
Dans cette configuration, avec un Pentium 100 (32Mo) et un exe compilé en natif, il faut environ une seconde pour trouver le compte ci-dessus. Et environ 10 secondes pour que le programme vous indique qu'il n'y a pas trouvé de solution. Attention, ce programme n'explore pas toutes les possibilités mais seulement un très grand nombre, donc il est possible qu'il n'arrive pas à résoudre certains problèmes.

Enfin, pour les utilisateurs de Microsoft Internet Explorer, j'ai à disposition une conversion en VBScript de ce programme. Ce n'est pas aussi rapide qu'en compilation native, mais ça peut vous donner une idée de ce que le programme fait réellement.
Pour les utilsateurs de Netscape Navigator, j'ai converti également, ce programme en JavaScript. Dans tous les cas, la rapidité de calcul est lié à votre machine. Mais le temps reste tout de même raisonnable.

Sur ce, bonne réflexion avec le code suivant...

frmCompte.frm (. Afficher le code)

modCalculPur.bas (. Afficher le code)

Visual Basic Research Center - (c) 2000/2002 -  Webmaster : docvb (chez) free (point) fr