Skip to content

Commit 448803d

Browse files
committed
[NEW] Exercice 40
1 parent 9fb7ebc commit 448803d

File tree

3 files changed

+345
-4
lines changed

3 files changed

+345
-4
lines changed

Exercice_39/exercice39.pseudoc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,8 @@ ALGORITHME main
3030
VARIABLE
3131
msg : CHAINE DE CARACTERE
3232
DÉBUT
33-
FAIRE
34-
AFFICHER "Saisir le message : "
35-
SAISIR msg
33+
AFFICHER "Saisir le message : "
34+
SAISIR msg
3635

37-
AFFICHER convertirMessageEnMorse(msg)
36+
AFFICHER convertirMessageEnMorse(msg)
3837
FIN

Exercice_40/exercice40.js

Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
/****************************************** EXERCICE 40 *******************************************/
2+
3+
var readline = require("readline-sync");
4+
5+
afficherMenu();
6+
7+
const MSGCODE = "-... --- -. -. . ..-. --- .-. -- .- - .. --- -.";
8+
var choix;
9+
10+
do {
11+
choix = readline.questionInt("Quel est votre choix ? : ");
12+
13+
switch (choix) {
14+
case 1:
15+
var msg = readline.question("Saisir le message : ");
16+
console.log(convertirMessageEnMorse(msg));
17+
break;
18+
case 2:
19+
console.log(decodeMessageMorse(MSGCODE));
20+
break;
21+
case 0:
22+
console.log("À +");
23+
break;
24+
default:
25+
console.log("Invalide, recommencez !");
26+
break;
27+
}
28+
} while (choix != 0);
29+
30+
function afficherMenu() {
31+
var msg = "******************************\n";
32+
msg += "1/ Encoder un message\n";
33+
msg += "2/ Décoder un message\n";
34+
msg += "0/ Quitter\n";
35+
msg += "******************************";
36+
console.log(msg);
37+
}
38+
39+
function convertirMessageEnMorse(msg) {
40+
var msgEnMorse = "";
41+
for (let cpt = 0; cpt < msg.length; cpt++) {
42+
msgEnMorse = msgEnMorse + lettreVersMorse(msg[cpt]) + " ";
43+
}
44+
return msgEnMorse;
45+
}
46+
47+
function decodeMessageMorse(msg) {
48+
var msgDecode = "";
49+
var lettreMorse = "";
50+
51+
for (let cpt = 0; cpt < msg.length; cpt++) {
52+
if (msg[cpt] != " ") {
53+
lettreMorse = lettreMorse + msg[cpt];
54+
}
55+
if (msg[cpt] === " " && msg[cpt - 1] === " ") {
56+
msgDecode = msgDecode + " ";
57+
}
58+
if (msg[cpt] === " " || cpt === msg.length - 1) {
59+
msgDecode = msgDecode + morseVersLettre(lettreMorse);
60+
lettreMorse = "";
61+
}
62+
}
63+
return msgDecode;
64+
}
65+
66+
function lettreVersMorse(lettre) {
67+
switch (lettre.toLocaleLowerCase()) {
68+
case "a":
69+
return ".-";
70+
break;
71+
case "b":
72+
return "-...";
73+
break;
74+
case "c":
75+
return "-.-.";
76+
break;
77+
case "d":
78+
return "-..";
79+
break;
80+
case "e":
81+
return ".";
82+
break;
83+
case "f":
84+
return "..-.";
85+
break;
86+
case "g":
87+
return "--.";
88+
break;
89+
case "h":
90+
return "....";
91+
break;
92+
case "i":
93+
return "..";
94+
break;
95+
case "j":
96+
return ".---";
97+
break;
98+
case "k":
99+
return "-.-";
100+
break;
101+
case "l":
102+
return ".-..";
103+
break;
104+
case "m":
105+
return "--";
106+
break;
107+
case "n":
108+
return "-.";
109+
break;
110+
case "o":
111+
return "---";
112+
break;
113+
case "p":
114+
return ".--.";
115+
break;
116+
case "q":
117+
return "--.-";
118+
break;
119+
case "r":
120+
return ".-.";
121+
break;
122+
case "s":
123+
return "...";
124+
break;
125+
case "t":
126+
return "-";
127+
break;
128+
case "u":
129+
return "..-";
130+
break;
131+
case "v":
132+
return "...-";
133+
break;
134+
case "w":
135+
return ".--";
136+
break;
137+
case "x":
138+
return "-..-";
139+
break;
140+
case "y":
141+
return "-.--";
142+
break;
143+
case "z":
144+
return "--..";
145+
break;
146+
case " ":
147+
return " ";
148+
break;
149+
default:
150+
return "";
151+
break;
152+
}
153+
}
154+
155+
function morseVersLettre(symbole) {
156+
switch (symbole) {
157+
case ".-":
158+
return "a";
159+
break;
160+
case "-...":
161+
return "b";
162+
break;
163+
case "-.-.":
164+
return "c";
165+
break;
166+
case "-..":
167+
return "d";
168+
break;
169+
case ".":
170+
return "e";
171+
break;
172+
case "..-.":
173+
return "f";
174+
break;
175+
case "--.":
176+
return "g";
177+
break;
178+
case "....":
179+
return "h";
180+
break;
181+
case "..":
182+
return "i";
183+
break;
184+
case ".---":
185+
return "j";
186+
break;
187+
case "-.-":
188+
return "k";
189+
break;
190+
case ".-..":
191+
return "l";
192+
break;
193+
case "--":
194+
return "m";
195+
break;
196+
case "-.":
197+
return "n";
198+
break;
199+
case "---":
200+
return "o";
201+
break;
202+
case ".--.":
203+
return "p";
204+
break;
205+
case "--.-":
206+
return "q";
207+
break;
208+
case ".-.":
209+
return "r";
210+
break;
211+
case "...":
212+
return "s";
213+
break;
214+
case "-":
215+
return "t";
216+
break;
217+
case "..-":
218+
return "u";
219+
break;
220+
case "...-":
221+
return "v";
222+
break;
223+
case ".--":
224+
return "w";
225+
break;
226+
case "-..-":
227+
return "x";
228+
break;
229+
case "-.--":
230+
return "y";
231+
break;
232+
case "--..":
233+
return "z";
234+
break;
235+
case " ":
236+
return " ";
237+
break;
238+
default:
239+
return "";
240+
break;
241+
}
242+
}

Exercice_40/exercice40.pseudoc

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
/****************************************** EXERCICE 40 *******************************************/
2+
3+
FONCTION afficherMenu()
4+
VARIABLE
5+
msg : CHAINE DE CARACTERE
6+
DÉBUT
7+
msg → "******************************\n"
8+
msg → msg + "1/ Encoder un message\n"
9+
msg → msg + "2/ Décoder un message\n"
10+
msg → msg + "0/ Quitter\n"
11+
msg → msg + "******************************"
12+
AFFICHER msg
13+
FIN
14+
15+
FONCTION lettreVersMorse(lettre)
16+
DÉBUT
17+
SELON enMinuscules(lettre)
18+
CAS "a" : RETOURNER ".-"
19+
CAS "b" : RETOURNER "-..."
20+
CAS "c" : RETOURNER "-.-."
21+
// ...
22+
CAS "z" : RETOURNER "--.."
23+
CAS " " : RETOURNER " "
24+
AUTREMENT : RETOURNER ""
25+
FINSELON
26+
FIN
27+
28+
FONCTION convertirMessageEnMorse(msg)
29+
VARIABLE
30+
msgEnMorse : CHAINE DE CARACTERE
31+
DÉBUT
32+
msgEnMorse → ""
33+
34+
POUR cpt ALLANT de 0 À taille(msg)-1 PAR PAS DE 1 FAIRE
35+
msgEnMorse → msgEnMorse + lettreVersMorse(msg[cpt]) + " "
36+
FINPOUR
37+
38+
RETOURNER msgEnMorse
39+
FIN
40+
41+
FONCTION morseVersLettre(symbole)
42+
DÉBUT
43+
SELON symbole
44+
CAS ".-" : RETOURNER "a"
45+
CAS "-..." : RETOURNER "b"
46+
CAS "-.-." : RETOURNER "c"
47+
// ...
48+
CAS "--.." : RETOURNER "z"
49+
CAS " " : RETOURNER " "
50+
AUTREMENT : RETOURNER ""
51+
FINSELON
52+
FIN
53+
54+
FONCTION decodeMessageMorse(msg)
55+
VARIABLES
56+
msgDecode, lettreMorse : CHAINE DE CARACTERE
57+
DÉBUT
58+
msgDecode → ""
59+
lettreMorse → ""
60+
61+
POUR cpt ALLANT de 0 À taille(msg)-1 PAR PAS DE 1 FAIRE
62+
SI (msg[cpt] != " ") ALORS
63+
lettreMorse → lettreMorse + msg[cpt]
64+
FINSI
65+
66+
SI (msg[cpt] = " " ET msg[cpt-1] = " ") ALORS
67+
msgDecode → msgDecode + " "
68+
FINSI
69+
70+
71+
SI (msg[cpt] = " " OU cpt = taille(msg)-1) ALORS
72+
msgDecode → msgDecode + morseVersLettre(lettreMorse)
73+
lettreMorse → ""
74+
FINSI
75+
FINPOUR
76+
77+
RETOURNER msgDecode
78+
FIN
79+
80+
ALGORITHME main
81+
VARIABLE
82+
choix : ENTIER
83+
msg : CHAINE DE CARACTERE
84+
CONSTANTE CHAINE DE CARACTERE MSGCODE → "-... --- -. -. . / ..-. --- .-. -- .- - .. --- -."
85+
DÉBUT
86+
FAIRE
87+
afficherMenu()
88+
AFFICHER "Quel est votre choix ? : "
89+
SAISIR choix
90+
91+
SELON choix
92+
CAS 1 : AFFICHER "Saisir le message : "
93+
SAISIR msg
94+
AFFICHER convertirMessageEnMorse(msg)
95+
CAS 2 : AFFICHER decodeMessageMorse(MSGCODE)
96+
CAS 0 : AFFICHER "À +"
97+
AUTREMENT : AFFICHER "Invalide, recommencez !"
98+
FINSELON
99+
TANT QUE (choix != 0)
100+
FIN

0 commit comments

Comments
 (0)