Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

[VB 2005] CLASSE DE CALCUL


Information sur la source

Catégorie :Maths Source .NET ( DotNet ) Classé sous : calculateur, calcul, classe Niveau : Initié Date de création : 22/07/2007 Date de mise à jour : 04/09/2007 10:21:16 Vu / téléchargé: 6 047 / 494

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (5)
Ajouter un commentaire et/ou une note


Description

Cette classe permet de calculer n'importe quel type de calcul passé sous forme de string en paramètre.
Des exemple d'utilisation sont mis en commentaires.
A noter que la sortie est aussi de type string (pour des raisons très simple : error1, error2, error3 et error4 ne sont pas numériques...)
 

Conclusion

bug connu : cf code sur Euler...
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Historique

23 juillet 2007 09:20:56 :
ajout du zip qui a mystérieusement disparu .. :')
23 juillet 2007 09:23:09 :
décidément il résiste ce zip, il refuse de s'ajouter -_-
27 juillet 2007 14:42:47 :
correction d'un bug signalé + légère amélioration interne
04 septembre 2007 10:21:16 :
Correction et optimisation de la sortie d'erreur.

Commentaires et avis

signaler à un administrateur
Commentaire de damienpasqualinotto le 26/07/2007 21:18:51

Salut a toi...


J'ai trouvé 2 petits problèmes dans ta classe.
Les deux sont en rapport avec ta fonction "remplaceProduit" :


- Quand tu remplace par exemple "3cos" par "3*cos" tu met :

equ = equ.Replace("cos", "*cos")

sauf que si par exemple un "5+cos" traine ailleurs dans le calcul, il sera remplacé par "5+*cos" se qui créé un bug plus tard dans le code.
Je pense que tu devrais plutôt mètre quelque chose comme :

equ = equ.Substring(0, result.Index) & result.Value.Replace("cos", "*cos") & equ.Substring(result.Index + result.Length)

Cela ne pose pas de problème pour les ")(" car elles doivent toutes être changées en ")*(".
Donc par contre je pense que pour les ")(" un simple :

equ = equ.Replace(")(", ")*(")

suffirait sans utilisé d'expression régulières.


- Ensuite tu oubli de rajouter un "*" entre une parenthèse fermée et un chiffre ou |cos|sin|tan|sqr.
Donc par exemple quand le calcul : (2+3)2 est rentré. Le résultat retourné est 52 et non 10.
Je pense qu'avec un :

modèle = "\)(([\-|\+|]?\d+(\.\d*)?)|cos|sin|tan|sqr)"
reg = New Regex(modèle)
result = reg.Match(equ)
Do While result.Success = True            
              equ = equ.Substring(0, result.Index) & result.Value.Replace(")", ")*") & equ.Substring(result.Index + result.Length)
              result = reg.Match(equ)
Loop

le problème sera résolu.


Voila, si tu modifie ton code, n'oublie pas de le mètre à jour dans "Euler".
Si je trouve qu'autre problème je te lés indiquerais aussi.


Damien.

signaler à un administrateur
Commentaire de Kite37 le 27/07/2007 09:54:08

-Humm pour le tout premier bug, peux-tu me donner un exemple d'équation qui bug?

-et pour la deuxième, a savoir (K)k, j'ai volontairement omis le (k)*k généralement, et par sorte de convention, on met les nombre facteur de parenthèses devant celles-ci. Tu peux d'ailleurs essayer de tapper (8)2 sur ta calculatrice, tu auras des surprises :)
Mais bon je pense que je l'ajouterai finalement.

Merci de tes conseils :)

signaler à un administrateur
Commentaire de damienpasqualinotto le 27/07/2007 14:18:24

Pour le premier rentre par exemple :
5+cos(2)+4cos(3)

Et pour la deuxième je suis d'accord avec toi sur le fait qu'on écris plutot : k*(K) que (K)*k mais si dans un calcul tu a (2+X)cos(3) par exemple il faut quand même rajouterr un "*" aprés ")".
Voila bone journée.

Damien


signaler à un administrateur
Commentaire de Kite37 le 27/07/2007 14:38:41

J'ai corrigé la première erreur, mais la seconde me semble impossible pour une simple raison : (k)k remplacé par (k)*k ne peut être possible si k est négatif .

exemple:

(8)-2 serait transformé en (8)*-2... le seul moyen est donc de l'appliquer lorsqu'il n'y a aucun signe devant le second k, ce qui est casi impossible via ma classe (sauf dans le cas ou il est spécifié dans la formule de départ ...)

Donc cela marche, mais ne peu prendre en compte que les calculs de type (k)q vec q non signé !

Voilou :)

signaler à un administrateur
Commentaire de Elxior le 31/07/2007 06:23:11

Petite remarque rien de méchant :
Ligne 160 :    If str <> "" Then => If Not str.IsNullOrEmpty Then

Bon code, 9/10

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Appel [ par gbawar ] Bonjour,Jaimerai savoir comments on peut demanader via un bouton le calcul que s'effectuer sur une autre classe ou private sub?Exemple:J'ai un bouton programmation du calcul d'une obligation classique [ par vivelovalie ] Salut à tous, Voila je suis debutant en programmation VBA (et encore plus en VB6 !!!), j'ai un exercice financier à résoudre qui ce formule ainsi : Calcul d'une formule dans une cellule excel [ par mfaure ] Bonjour a tousJ'ai cree une macro qui rempli des cellules, soit avec des donnes chifrees renseignees a partir de userforms, soit avec des formules sim Créer son form dans une classe [ par TigerFab ] Bonjour,Lorsqu'on crèe un nouveau projet de bibliothèque de classes, on ne sait pas faire hériter la classe à windows.system.formY a-t-il moyen de cré Comment cacher une Classe [ par NykoKurapika ] Bonsoir à tous !J'ai un petit soucis pour ce qui est de rendre transparente une classe. Je m'explique :J'ai créé une DLL contenant plusieur classe per IPM.Post [ par dthuler ] Bonjour !Voilà mon problème; j'ai créé un formulaire Outlook 2003 personnalisé de classe IPM.Note et dois le poster à l'aide d'un bouton dans un dossi Code Barre 2 of 5 et calcul de Checksum [ par yohann59 ] Bonjour à tous.J'utilise cette source pour imprimer mes codes barres ( 2 parmi 5 ),  Mais je n'arrive pas à mettre le checksum à la fin de celui-ci, p Comment decharger une DLL ??? [ par mouse74 ] Bonjour,J'ai un gros problème. Voilà, mon programme VB fait appel à une dll fortran, tout fonctionne bien sauf que si je lance deux calculs de suite, DoEvents en VB2005 [ par yvesdelorme ] Bonjour,J'ai un problème avec VB2005, je ne sais pas comment remplacer la fonction de VB6 'DoEvents' dans un projet VB2005, Visual Studio 2005 me refu Calcul dans une datgrid [ par filotto ] Bonjour à tousComment additionner les lignes d'une meme colonne dans une datagrid, puis ecrire le resultat dans un textbox?Merci de votre reponseCordi


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,811 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.