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)
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
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 si vous pouviez m'expliquer ou est ma faute sa serait bien gentil ^^ et désolé pour tout ce 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;
Merci d'avance
[EDIT] Désolé pour l'indentation, j'ai essayé de la faire mais sa fonctionne pas
Partager