L'arborescence de fonctions

Contenu du snippet

Il a y des fonctions qui en appelle d'autres etc ...
Visualisation des fonctions les une par rapport aux autres !
(gere meme les fonctions reccursives !)

Source / Exemple :


#include <stdio.h>
#include <conio.h>

// une globale ( = 0 au debut);
static iIndendation = -1;
// affiche des 'n' blancs
void AfficherBlancs(int n)
{
while(n--)
  printf(" ");
}
// aller au fils :
#define allerPremierFils(func) \
  _allerPremierFils();         \
  printf("* %s",#func);
void _allerPremierFils()
{
printf("\n");
AfficherBlancs(iIndendation+=2);
}
// aller au frere
#define allerFrere(func) \
  _allerFrere();         \
  printf("* %s",#func);
void _allerFrere()
{
printf("\n");
AfficherBlancs(iIndendation);
}
// aller au parent
#define allerParent() \
  _allerParent(); 
void _allerParent()
{
iIndendation -= 2;
}
// =============  FONCTIONS  =============
// fonction factorielle :
// ICI LA RECCURSIVITE :
int fact(int n)
{
int res;
if(n <= 0)
  {
  res = 1;
  }
else
  {
  allerPremierFils(fact);
  res = n * fact(n-1);
  allerParent();
  }
return res;
}
// autres fonctions :
void f11()
{
}
void f10()
{
}
void f9()
{
}
void f8()
{
allerPremierFils(f9);
f9();
allerFrere(f10);
f10();
allerFrere(f11);
f11();
allerParent();
}
void f7()
{
}
void f6()
{
allerPremierFils(f7);
f7();
allerParent();
}
void f5()
{
allerPremierFils(f6);
f6();
allerFrere(f8);
f8();
allerParent();
}
void f4()
{
}
void f3()
{
allerPremierFils(f4);
f4();
allerParent();
}
void f2()
{
allerPremierFils(fact);
fact(5);
allerParent();
}
void f1()
{
allerPremierFils(f2);
f2();
allerFrere(f3);
f3();
allerParent();
}
void f()
{
allerPremierFils(f1);
f1();
allerFrere(f5);
f5();
allerParent();
}
// =============  MAIN  =============
int main(int argc,char **argv)
{
f();
getch();
return 0;
}

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.