begin process at 2012 05 28 10:26:04
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Maths & Algorithmes

 > 

calcul


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

calcul

dimanche 29 décembre 2002 à 16:34:37 | calcul

coockiesch

Hello.
Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.
Je ne sais pas comment m'y prendre...
J'ai essayé en stockant le calcul dan sun char[] et en travaillant avec la recherche de caractères mais c'est beaucoup trop lent et impossible à mettre en oeuvre avec plus d'op (sqrt, ^, sin, !, ...). Quelqu'un aurait une petite piste... Juste pour le début. Merci bcp!
coockiesch
dimanche 29 décembre 2002 à 17:08:37 | Re : calcul

cyrianox


Ce dont tu parles s'appelle un interpréteur d'expressions.

Pour le faire marcher il te faut :
une classe parser qui reconnait dans une expression les lettres, les symboles "/ * ( ) + -", puis traite de manière récursive les éléments.

ex : 3 * ( 1 + 4)

les parenthèses sont comptées comme un élément évalué récursivement.

tu as donc à évaluer :
1 + 4
opérateur '+', donc on additione 1 et 4
on remonte d'un cran :
3 * resultat , soit : 3 * 5
c'est une multiplication, donc on retourne 15
l'ordre de recherche pour le parser (du 1er au dernier element) :
+ - (unaire)
^
* / %
+ -
=

Voila j'espère que ça pourra t'aider.
Ces explications sont fournies à partir du livre :
"Référence Complète C++" de H.Schildt chez First Interactive.
Dans le bouquin, le prog dont tu parles est en exemple.



-------------------------------
Réponse au message :
-------------------------------

> Hello.
> Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.
> Je ne sais pas comment m'y prendre...
> J'ai essayé en stockant le calcul dan sun char[] et en travaillant avec la recherche de caractères mais c'est beaucoup trop lent et impossible à mettre en oeuvre avec plus d'op (sqrt, ^, sin, !, ...). Quelqu'un aurait une petite piste... Juste pour le début. Merci bcp!
> coockiesch
dimanche 29 décembre 2002 à 18:31:00 | Re : calcul

coockiesch

SI j'utilise la recherche de caractère:

char *pdest;
pdest = strchr(calcul, '*');
int result = (int)(pdest - calcul);

Est - ce voué à l'echec car trop lent???

Y a t il une autre manière de procéder???

Merci
-------------------------------
Réponse au message :
-------------------------------

>
> Ce dont tu parles s'appelle un interpréteur d'expressions.
>
> Pour le faire marcher il te faut :
> une classe parser qui reconnait dans une expression les lettres, les symboles "/ * ( ) + -", puis traite de manière récursive les éléments.
>
> ex : 3 * ( 1 + 4)
>
> les parenthèses sont comptées comme un élément évalué récursivement.
>
> tu as donc à évaluer :
> 1 + 4
> opérateur '+', donc on additione 1 et 4
> on remonte d'un cran :
> 3 * resultat , soit : 3 * 5
> c'est une multiplication, donc on retourne 15
> l'ordre de recherche pour le parser (du 1er au dernier element) :
> + - (unaire)
> ^
> * / %
> + -
> =
>
> Voila j'espère que ça pourra t'aider.
> Ces explications sont fournies à partir du livre :
> "Référence Complète C++" de H.Schildt chez First Interactive.
> Dans le bouquin, le prog dont tu parles est en exemple.
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Hello.
> > Je cherche a faire un prog qui calcule des ptits trucs dans le style 2.5+4.6*3-2*3. Il faut qu'il respecte l'ordre des ops.
> > Je ne sais pas comment m'y prendre...
> > J'ai essayé en stockant le calcul dan sun char[] et en travaillant avec la recherche de caractères mais c'est beaucoup trop lent et impossible à mettre en oeuvre avec plus d'op (sqrt, ^, sin, !, ...). Quelqu'un aurait une petite piste... Juste pour le début. Merci bcp!
> > coockiesch
>


Cette discussion est classée dans : calcul


Répondre à ce message

Sujets en rapport avec ce message

Calcul du temps de chargement d'un prog... [ par MorZong ] Salut,Encore moi, je suis partout, là c'est pour me dire comment faire pour calculer le temps (en millisecondes si c'est possible) qu'a prit un progr Librairies mathématiques VS matlab [ par devilinside ] Devant coder une interface graphique en visual C++ pour un logiciel de calcul, je suis fort dépourvu.Le code original du coeur de calcul tourne sous m Probleme de duree de calcul [ par Stubbornman ] Je suis actuellement, et maintenant depuis presque deux mois (je suis un debutant alors c'est long!!) sur une source sencee resoudre les carres magiqu implicit declaration of function `int getchar(...)' [ par cognac ] À chaque fois que j'utilise getch(); j'obtien le message suivant:getch();Voici mon programme (en fait mon exercice):#include //bibliotheque d'entree Calcul d'une opération en millisecondes [ par Thanatos ] Bonjour,Comment peut-on estimer le temps d'un calcul en millisecondes sous Borland C++ ?Je fais un programme qui compare les différents tris et j'aime calcul d'un modulo [ par cabarrus ] Qui peu m'aidé s.v.p pour ce problème...Ecrire un prog qui demande 2 nbres à l'utilisateur et qui affiche le reste de la division du 1er par le second Les «class» pour débutant [ par cognac ] Voici un petit programme:|||||||||||||| constante.h||||||||||||#ifndef CONSTANTES#define CONSTANTES#include #include using namespace std;const int a=5 Pb de calcul de la visibilité d'1 objet [ par ngryman ] Salut, bon g un petit pb pr calculer si une bounding box se trouve affichée à l'écran, je sais qu'il fo faire ca par rapport aux plans du champ de vis Prog de calcul matriciels [ par tchoumi ] Salut ! Je débute en prog et j'ai un petit problème pour réaliser un prog de calcul de matrice.Il faut que face comme calcul---> Produit=MatriceA*Matr Calcul Mathematique [ par WaFFel ] je voudrais savoir comment on fait un extraction de racine avec c++ ??? merci


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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 : 1,778 sec (3)

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