Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1656 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
Profil sup​primé
Posté le 08-10-2010 à 14:54:42  answer
 

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 ?

n°2027863
Profil sup​primé
Posté le 08-10-2010 à 15:02:13  answer
 

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;

n°2169352
Dragon vel​oce
Posté le 29-12-2012 à 22:22:08  profilanswer
 

Un peu plus simplifié:
 
   FUNCTION Compte (S : String; C : Character) RETURN Integer IS
   BEGIN
     IF (S'length = 0) THEN
        RETURN 0;
     ELSIF ( S(s'first) = C) THEN
       return 1 + (Compte(S(s'first+1..s'last),C));
     ELSE
       return Compte(S(s'first+1..s'last),C);
    END IF;
   END Compte;


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é


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR