Bonjour voici ma question
Ecrire en récursif la fonction compte (S : string, C : character) return integer, cette fonction retourne le nombre de fois où le caractere C apparait dans la chaine S.
Je l'ai fait mais quand je le teste ça ne fonctionne pas et je comprends pas pourquoi
Voilà ce que j'ai fait
WITH Ada.Text_IO, Ada.Integer_Text_IO;
USE Ada.Text_IO, Ada.Integer_Text_IO;
PROCEDURE Exo3a IS
-----------------------sous procedures et functions-------------------
FUNCTION Compte (S : String; C : Character) RETURN Integer IS
Nb : Integer := 0;
BEGIN
IF (S'length = 0) THEN
RETURN nb;
ELSIF ( S(s'first) = C) THEN
nb := nb+1;
RETURN (Compte(S(s'first+1..s'last),C));
ELSE
RETURN (Compte(S(s'first+1..s'last),C));
END IF;
END Compte;
--------------------------------------------------------------------------------
PROCEDURE Remplir (S : OUT String) IS
BEGIN
Put("entrer un mot : " );
Get(S);
END Remplir;
-----------------------------------------------------------------------------
PROCEDURE Remplir2 (C : OUT character) IS
BEGIN
Put("entrer un character : " );
Get(C);
end remplir2;
-----------------------------------------------------------------------------
S : String (1..10) := (OTHERS =>' ');
c : character;
--------------------------------------------------------------------------------
BEGIN
Remplir(S);
Remplir2(C);
Put(Compte(S,C));
end exo3a;
Message édité par mirlamber le 08-10-2010 à 00:25:26