cs_tinab
Messages postés4Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention14 décembre 2006
-
27 mars 2005 à 18:03
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDerniè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:
Cle secu
Convertisseur numero de secu - Meilleures réponses
WhiteHippo
Messages postés1154Date d'inscriptionsamedi 14 août 2004StatutMembreDernière intervention 5 avril 20123 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.
cs_tinab
Messages postés4Date d'inscriptionvendredi 25 mars 2005StatutMembreDernière intervention14 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