PARSER (CALCULETTE....)

victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 11 sept. 2004 à 20:22
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 - 8 oct. 2005 à 11:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/26097-parser-calculette

victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
8 oct. 2005 à 11:04
Si tu n'as plus WinZip essaye WinRAR ! ;-)
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
7 oct. 2005 à 10:53
Absent

cf mon 1er com sur cette page

Magicalement
cs_fraboulet Messages postés 37 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 27 avril 2006
7 oct. 2005 à 06:12
Et Lex/yacc dans tout ça?
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 21:11
merci Kirua
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 sept. 2004 à 21:01
les " sont en effet préférables pour les includes de fichiers locaux. les < > sont, par convention, réservés aux librairies du compilo. magic nono n'a pas a avr honte de l'avoir dit...

sois pas agressif.
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 20:55
ho !
calmos,

C juste un pe critiq, mé pr faire avancer
Je trouve ce srcc plutot bien progué

et il est tt a fait possible de faire du C en POO like
la preuve...
(struct...)

Sérieux, aucune mauvaises pensée...
mais si tu es si fort,
donne dc des coups de pouce sur des prj
& produit dc des srce

l'hatitude consommateur de certain est déplorable


on pe ts s'améliorer, & progresser en partageant
C mon point de vu
après, on choisi son camp
++
kheolane Messages postés 1 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 13 septembre 2004
13 sept. 2004 à 20:13
magic_Nono, j'aurais honte d'écrire:
_ #include"bparser.h" préférable _
au regard du source plus haut qui a compilé du premier coup sous FreeBSD.

T’ergotes, ok pour la POO mais ça n'empêche pas d'avoir de bonnes idées en C, d'autant plus que ça fonctionne, je le test actuellement.
A mon avis il a déjà les connaissances sur la POO, sans doute a t-il trouvé plus judicieux de le faire en C. pourquoi ? je sais pas.
A l'avenir poste des critiques constructive, tu pollueras moins le forum.

Quand la rigueur est de mise....

PS: Ce message est écrit pour les newbies qui auraient "honte" de poster leurs sources de peur de recueillir des commentaires de ce genre et uniquement pour ceci (cad n’a pas d’autre caractère que celui énoncé ci avant).
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 19:32
>
Keos> lol

ui,

J'ai lu qu'il fallait un proto défini pr les ptr de fonctions

a priori, ... est un nb variable de param... ça colle dc certainement po bien...

C ptet po géré...
je ferai des essais ac VC7, je te communiquerai le rsltt


qu'utilises-tu comme compilo?
___

astuce de prog

passe tes param en spécifiant const
si la var n'est po modifiée

++
keos31 Messages postés 7 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 2 novembre 2006
13 sept. 2004 à 18:46
magic_nono toi qui a l'air caler en programmation, tu pourrai pas me dire pourquoi mon compiilateur c/c++ ne m'autorise pas a creer des pointeur sur des fonctions ayant des un nombre de parametres variable plutot que de me reprendre sur #include "bparser.h". ceci dit tu m'as retirer une grosse epine du pied...

merci d'avance
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 sept. 2004 à 17:39
juste une chose: rajoute deux fonctions: DegToRad et RadToDeg, pour faire les conversions d'angles. ça sert tjs ;)
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 sept. 2004 à 17:36
boh, c'est juste une approche différente du problème (POO), parce que du pt de vue technique, le C sera plus rapide que le C++, je n'ai pas de gestion d'erreur et je ne gère rien de plus que lui (fonctions multi-paramétriques, constantes, expr arithmétiques et logiques, "tous" les opérateurs classiques... ah si: ça désalloue la mémoire, lol :p

à l'occasion je posterai pê alors, mais pas ce soir je pense.
sinon, c'est vrai que ça peut être vrmnt bien pr permettre aux gens de saisir une expression plutôt qu'un nombre ds une appli, j'avais créé mon code pr le challenge, sans but précis, ça c'est tt bon ^^ ah, puis c utile pr créer un langage de script aussi!
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 17:26
poste donc ton src Kiru...

ça lui pemettra d'apprendre...
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 17:26
poste donc ton src Kiru...

ça lui pemettra d'apprendre...
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
13 sept. 2004 à 17:23
je vais pas tester ton code parce que la longueur me rebute et que ma version C++ me satisfait ^^ (je l'ai pas postée parce que je trouve qu'il y en a déjà trop), mais au vu de ce que tu viens d'expliquer sur la souplesse des paramètres, je reconnais que ta lib a de la classe (ahah, dsl). vrmnt dommage que ça ne soit pas OO, et encore, t'aurais pas eu besoin de POO pour condenser tt ça, ça fait vrmnt peur la longueur :/
keos31 Messages postés 7 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 2 novembre 2006
13 sept. 2004 à 14:30
je connait cet methode pour avoir un nombre de parametres variable mais avec mon compilateur j'arrivais pas a declarer un pointeur sur une fonction utilisant cet technique de plus ma facon de faire est finalement la meilleur (je pense), je ne passe qu'un seul parametre par la pile et je peut allouer directement la place necessaire a mon tableau.....
sinon vous l'avez essaye mon code?
si vous trouvez des bugs e-mailer moi.......
keos31
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 11:17
#include"bparser.h"
préférable

pour un nombre de param variable , utilise: "..."

exemple:

#include <STDARG.H>
void BString::format(const char*modele, ...)
{
/// ------------------------------------------------------------------------------
/// ---------------- BString::format(const BString& modele ,... ) ----------------
/// ------------------------------------------------------------------------------
/// ----- Objectif : init en modèle formatage d'une chaine
/// ----- Auteur(s) : Bruno CELLE 01/09/04
/// ----- PreCond : /
/// ----- PostCond : /
/// ----- Etat : 1 (-1<0<1<2)
/// ------------------------------------------------------------------------------
/// ----- const char* modele : modèle...
/// ----- ... : nombre variable de param
/// ------------------------------------------------------------------------------
/// ----- Var Utilisées de la classe (1) : m_str
/// ----- Var Muettes (cf.partie préc) (1) : modele
/// ----- Var Internes à la fonction (1) : liste
/// ----- Var In (2) : m_str ,modele
/// ----- Var In Globales Constantes (1) : TAILLE_MAX
// inspiré de CString::format de Soilwork
ALLOUEn(m_str,char,TAILLE_MAX);
va_list liste;
//seul warning DevC++ à subsister... si modele est un BString => transfo en const char*
va_start(liste, modele);
vsprintf(m_str, modele, liste);
va_end(liste);
//TODO ; check présence du '\0'
//reallocation(strlen(tmp)+1);
majTaille();
}

Nono.
keos31 Messages postés 7 Date d'inscription dimanche 12 janvier 2003 Statut Membre Dernière intervention 2 novembre 2006
13 sept. 2004 à 10:59
j'ai voulut faire une bibliotheque pouvant comprendre les expressions mathematique, comme ca si dans un projet on a besoin de renter des chiffres dans un edit ou autre on peut directement taper une expression mathematique au lieu de tout faire a la calculette et de rentrer uniquement le resultat!
pour ce qui est du zip, mon pc ayant quelque probleme j'ai plus winzip......et enfin oui on peut rajouter proprement des fonctions ayant au max 15 parametres, exemple:

declaration:

"min",(expression(*)(expression *))MIN,{FONC,2}
^
|
0<nb parametres<=15
fonctions:

expression MIN(expression *arg)
{
/*en entree on a arg[0] et arg[1]*/
}


petit exemple d'utilisation:

#include

main(){
char Sexp="1+5"
expression Aexp,res;

Aexp=Parse(exp);
res=Calcul(&Aexp);
if(res.type==NBR)
printf("%e\n",res.nombre.freel);
else
printf("%d\n",res.nombre.sint);
}
magic_Nono Messages postés 1878 Date d'inscription jeudi 16 octobre 2003 Statut Membre Dernière intervention 16 mars 2011
13 sept. 2004 à 10:44
spécifie que ton parser est en C (on pourrait s'attendre a trouver du lex...)

sinon, ça me semble bcp trop redondant est loin d'etre en POO

++
Nono.
cs_Kirua Messages postés 3006 Date d'inscription dimanche 14 avril 2002 Statut Membre Dernière intervention 31 décembre 2008
12 sept. 2004 à 19:16
tes fonctions cos, tan, exp... sont super redondantes, il y a systématiquement un bout de code copié/collé, c'est pas pratique si tu dois faire une màj. et puis tu peux pas utiliser des fonctions multi-paramètres avec ce système, je me trompe? tu pourrais facilement (et proprement ^^) rajouter une fonction min(x,y) par exemple?

à part ça, boh si ça marche, c'est bon hein ^^
victorcoasne Messages postés 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
11 sept. 2004 à 20:22
Un peu long (ça donne presque pas envie de lire)

Faire aussi une petite interface console DOS pour utiliser ça , ça serait pas mal avec aussi un zip (et une capture) ce serait mieux !
Rejoignez-nous