Valgrind permet de purifier un exécutables des erreurs d'allocation mémoire.
Cette section contient les fichiers C++ disponibles.
Télécharger projet Kdevelop / Fichiers C++ expr.h, expr.cpp, main.cpp
Ce programme fournit une fonction 'Evaluate' permettant d'évaluer des expressions du type:
3*3 => 9
1+2 + (5) + (4-6)*4 - 1 + 4 * 3 –
(3*4/1) => -1
(123-3-3-7) => 110
((((5))))*5
=> 25
0x55 => 85
0X65 =>
101
0x55*0x14 => 1700
0x160/Hexa =>
16
Dix*Dix*Dix => 1000
logn(1000000)*5 =>
65
logn(10*10*10*10*10*(5+5))*5 => 65
Si 'logn' est définie comme la fonction logarithme népérien, 'Dix' et 'Hexa' comme des variable valant 10 et 16.
Elle permet de reconnaître les erreurs de syntaxe:
85/7982( => Expecting + or - instead of (
bad =>
Expecting + or - instead of bad
(123()-3-3-7) =>
Expecting + or - instead of (
5/0 => Division by zero
logn => Expecting (
La principale fonction exportée est:
bool Evaluate( string iExpr, unsigned int* opValue, string* opErrorMsg, IsAFuncDef ifIsAFunction, IsAVarDef ifIsAVar);
Elle analyse la chaîne de caractères iExpr, si
elle est conforme à la syntaxe et peut être évaluée,
la fonction renvoie true et opValue contient la valeur
de l'expression.
En cas d'erreur, la fonction renvoie false,
et opErrorMsg donne le message d'erreur.
ifIsAFunction
est l'adresse d'une fonction permettant de savoir si un mot
correspond à une fonction.
ifIsAVar est l'adresse
d'une fonction permettant de savoir si un mot correspond à une
variable.
Exemple d'implémentation de recherches des nombres premiers. prim.c
Son but était plutôt de servir d'exemple à la syntaxe C++ que de fournir un algorithme efficace.