Bonjour à toutes et à tous,

J'avais une question à propos de mon code. L'exercice étant de lire un symbole (donc +, -, *, ou /), selon ce symbole je dois éffectuer l'opperation suivante :
mon tableau 1 sera additionné, soustrait.... par le tableau2 et donnera le résultat dans le tableau 3.

Un de mes camarades à fait l'exercice de la manière suivant (donc son exercice fonctionne)

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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
PROCEDURE Exercice2*;
VAR
tab1:TabEntier;
tab2:TabEntier;
tab3:TabEntier;
symb:CHAR;
indice,a:INTEGER;
 
PROCEDURE LectureTableau ();(* Mes Lectures de mes tableaux *) 
BEGIN (*LectureTableau*)
FOR indice := 0 TO tailleTableau-1 DO
In.Int(tab1[indice]); 	
END;  
FOR indice := 0 TO tailleTableau-1  DO
In.Int(tab2[indice]); 
END;
END LectureTableau;
 
PROCEDURE Affichage ();(* mes affichages de mes tableaux *) 
BEGIN (*Affichage*)
Out.String("a1= ");
FOR indice := 0 TO tailleTableau-1 DO
Out.Int(tab1[indice], 5); 
END; Out.Ln; 
Out.String("a2=");
FOR indice := 0 TO tailleTableau-1  DO
Out.Int(tab2[indice], 5); 
END; Out.Ln; 
Out.String("a3= ");
END Affichage;
 
PROCEDURE AddTab;	(* a3:=a1 + a2 *)
BEGIN (*AddTab*)
LectureTableau;
Affichage;
FOR indice := 0 TO tailleTableau-1  DO
tab3[indice]:=tab1[indice]+tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END AddTab;
 
PROCEDURE SubTab;	(* a3:=a1 - a2 *)
BEGIN (*SubTab*)
LectureTableau;
Affichage;
FOR indice := 0 TO tailleTableau-1  DO
tab3[indice]:=tab1[indice]-tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END SubTab;
 
PROCEDURE MulTab;	(* a3:=a1 * a2 *)
BEGIN (*MulTab*)
LectureTableau;
Affichage;
FOR indice := 0 TO tailleTableau-1  DO
tab3[indice]:=tab1[indice]* tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END MulTab;
 
PROCEDURE DivTab;	(* a3:=a1 DIV a2 *)
BEGIN (*DivTab*)
LectureTableau;
Affichage;
FOR indice := 0 TO tailleTableau-1  DO
IF tab2[indice]=0 THEN Out.Ln; 
Out.String("divison par zéro"); 
ELSE
tab3[indice]:=tab1[indice]DIV tab2[indice];
Out.Int(tab3[indice], 5); 
 END;
END;
END DivTab;
 
PROCEDURE Trap ();
VAR
verif:BOOLEAN ;	
BEGIN (*Trap*)
In.Char(symb);  
CASE symb OF
"+": AddTab; verif:=TRUE|
"-": SubTab;verif:=TRUE|
"*": MulTab;verif:=TRUE|
"/": DivTab;verif:=TRUE|
ELSE
Out.String("cette opération n'est pas définie"); verif:=FALSE;
END;
END Trap;
 
BEGIN (* Exercice2 *)
In.Open; Out.Open; 
StdLog.Clear;
Trap();
END Exercice2;
Donc comme je vous l'ai dis son code fonctionne parfaitement. J'ai moi même essayé de faire l'exercice, mais malheureusement je n'arrive pas à comprendre pourquoi le mien est faux... Voilà mon code :

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
78
79
80
81
82
83
84
85
86
87
88
PROCEDURE Exercice2*;
VAR
tab1, tab2, tab3:TabEntier;
symb:CHAR;
indice:INTEGER;
 
PROCEDURE LectureTab ();
BEGIN (*LectureTab*)
FOR indice := 0 TO LEN (tab1)-1 DO
In.Int(tab1[indice]); 	
END;  
FOR indice := 0 TO LEN (tab2)-1  DO
In.Int(tab2[indice]); 
END;
END LectureTab;
 
PROCEDURE Affichage ();
BEGIN (*Affichage*)
Out.String("a1= ");
FOR indice := 0 TO LEN (tab1)-1 DO
Out.Int(tab1[indice], 5); 
END;
Out.Ln; 
Out.String("a2=");
FOR indice := 0 TO LEN (tab2)-1  DO
Out.Int(tab2[indice], 5); 
END;
Out.Ln; 
Out.String("a3= ");
END Affichage;
 
PROCEDURE AddTab;	(* a3:=a1 + a2 *)
BEGIN (*AddTab*)
FOR indice := 0 TO LEN (tab1)-1  DO
tab3[indice]:=tab1[indice]+tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END AddTab;
 
PROCEDURE SubTab;	(* a3:=a1 - a2 *)
BEGIN (*SubTab*)
FOR indice := 0 TO LEN (tab1)-1  DO
tab3[indice]:=tab1[indice]-tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END SubTab;
 
PROCEDURE MulTab;	(* a3:=a1 * a2 *)
BEGIN (*MulTab*)
FOR indice := 0 TO LEN (tab1)-1  DO
tab3[indice]:=tab1[indice]* tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END MulTab;
 
PROCEDURE DivTab;	(* a3:=a1 DIV a2 *)
BEGIN (*DivTab*)
FOR indice := 0 TO LEN (tab1)-1  DO
IF tab2[indice]=0 THEN
Out.Ln; 
Out.String("divison par zéro"); 
ELSE
tab3[indice]:=tab1[indice]DIV tab2[indice];
Out.Int(tab3[indice], 5); 
END;
END;
END DivTab;
 
PROCEDURE Trap ();
BEGIN (*Trap*)
In.Char(symb);  
CASE symb OF
"+": AddTab; |
"-": SubTab; |
"*": MulTab; |
"/": DivTab; |
ELSE
Out.String("cette opération n'est pas définie");
END;
END Trap;
 
 
BEGIN (* Exercice2 *)
In.Open; Out.Open; StdLog.Clear;
LectureTab();
Affichage();
Trap();
END Exercice2;
Donc si vous pouviez m'expliquer ou est ma faute sa serait bien gentil ^^ et désolé pour tout ce code ^^

Merci d'avance

[EDIT] Désolé pour l'indentation, j'ai essayé de la faire mais sa fonctionne pas