4 //FIXME: Comment the code !!!
6 void displayMenuEntry(int num
, const char* option
) {
7 printf("%d - %s\n", num
, option
);
11 displayMenuEntry(1, "Addition");
12 displayMenuEntry(2, "Soustraction");
13 displayMenuEntry(3, "Multiplication");
14 displayMenuEntry(4, "Division");
15 displayMenuEntry(5, "Puissance");
16 displayMenuEntry(6, "Quitter");
19 int promptValue(const char* invite
) {
26 int promptOperation() {
28 return promptValue("Veuillez choisir une operation ?");
31 int doAddition(int val1
, int val2
) {
35 int doSubstraction(int val1
, int val2
) {
39 int doMultiplication(int val1
, int val2
) {
43 int doDivision(int val1
, int val2
) {
44 //FIXME: Useless code path given the exit main loop condition
46 printf("Division par zero !\n");
47 // FIXME: I'm not very fond of this convention ...
54 int doPuissance(int base
, int expo
) {
58 } else if ( expo
% 2 == 0 ) {
59 power
= doPuissance(base
*base
, expo
/2);
61 power
= base
*doPuissance(base
*base
,(expo
-1)/2);
66 int doOperation(int selection
, int val1
, int val2
) {
70 op_result
= doAddition(val1
, val2
);
73 op_result
= doSubstraction(val1
, val2
);
76 op_result
= doMultiplication(val1
, val2
);
79 op_result
= doDivision(val1
, val2
);
82 op_result
= doPuissance(val1
, val2
);
87 puts("Faire un choix compris entre 1 et 6");
93 int choice
= promptOperation();
94 int value1
= promptValue("Veuillez saisir une valeur entiere initiale ?");
95 int value2
= 0, result
= 0;
96 bool first_loop
= true;
99 if (choice
== 6) break;
101 value2
= promptValue("Veuillez saisir une valeur entiere avec laquelle l'operation sera effectuee ?");
102 if (value2
== 0) break;
103 result
= doOperation(choice
, value1
, value2
);
106 value2
= promptValue("Veuillez saisir la prochaine valeur entiere avec laquelle l'operation sera effectuee sur l'ancien resultat ?");
107 if (value2
== 0) break;
108 result
= doOperation(choice
, result
, value2
);
110 printf("Le resultat de l'operation choisie est %d\n\n", result
);