[TP] Error stack over flow 202
Bonjour a tous,
Voila en cours nous realisons un projet Morse en turbo pascal je vous joins le code deja realisé !
Code:
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 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229
| program traduc_morse;
uses crt;
var
tabcode : array[1..38] of string;
choixmenu : char;
resultat : string ;
const
tabcara : array[1..38] of char =
'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
{-----------------------------------------------------------------------}
Procedure son(source : string);
var i : integer;
begin
For i := 1 to Length(source) do
Begin
if (source[i] = '.') then
begin
Sound(1000);
Delay(150);
NoSound;
delay(100);
end
else if (source[i] = '-') then
begin
sound(1000);
delay(600);
Nosound;
delay(100);
end
else
begin
NoSound;
end ;
end ;
end ;
{-----------------------------------------------------------------------}
Procedure traductionmorse;
var
choixson : char;
i : integer;
Begin
Writeln('Voulez vous traduire votre morse en son? (O/N)');
write('Votre choix : ');
Readln(choixson);
Repeat
begin
Case choixson of
'O' : son(resultat);
'N' : Writeln('Appuyez sur une touche pour arreter le programme');
else
Begin
writeln('ERREUR : <---!! Veuillez saisir un choix entre O et N !!--->');
write('Votre choix : ');readln(choixson);
End;
end;
end;
until ((choixson='O') OR (choixson='N'));
if ((choixson='O') or (choixson='o')) then
son(resultat)
else
writeln('Fin du programme');
end;
{-----------------------------------------------------------------------}
Procedure traduction;
var saisietexte : string[127];
reponse: array[1..38] of string;
i : integer;
j : integer;
Begin
clrscr;
writeln('+----------------------------------------------------+');
writeln('| Nous allons maintenant traduire votre message |');
Writeln('| |');
Writeln('| Consignes : |');
Writeln('| 1. Votre texte doit faire moins de 127caracteres |');
Writeln('| 2. Les caracteres : &
!?/ sont remplacs |');
Writeln('| 3. Les miniscules seront convertis en MAJUSCULES |');
Writeln('+----------------------------------------------------+');
Writeln(' ');
Write('Saisir votre texte : ');
readln(saisietexte);
For j := 1 to Length(saisietexte) do
Begin
saisietexte[j] := UpCase(saisietexte[j]);
end;
If (length(saisietexte)<=127) then
Begin
Writeln('La traduction de votre texte en morse est :');
resultat := '' ;
For i:=1 to length(saisietexte) do
Begin
Case saisietexte[i] of
'A' : resultat := resultat + tabcode[1] ;
'B' : resultat := resultat + tabcode[2] ;
'C' : resultat := resultat + tabcode[3] ;
'D' : resultat := resultat + tabcode[4];
'E' : resultat := resultat + tabcode[5];
'F' : resultat := resultat + tabcode[6];
'G' : resultat := resultat + tabcode[7];
'H' : resultat := resultat + tabcode[8];
'I' : resultat := resultat + tabcode[9];
'J' : resultat := resultat + tabcode[10];
'K' : resultat := resultat + tabcode[11];
'L' : resultat := resultat + tabcode[12];
'M' : resultat := resultat + tabcode[13];
'N' : resultat := resultat + tabcode[14];
'O' : resultat := resultat + tabcode[15];
'P' : resultat := resultat + tabcode[16];
'Q' : resultat := resultat + tabcode[17];
'R' : resultat := resultat + tabcode[18];
'S' : resultat := resultat + tabcode[19];
'T' : resultat := resultat + tabcode[20];
'U' : resultat := resultat + tabcode[21];
'V' : resultat := resultat + tabcode[22];
'W' : resultat := resultat + tabcode[23];
'X' : resultat := resultat + tabcode[24];
'Y' : resultat := resultat + tabcode[25];
'Z' : resultat := resultat + tabcode[26];
'.' : resultat := resultat + tabcode[27];
'0' : resultat := resultat + tabcode[28];
'1' : resultat := resultat + tabcode[29];
'2' : resultat := resultat + tabcode[30];
'3' : resultat := resultat + tabcode[31];
'4' : resultat := resultat + tabcode[32];
'5' : resultat := resultat + tabcode[33];
'6' : resultat := resultat + tabcode[34];
'7' : resultat := resultat + tabcode[35];
'8' : resultat := resultat + tabcode[36];
'9' : resultat := resultat + tabcode[37];
' ' : resultat := resultat + tabcode[38];
else
write('????? ');
end;
end;
writeln(resultat) ;
end
else
Begin
Writeln('Votre texte fait plus de 127 caractres.');
traduction;
end;
writeln(' ');
writeln(' ');
traductionmorse;
End;
{-----------------------------------------------------------------------}
Procedure menu;
Begin
Writeln('+--------------------------------------+');
Writeln('| LE MORSE |');
Writeln('| |');
Writeln('| 1. Traduire en morse |');
Writeln('| 2. Retour |');
Writeln('| 3. Quitter |');
Writeln('+--------------------------------------+');
End;
{-----------------------------------------------------------------------}
procedure verificationchoix;
Begin
Write('Saisir votre choix : ');readln(choixmenu);
Case choixmenu of
'1' : traduction;
'2' : write('Partie non traite');
'3' : exit;
Else
Repeat
begin
clrscr;
writeln(' ');
writeln('ERREUR : <---!! Veuillez saisir un choix entre 1 et 3 !!--->');
writeln(' ');
menu;
verificationchoix;
end;
until ((choixmenu='1') OR (choixmenu='2') OR( choixmenu='3'));
end;
end;
{-----------------------------------------------------------------------}
{DEBUT DE L'ALGO}
BEGIN
clrscr;
{Saisie ligne par ligne du tableau de conversion}
tabcode[1] := '.- '; tabcode[9] := '.. '; tabcode[15] := '--- ';
tabcode[2] := '-... '; tabcode[10] := '.--- '; tabcode[16] := '.--. ';
tabcode[3] := '-.-. '; tabcode[11] := '-.- '; tabcode[17] := '--.- ';
tabcode[4] := '-.. '; tabcode[12] := '.-.. '; tabcode[18] := '.-. ';
tabcode[5] := '. '; tabcode[13] := '-- '; tabcode[19] := '... ';
tabcode[6] := '..-. '; tabcode[14] := '-. '; tabcode[20] := '- ';
tabcode[7] := '--. '; tabcode[21] := '..- '; tabcode[23] := '.-- ';
tabcode[8] := '.... '; tabcode[22] := '...- '; tabcode[24] := '-..- ';
tabcode[25] := '-.-- '; tabcode[29] := '.---- '; tabcode[33] := '..... ';
tabcode[26] := '--.. '; tabcode[30] := '..--- '; tabcode[34] := '-.... ';
tabcode[27] := '.-.-.- '; tabcode[31] := '...-- '; tabcode[35] := '--... ';
tabcode[28] := '----- '; tabcode[32] := '....- '; tabcode[36] := '---.. ';
tabcode[37] := '----. ';
tabcode[38] := ' ';
menu;
verificationchoix;
repeat until keypressed;
end. |
Sur turbo pascal il fait une erreur fatal stack over flow 202 quand je fais choix 1 pour commencer la traduction .
Alors que sur Free pascal il passe niquel
Je debute sur le turbo pascal !
Merci de votre aide future !