begin process at 2012 02 09 07:21:46
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ANALYSEUR D'EXPRESSION AVEC L'API WINDOWS ( VISUAL C++ )

ANALYSEUR D'EXPRESSION AVEC L'API WINDOWS ( VISUAL C++ )


 Information sur la source

Note :
8,33 / 10 - par 3 personnes
8,33 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Classé sous :calculatrice, interpreteur Niveau :Débutant Date de création :18/06/2005 Date de mise à jour :19/06/2005 14:22:42 Vu / téléchargé :7 332 / 586

Auteur : mat74

Ecrire un message privé
Commentaire sur cette source (23)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
voila c'est une calculette qui vous permettra d'effectuer des calculs avec des nombres complexes et plein d'autre fonctions comme cos,sin,tan,exp ... j'ai mis une fenêtre d'aide pour les raccourcis et les fonctions dans le menu.
en fait j'en avais marre de la calculette windows que je trouve pas pratique pour effectuer des calculs plus compliqué que 5+5.
sinon j'ai aussi rajouté une petite fonction que je trouve bien sympas, vous tapez sa : 5+5;9*2 et le résultat : 10;18
ainsi vous pouvez comparer 2 resultats sans avoir a retenir le 1er ( vous pouvez taper autant de calculs séparés que vous voulez )


Source


 Conclusion

j'ai essayé de faire mon maximum pour éviter les bugs et je trouve que la calculette est relativement fiable.
mais vous imaginé qu'il est biensure impossible d'essayer toutes les possibilitées, il peut donc rester des bug. si c'est le cas laisser un commentaire.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

19 juin 2005 14:22:42 :
voila j'ai essayer de modifier le code en fonction de vos critiques et maintenant normalement c'est bon.

 Sources du même auteur

Source avec Zip Source avec une capture PLAN D'EAU [OPENGL] [VISUAL C++]
Source avec Zip Source avec une capture MINIGOLF 3D EN OPENGL
Source avec Zip Source avec une capture CONVERSIONS BINAIRE OCTAL DÉCIMAL ET HEXADÉCIMAL ( VC++ 6.0 ...
Source avec Zip Source avec une capture MASTERMIND AVEC OPENGL EN 3D (VC++ 6.0)
Source avec Zip Source avec une capture TETRIS ( VC++ 6.0 )

 Sources de la même categorie

Source avec Zip WIN32 TLS LENT par dguilmain
Source avec Zip VIDER ELEMENTS DE CORBEILLE WINDOWS7 (WIN64) par BruNews
Source avec Zip Source avec une capture FIND TEXT (WIN64) par BruNews
Source avec Zip DELETE DIRECTORY (WIN64) par BruNews
Source avec Zip ENUM DIRECTORY (WIN64) par BruNews

 Sources en rapport avec celle ci

UNE CALCULATRICE TRAITANT LES CARACTÈRES.... par Jbs106
Source avec Zip CALCULATRICE AVEC REPRESENTATION GRAPHIC par msavyo1
Source avec Zip Source avec une capture CALCULATRICE C++ AVEC GUI QT par skylin3
Source avec Zip INTERPRETEUR BRAINFUCK par coucou747
Source avec Zip TUTORIEL N°1 par bioopovega

Commentaires et avis

Commentaire de MuPuF le 19/06/2005 00:02:26

No comment, just a 10/10 ...

Bon ok je commente, Super parseur d'expression, c'est bien simple, JE L'ADOPTE !
T'es vraiment un bon toi ;-)
Une approche du probleme tres intéréssante (meme si je comprends pas tout, on va dire que j'ai pas vraiment cherché aussi)

Commentaire de MuPuF le 19/06/2005 00:52:35

... il plante au démarage en mode release, encore une différence de gestion de la mémoire, rrr... essais de le corriger, j'ai 2 warnings si tu veux:
C:\Documents and Settings\Progr@mmeur Fou\Bureau\analyseur d expression complexe\fonctions.h(1405) : warning C4172: returning address of local variable or temporary
C:\Documents and Settings\Progr@mmeur Fou\Bureau\analyseur d expression complexe\fonctions.h(1414) : warning C4172: returning address of local variable or temporary

Il doit y avoir un rapport

Commentaire de mat74 le 19/06/2005 01:45:05


ouai moi aussi jai les warnings mais je sais pas trop comment corrigé sa ...
par contre je viens d'essayer de le compiler en release et sa marche bien . ta quoi comme compilateur ?

Commentaire de cosmobob le 19/06/2005 03:56:59

salut,
déja j'utilise vs7, et le code compile pas : les operateurs comme += doivent - dans le standard c++ que vc6 ne respecte pas - retourner une valeur. Il suffit de leur faire renvoyer un Complexe& et de mettre return *this; a la fin de chaque implementation de tes operateurs +=, -=, etc.

sinon moi ton programme plante au démarrage en release ET en debug.
En debug il me met que la pile autour d'une variable dans la fonction Liste interpretation (char* expression) a été corrompu.
En gros ca veut dire que t'as mal géré les pointeurs.
regarde ca : char expr[5]; et jamais dans la suite de ta fonction tu ne vérifies que ton indice j utilisé dans  expr[j] ne dépasse 4 (et j finit par dépasser 4; ton code est mal concu ...). D'ou un buffer overflow...
Ceci ne m'etonne pas trop car le fait de renvoyer a d'autres endroits un pointeur qui désignait un tableau déclaré en local ne t'as pas ennuyé (le fameux warning  "returning address of local variable or temporary"). Pour le corriger, rend la variable que tu renvoies static !! static dit que ta variable continue d'exister tout le temps meme quand tu es sorti de la fonction; toi tu renvoyais un pointeur vers une variable locale qui n'etait donc plus valide quand tu sors de la fonction appelée !!!!!

Bon il te manque certaines bases du C qd meme ;)





moi aussi ca plante en release au démarrage

Commentaire de cosmobob le 19/06/2005 03:57:50

la derniere ligne du message précédent est a ignorer ;)

Commentaire de MuPuF le 19/06/2005 10:51:10

Moi vc++ 6, le mode release plante, mais va savoir ou, puisque en debug il marche, je trouve ça vraiment con que ce soit pas le meme code en release qu'en debug (outre le fait qu'il ait des infos de debug)...
Sinon, je pense que le fait de corriger ça devrait enlever le prob du release.
Good luck, préviens quand tu as fini, car je l'utilise ton prog, en plus les varibles sont tjs accessible entre 2 instances ... (stocké dans un fichier sous forme de texte)

Commentaire de cosmobob le 19/06/2005 11:48:55

si ca reagit differement c'est parce que le code est buggé ... en debug et en release la gestion de la pile et de la mémoire n'est pas la meme (ya des trucs en plus en debug), et donc t'as moins de chance de faire planter le programme en debug si en depassant les zones d'un tableau du genre char expr[5]; tu écrases des infos de debogage.
de toutes facons ce genre d'erreurs n'a pas 150 000 causes possibles: il y a :
- une fonction retourne un pointeur qui pointe sur une variable locale;
- un pointeur n'est pas correctement initialisé, ou l'est a 0, et tu fais ensuite *ptr ou ptr->qqchose
- on deborde en ecrivant dans un tableau. Un truc a faire pour tester ca si t'es pas sur, est de mettre un ASSERT(j > 0 && j < 5); juste avant un endroit ou tu fais expr[j] = ..; ou que tu utilises expr[j] (ici j < 5 car on avait char expr[5];).
Le ASSERT ne sera executé qu'en debug mais permettra au moins de detecter le probleme.

Commentaire de cosmobob le 19/06/2005 11:50:50

enfin la ca devrait plutot etre ASSERT(j >=0 && j < 5);

Commentaire de Matt67 le 19/06/2005 12:08:51

Bonjour,

Pour les warnings c'est normal tu renvoies un pointeur sur une variable locale.

J'ai fait une modif ici http://mirabon.free.fr/fichier_c/

par contre le code dans fonctions.h pas bon, fait un fonctions.cpp

Pas trop regardé le code mais le principe est sympa.
Pas de soucis en mode debug ni en release.

Matt...

Commentaire de MuPuF le 19/06/2005 12:19:42

lol, pas poss ces matt ... je me perds ....

Commentaire de MuPuF le 19/06/2005 20:31:26

Suite a la maj, ben je dis bravo, un code qui sert vraiment a quelque chose et qui marche now nickel ! La gestion des prioritée est respectée, PARFAIT !

Commentaire de cosmobob le 20/06/2005 00:26:26

ben moi je reussis toujours a le faire bugger :-)
primo, si tu fais un new char[ ... ] quelque part, fais un delete [] par la suite (la t'as des fuites de memoire)
Note qu'une connaissance meme basique de la STL te ferait pencher pour l'utilisation des std::string plutot que de faire toi meme un new char[taille] ( et comme ca t'aurais rien besoin de desallouer)
sinon le code est tres mal organisé (tu as qd meme un SetWindowText a l'interieur de ta fonction calcul !!!! il y avait moyen de renvoyer le calcul, puis de faire tout ce qui est affichage a part)

enfin pour faire boguer le truc, des le debut je reste appuyé sur une touche, et il me dit qu'il y a un pb de gestion de la memoire, je cite:
(---------------------------
Microsoft Visual C++ Debug Library
---------------------------
Debug Assertion Failed!

Program: ...lyseur d expression complexe\Debug\analyseur d expression.exe
File: dbgheap.c
Line: 1100

Expression: _CrtCheckMemory()

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)
---------------------------
Abandonner   Recommencer   Ignorer  
---------------------------
)

enfin voila, je suis pas du meme avis que MuPuf, c'est loin d'etre parfait (tes problemes sont liés a la mauvaise organisation du code !!!!), mais ca reste cela dit pas trop mal.

a+

Commentaire de cosmobob le 20/06/2005 00:32:04

ha ben ca plante aussi de maniere assez aleatoire qd je mets des operations, puis que j'efface et que j'en retape une ....

Commentaire de cosmobob le 20/06/2005 00:40:26

tiens, en plus, a partir du moment ou ca reussit a calculer des expressions mal parenthesees on peut penser que le parsage de l'expression est mauvais !!!

Commentaire de mat74 le 20/06/2005 01:00:51

COSMOBOB : et ben t'avais vraiment envis de me casser toi aujourd'hui . sa fait tjs plaisir .

sinon pour l'expression j'ai expliquer dans le attention les cas ou il affiche un résultat alors qu'il y a une erreur de synthaxe
genre si tu tape 5++5

pour les erreurs aléatoires donne des exemples, parce que moi j'ai rien remarqué pour l'instant

Commentaire de cosmobob le 20/06/2005 01:36:57

aléatoire = ya du mal a donner d'exemple.
La seule chose a dire est que la memoire est mal gerée, donc si ca plante pas, c'est de la chance ...
et sinon prends pas ca pour du cassage, j'ai essayé de faire en sorte le plus possible que tu puisses corriger tes erreurs; apres c'est les limites d'un message sur un site, une phrase brute peut avoir l'air plus crue que dans l'esprit de celui qui l'écrit.

un conseil si tu veux améliorer ton truc : reflechis a comment re organiser ton code et repars de zero. Sachant que ta stratégie de décomposition d'expression est déja faite (ce qui a  du etre le plus long)

a++ ;)

Commentaire de MuPuF le 20/06/2005 09:24:22

Pour la classe string, Cosmobob a raison, c'est vraiment pas mal. Quand aux plantages ... j'ai rien reussi a planter, et je me suis amusé avec je comprends pas. Mais si ça marche pas chez cosmo c'est que dois y avoir un prob.

Avant de poster le message j'ai re essayé le prog, j'ai trouvé un autre bug, on peux ecire du texte dedans et ça le fais planter (essais de gerer si ce texte est une commande ou autre, si autre ---> erreur et tu signales !

Commentaire de Pamaury le 20/06/2005 18:51:24

"unsigned long double"(fonction.h)
->çà existe çà ?????? pas à ma connaissance en tout cas çà compile pas et je comprend bien pourquoi . un double ne peux pas être signé ou non signé .

ensuite faudrait faire un
using namespace std;

Commentaire de gagah1 le 21/06/2005 10:12:03

En modifiant quelques lignes de code, j'arrive à le compiler avec DevC++, pas mal!

Commentaire de Arnaud16022 le 21/06/2005 20:32:54

qui est l'abr***** qui a mis 5?
10/10 génial

Commentaire de cosmobob le 22/06/2005 10:37:36

l'abricot ? :) moi, la premiere version qu'il a postée plantait des le demarrage chez moi a cause notamment d'un buffer overflow... et apres on peut pas renoter.

Commentaire de gagah1 le 22/06/2005 15:41:13

Par contre il gère pas d'erreur de saisi. Exemple si on fait 10m10 il donne comme resultat 1010, si tu fais 12=5 le resultat est 125. A verifier?

Commentaire de mat74 le 22/06/2005 20:23:45

c'est normal j'ai fais exprès de laisser passer qq truc
je trouve que c'est plus simple pour taper

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Calculatrice ms visual c++ [ par Fino ] Bonjour,quelqu'un aurait-il le source d'une calculatrice faite avec ms visual c++ comme la calc.exe de ms dans windows.si oui pouvez m'en envoyer un e Probleme d affichage [ par Scythale ] Lorsque j'execute ce programme voici ce que dit mon compilateur(borland C++): you have accidentely use the old dummy version of OwlMain.Je n'arrive pa calculatrice en c++ TRES URGENT!!! [ par zouz ] Il faut que je réalise une calculatrice en programmation.Le fonctionnement est comparable à une calculatrice de poche tel que nous avons l'habitude d' Une calculatrice en C++ sous windows [ par Juan-Marco ] Bonjour à tousVoila mon premier post sur ce forums Je connais bien les boucles, les variables et les structures. Je connais un peut moins les classes. calculatrice pour debutant en C [ par kwuy ] j'ai ecrit une version de ma calculatrice mais je voudrais en faire une avec ligne de commande du genre : 12 + 5 - 4 *9 etc et avoir le resultatcommen Calculatrice Win32 Borland OWL C++ 5.x [ par bobby03 ] J'ai ajouté une barre menu, mais je suis incapable d'activer mon MessageBox À propos. Ça ajoute même une erreur sur le code existant qui fonctionne tr Calculatrice Inverse Polonaise [ par vpieplu ] J'ai un probleme. Je n'arrive pas a coder la calculatrice ... Je ne sais qu'elle commande mettre dans les fonctions + - * / Sin Inv Cos C'est super UR calculatrice en C [ par a20syl92 ] 20sylsylnet@netcourrier.comBonjour,J'aimerais réaliser, en langage C, un logiciel capable d'évaluer des expressions arithmétiques, en respectant les p Calculatrice (postfixé) : pb a l'execution [ par filipuce ] Bonjourvoila g fé une petite calculatrice (+,-,*,/ avec parentheses)sous linux pas de probleme, compilation et execution.mais en retouranant sous wind Interpreteur de commande AT [ par Le mauvais ] Bonjour tout le monde :)Alors voilà, je voudrais savoir où je pourrais trouver le code source (en langage C de préférence) d'un interpréteur de comman


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
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

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,967 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales