Forum |  HardWare.fr | News | Articles | PC | Prix | S'identifier | S'inscrire | Aide Recherche
1973 connectés 

  FORUM HardWare.fr
  Programmation
  ADA

  récursivité

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

récursivité

n°2027746
mirlamber
Posté le 08-10-2010 à 00:17:36  profilanswer
 

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
mood
Publicité
Posté le 08-10-2010 à 00:17:36  profilanswer
 

n°2027862
jovalise
Par l'anneau de l'i.a.
Posté le 08-10-2010 à 14:54:42  profilanswer
 

Code :
  1. FUNCTION Compte (S : String; C : Character) RETURN Integer IS
  2.      Nb : Integer := 0;
  3.   BEGIN
  4.    
  5.      IF (S'length = 0) THEN
  6.         RETURN nb;
  7.      ELSIF ( S(s'first) = C) THEN
  8.         nb := nb+1;
  9.         Nb := Nb + (Compte(S(s'first+1..s'last),C));
  10.      ELSE
  11.         Nb := Nb + (Compte(S(s'first+1..s'last),C));
  12.      END IF;
  13.      return Nb;
  14.   END Compte;


Et comme ça ?


---------------
Là où l'Homme ne pourra aller, Ada ira. Nouveau: Le net de jovalise
n°2027863
jovalise
Par l'anneau de l'i.a.
Posté le 08-10-2010 à 15:02:13  profilanswer
 

Ou...
 
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;
         retunr Nb + (Compte(S(s'first+1..s'last),C));
      ELSE
         return Nb + (Compte(S(s'first+1..s'last),C));
      END IF;
   END Compte;


---------------
Là où l'Homme ne pourra aller, Ada ira. Nouveau: Le net de jovalise

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ADA

  récursivité

 

Sujets relatifs
Pour les pros du SQL (prb avec récursivité)Commentaires et réponses (récursivité?)
Probleme récursivité XSLTStack OverFlow et les joies de la récursivité
[autotools] Makefile.am et recursiviteRecursivité et XSLT
Jeu "Le compte est bon" avec récursivitéexpr. reg et recursivité
Java - Recursivité[XSLT]Récursivité
Plus de sujets relatifs à : récursivité


Hit-Parade
Copyright © 1997-2012 Hardware.fr SARL / Groupe LDLC / LesNumeriques.com / Version anglaise du site: BeHardware