L'arborescence de fonctions

Soyez le premier à donner votre avis sur cette source.

Snippet vu 2 825 fois - Téléchargée 34 fois

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

Ajouter un commentaire Commentaires
Messages postés
1138
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
25 janvier 2009
4
Le but etait de l'afficher a l'ecran avec un decaclage pour bien voir quelle fonction etait dans la quelle. Car vu les definition des fonctions il est assez difficile de voir qui est appellee qui.

Mais j'avoue que cette source n'a pas de grande utilite!
De plus je la trouve interresante pour les '#define'

cordialement JCDjcd
Messages postés
91
Date d'inscription
lundi 19 mai 2003
Statut
Membre
Dernière intervention
31 août 2004

excuse moi mais je comprends pas le but de ta source!?!
main est la fonction principale et si tu fait:
int main(int argc,char **argv)
{
printf("texte");
}
t'appelle bien une fonction dans une autre ce qui crée une arborescence alors explique pourquoi ta source est aussi compliquée???
il est surement impossible de faire un code sans fonction dans d'autre fonction (fonction standart j'entend: printf, getch) il serait trop long et illisible de plus on le fait sans s'en rendre compte.

amicalement JM

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.