Bonjour , je sais que plusieurs postes ont deja été fait mais j'ai l'impression de passer a cote de quelque choses ...
En effet je cherche a convertir un expression tel que : 3 + 4 * 2 == 3 4 + 2 *
j'ai actuellement ce programme (non complet car il manque la conversion ainsi que le systeme de parenthèse)
J'aimerais savoir si quelq'un pouvait me donner une piste sur comment gerer cet algorithme de conversion ou alors du moins un piste pour finir ce programme
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77 #include <unistd.h> #include <stdlib.h> #include <stdio.h> #include "miniLib/my.h" typedef struct Element Element; struct Element { int nombre; Element *suivant; }; typedef struct Pile Pile; struct Pile { Element *premier; }; void pile_push(Pile *pile, int nvNombre) { Element *nouveau = malloc(sizeof(*nouveau)); if (pile == NULL || nouveau == NULL) { exit(EXIT_FAILURE); } nouveau->nombre = nvNombre; nouveau->suivant = pile->premier; pile->premier = nouveau; } int pile_down(Pile *pile) { if (pile == NULL) { exit(EXIT_FAILURE); } int nombreDepile = 0; Element *elementDepile = pile->premier; if (pile != NULL && pile->premier != NULL) { nombreDepile = elementDepile->nombre; pile->premier = elementDepile->suivant; free(elementDepile); } return nombreDepile; } char polonais(Pile *pile, char const *str) { int nombre; int i = 0; str = my_strlen(str); while (str[i] >= '0' && str[i] <= '9') { i++; pile_down(pile); if (str[i] == "+") { pile_down(pile); } else if (str[i] == '-') { pile_down(pile); } if (str[i] == '*') { pile_down(pile); } else if (str[i] == '\\') { pile_down(pile); } if (str[i] == '%') { pile_down(pile); } else if (str[i] == '\0') { return (0); } } }
Ca peut paraitre un peu vague , j'en suis désolé par avance.
Merci
Partager