Clé de décodage

Résolu
cs_tinab
Messages postés
4
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
14 décembre 2006
- 27 mars 2005 à 18:03
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
- 27 mars 2005 à 20:32
Bonjour,
Quelqu'un peut-il m'aider car
je n'arrive pas à écrire la fonction ou la procédure me permettant de décoder une phrase. La clé est la suivante : le nombre d'espace consécutifs diminué d'une unité indique la position du caractère à prendre en compte.
Par exemple : 'merci^^d'avance^^^pour^tout' renvoie le do.
Tina
A voir également:

3 réponses

WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
27 mars 2005 à 20:17
Bonsoir

Et comment agit le décodage lorsqu'il y a plus d'espaces que de lettres dans le mot suivant ??

Cordialement.
3
WhiteHippo
Messages postés
1154
Date d'inscription
samedi 14 août 2004
Statut
Membre
Dernière intervention
5 avril 2012
2
27 mars 2005 à 20:32
Une solution simpliste serait :

function decodage ( s : string ) : string ;
var
i, CompteurLettres, CompteurEspaces : integer ;
begin
Result := '' ;
if ( s='' ) then Exit ;


CompteurEspaces := 0 ;
CompteurLettres := 0 ;


for i := 1 to length(s) do
begin
if ( s[i]=' ' ) then
begin
if ( CompteurLettres<>0 ) then
begin
CompteurLettres := 0 ;
CompteurEspaces := 0 ;
end ;
Inc( CompteurEspaces ) ;
end else
begin
inc ( CompteurLettres ) ;
if ( CompteurLettres = CompteurEspaces - 1 ) then
begin
Result := Result + s[i] ;
CompteurEspaces := 0 ;
end ;
end ;
end ;
end ;

Attention !! Cette version ne gère pas les débordements, c'est à dire plus d'espaces que de lettres présentes dans le mot suivant. Si ce cas se produit on réinitialise les compteurs.

Cordialement.
3
cs_tinab
Messages postés
4
Date d'inscription
vendredi 25 mars 2005
Statut
Membre
Dernière intervention
14 décembre 2006

27 mars 2005 à 20:25
je dois pas tenir compte de ce cas car c'est juste un exercice que je dois faire en plus je peux pas utiliser la routine copy.
Un vrai casse tête.
Merci pour toute réponse.
Tina
0