Bonjour à tous!
Je suis actuellement en train de me lancer dans le dévellopement d'une calculatrice "évoluée", bon elle fait rien de spécial mais en fait j'ai recherché pas mal d'aide sur le net sur les calculatrices et je tombait à chaque fois sur une calculatrice toute simple du genre 4 + 5 = 9
En revanche, je souhaiterais pouvoir dévelloper une calculatrice permettant de calculer des expressions un peux plus complexe du genre: (4+2/2)*5
Mon problème:
J'ai un algorithme mais je n'arrive pas à le mettre en oeuvre
Je vous le propose et si vous pouviez me dire ce que vous en pensez, ou voir me donner des conseils ou dire que c'est de la daube je suis preneur :p
Algo:
création de 3 tableaux pour stocker parenthèses, signe, et valeure:
création de 4 variables désignant les caractères de la chaine:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 int elem_simples[500]; int nombres[500]; int operateur[500];
Ce qui nous donnerait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 int parenthese_ouvrante = 0; int parenthese_fermante = 1; int operateur = 2; int nb = 3;
( 2 + 3 ) * 5
elem_simples=>parenthese_ouvrante,nb,operateur,nb,parenthese_fermante,operateur,nb
nombres =>0,2,0,3,0,0,5
operateurs=>0,0,'+',0,0,'*',0
Le soucis maintenant est d'implémenter cet algorithme qui de plus permet juste de détecter de quoi est constituée l'expression donnée (qui sera donnée dans une chaine ASCII).
J'ai une esquisse de code, mais qui ne reprend pas cet algorithme:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 #include <stdio.h> #include <stdlib.h> int numbers[10] = {0,1,2,3,4,5,6,7,8,9}; int main(void) { int elem_simples[500]; int nb_elem_simples; int nombres[500]; int i; char operateurs[500]; char parenthese_ouvrante, parenthese_fermante,operateur; int nb; char expression[128]; gets(expression); parenthese_ouvrante = strchr(expression,'('); parenthese_fermante = strchr(expression,')'); if(parenthese_ouvrante != NULL) { printf("Parenthese_ouvrante "); for(i=0;i<10;i++) { nb = strchr(expression,numbers[i]); if( nb != NULL) { printf("Chiffre "); } } if(parenthese_fermante != NULL) { printf("Parenthese fermante "); } } return 0; }
Avec ce code, j'obtient un résultat du genre:
pour une expression du type (5+2)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Parenthèse ouvrante Chiffre operateur Chiffre Parenthese fermante
Bien sûr mes tableaux implémentés dans mon code ne servent à rien mais j'avais la flemme de les enlever car je ne trouve pas comment implémenter mon algorithme, si toutefois il est correct.
Merci d'avoir eu la patience de me lire
Bonne journée et si vous avez des conseils n'hésitez pas
Fabien
Partager